Doris のデプロイ¶
注意
OpenSearch と Doris はどちらか一方を選択してください。
説明¶
コンポーネントの説明¶
- Doris Manager:Doris クラスターのデプロイ、アップグレード、設定変更などに使用します。
- Doris FE:主にユーザーリクエストの受付、クエリ解析の計画、メタデータの管理、ノード管理に関する作業を担当します。
- Doris BE:主にデータの保存、クエリ計画の実行を担当します。
- guance-insert:行プロトコル形式のデータを受信し、ローカルに蓄積(容量が小さいため通常は tmpfs を使用)し、Doris BE に一括書き込みします。
- guance-select:DQL クエリを SQL に変換し、ほとんどのクエリは Doris FE を、一部のクエリは Doris BE Thrift インターフェースを使用します。
- VictoriaMetrics:インデックスレベルの書き込み量メトリクスを保存し、サンプリングクエリなどの機能に補助的な情報を提供します。
サーバーの説明¶
通常は以下の3グループのマシンを使用します。小規模クラスターでは混在配置も可能です。サーバーOS は Ubuntu が推奨されます。
- doris-fe:CPU メモリ比 1:2、20GB 以上のデータディスク1台でメタデータを保存します。このうち最初の1台に Doris Manager をデプロイできます。
- doris-be:CPU メモリ比 1:8、ディスクスループットを最大化するようにディスク設定(個数)を調整します。
- guancedb-logs:CPU メモリ比 1:2、ホストまたはコンテナでデプロイ可能です。最初の1台には VictoriaMetrics をデプロイするためのデータディスクが必要で、Doris のメタデータメトリクスを保存するために使用します。
- CPU は AVX2 命令セットをサポートしている必要があります。
- 他のマシンにリソースを占有されないようにしてください(CPU steal が高くなりすぎないこと)。
ネットワークの説明¶
- Doris Manager は通常 doris-fe-01 サーバーにデプロイされ、そのマシンは全 Doris マシンと SSH 通信が可能で、8004 ポートの Web ページにアクセスできる必要があります。
- guancedb-logs マシンは、システムパッケージ管理ツール(APT)を使用して supervisor をインストールする必要があります。
- MySQL プロトコルで FE マシンの 9030 ポートにアクセスする必要があります。通常は Doris Manager がインストールされているマシンに mysql-client をインストールします。
- guancedb-logs マシンは、doris-fe マシンの 8030 および 9030 ポート、doris-be マシンの 8040 および 9060 ポート、guancedb-logs の最初のマシンの 8428 ポートにアクセスできる必要があります。
- 提供されるアカウントには、S3 ストレージバケットのすべての権限が必要です。
デプロイの説明¶
- S3 ストレージバケットは一度設定すると変更できません。変更が必要な場合は、データをすべて消去して Doris クラスターを再インストールする必要があります。
- Doris は ホスト にデプロイされます。ネットワークの有無にかかわらず、まずパッケージを指定された場所に配置する必要があります。
- 自社調達のディスクハードウェアで RAID を構成する場合、RAID 0 は使用できません。
| カテゴリ | 説明 |
|---|---|
| ホストにデプロイするコンポーネント | be + fe + manager + guancedb-logs |
| デプロイの前提条件 | 1. root パスワードを提供し、root で SSH パスワードなしログインが可能であること 2. CPU アーキテクチャが AVX2 命令セットをサポートしていること |
デプロイデフォルト設定情報¶
| カテゴリ | 説明 |
|---|---|
| ホストデプロイ | 下記の ホストデプロイの説明 を参照してください。 |
ホストデプロイの説明
guancedb-logs マシンが1台のみの場合、Guance サービスが使用するアドレスはホストIP:8480/8481 です。
guancedb-logs マシンが複数台ある場合:
a. ELB 機能を提供できる場合、ELB で複数台の guancedb-logs の 8480/8481 ポートをリッスンし、サービスが使用するアドレスは ELB IP:8480/8481 です。
b. ELB 機能を提供できない場合、業務クラスター内に service を作成し、サービスが使用するアドレスは:
書き込み:internal-doris-insert.middleware:8480
読み取り:internal-doris-select.middleware:8481
以下の yaml を参照して service を作成してください。
doris-service.yaml(クリックして開く)
---
apiVersion: v1
kind: Service
metadata:
name: internal-doris-insert
namespace: middleware
spec:
ports:
- protocol: TCP
port: 8480
targetPort: 8480
---
apiVersion: v1
kind: Endpoints
metadata:
# ここの name は Service の名前と一致させる必要があります
name: internal-doris-insert
namespace: middleware
subsets:
# guancedb-logs マシンの台数分記述します
- addresses:
- ip: 10.7.17.250
ports:
- port: 8480
- addresses:
- ip: 10.7.17.251
ports:
- port: 8480
---
apiVersion: v1
kind: Service
metadata:
name: internal-doris-select
namespace: middleware
spec:
ports:
- protocol: TCP
port: 8481
targetPort: 8481
---
apiVersion: v1
kind: Endpoints
metadata:
# ここの name は Service の名前と一致させる必要があります
name: internal-doris-select
namespace: middleware
subsets:
# guancedb-logs マシンの台数分記述します
- addresses:
- ip: 10.7.17.250
ports:
- port: 8481
- addresses:
- ip: 10.7.17.251
ports:
- port: 8481
Doris のデプロイ¶
事前準備¶
パッケージのダウンロード¶
ツールパッケージをインストールします。インストールパッケージは fe-01 マシンに配置します。
ダウンロードして解凍すると、SelectDB + manager インストールパッケージになります。インストールパッケージは fe-01 マシンに配置し、フォルダの場所は inventory/doris-manager.vars.yaml で設定したパスと同じにします。
ダウンロードして解凍すると、GuanceDB インストールパッケージになります。インストールパッケージはすべての guancedb-logs マシンに配置し、ファイルの場所は inventory/guancedb-logs-doris.vars.yaml で設定したパスと同じにします。
ダウンロードして解凍すると、victoria-metrics + vmutils インストールパッケージになります。インストールパッケージはすべての guancedb-logs マシンに配置し、ファイルの場所は inventory/guancedb-logs-doris.vars.yaml で設定したパスと同じにします。
マシン間のパスワードなしログイン設定¶
踏み台サーバー(通常は fe-01)で、現在のユーザーの ~/.ssh に公開鍵がすでに存在するか確認します。公開鍵が生成されていない場合は、以下のコマンドを実行して生成し、他のロールのマシンにリモート送信します。
デプロイチェックポイント
be、fe マシンの設定が同一仕様であることを確認します。
be、fe マシン間のネットワーク ping が 1ms を超えないことを確認します。
サーバーが提供するデータディスクがベアディスクであること(パーティション分割やフォーマットが行われていないこと)を確認します。
hosts ファイルの準備¶
inventory ディレクトリには以下の 5 つの hosts ファイルが必要です。
- doris-be.hosts.yaml
- doris-fe.hosts.yaml
- doris-manager.hosts.yaml
- guancedb-logs-doris.hosts.yaml
- guancedb-logs-doris-vm.hosts.yaml
各 host ファイルの形式は以下の通りです。
name の形式は xxx-doirs-fe-01 または xxx-doris-be-01 である必要があります。
clusters:
- name: xxx
hosts:
- name: xxx-doris-be-01
port: xxx
host: xxx
user: xxx
vars:
default_ipv4: xxx
- name: xxx-doris-be-02
port: xxx
host: xxx
user: xxx
vars:
default_ipv4: xxx
# name: クラスターを識別します。poc または prd を記入できます。
# hosts.name: サーバーのロールを識別します。xxx-doris-be-01 のように記入します。xxx は poc または prd にできます。
# hosts.port: SSH ポートです。通常は 22 です。
# hosts.host: SSH 接続先のマシンの IP です。
# hosts.user: SSH 接続先のマシンのユーザーです。通常は root です。
# vars.default_ipv4: be-01 の IP アドレスです。
説明
通常、manager は fe と同じマシンにデプロイされます。doris-manager.hosts.yaml の内容は doris-fe.hosts.yaml と同じです。doris-fe.hosts.yaml に複数の fe ホストが含まれている場合、doris-manager.hosts.yaml には fe-01 の1台のみを記述します。
guancedb-logs-doris-vm.hosts.yaml の内容は guancedb-logs-doris.hosts.yaml と同じです。guancedb-logs-doris.hosts.yaml に複数のホストが含まれている場合、guancedb-logs-doris-vm.hosts.yaml には1台のみを記述します。
変数の設定¶
inventory/doris-manager.vars.yaml ファイルを変更します。
clusters:
- name: xxx
vars:
# マシン上の Doris インストールパッケージのパスを記入します。例:/root/packages/xxx.tar.gz
doris_local_path:
# マシン上の Doris Manager インストールパッケージのパスを記入します。例:/root/packages/xxx.tar.gz
manager_local_path:
# コールドストレージを使用しない場合、以下の部分は記入不要です。
oss_endpoint:
oss_bucket:
# 記入は必須ではありません。
oss_region:
# クラウドベンダーのオブジェクトストレージを使用する場合、通常は記入不要です。オブジェクトストレージを自社構築し、エンドポイントが IP の場合、「path」を記入する必要があります。
addressing_style:
clusters:
- name: xxx
vars:
# レプリカ数設定。テスト環境では 1 に設定可能。本番環境では 2 以上を推奨します。
replication_factor: 2
# FE マシンのメモリ(GB)
fe_host_mem_gb:
# FE マシンの数
fe_num:
# BE マシンの数
be_num:
# BE マシンのコア数
be_host_core_num:
# BE データディスクの個数
be_data_disk_num:
# BE 単一データディスクのサイズ(GB)
be_data_disk_gb:
# BE cgroup cpu パス。以下の説明に従って v1 または v2 を確認し、対応するアドレスを記入します。
be_cgroup_cpu_path:
# fe 自身のログ保存期間
fe_log_retention: 3d
# FE および BE マシンの内部ネットワークセグメント
cidr:
- name: xxx
vars:
# バージョン番号は使用しないため、空にします。
version: ""
# マシン上のインストールパッケージがあるディレクトリを記入します。例:/root/packages
local_dir:
clusters:
- name: xxx
vars:
# OS の zyadmin ユーザーパスワード。セキュリティ要件を満たすため、強力なパスワードを推奨します。
os_zyadmin_password:
# OS の doris ユーザーパスワード。セキュリティ要件を満たすため、強力なパスワードを推奨します。
os_doris_password:
# root データベースユーザーパスワード。強力なパスワードを推奨します。
doris_root_password:
# user_read データベースユーザーパスワード。強力なパスワードを推奨します。
doris_user_read_password:
# オブジェクトストレージのアクセスキー。コールドストレージを使用しない場合は記入不要です。
oss_ak:
# オブジェクトストレージのシークレットキー。コールドストレージを使用しない場合は記入不要です。
oss_sk:
# 自己観測データの報告用。配列です。通常は1つだけ記入すればよく、記入は必須ではありません。
dataway_urls: []
# ホスト名を設定するかどうか。混在配置時は false に設定する必要があります。
set_hostname: false
Python 依存パッケージのインストール¶
Doris Manager のデプロイ¶
マシンを初期化します。完了後、ディスクのマウントを確認する必要があります。
python3 deployer.py -l clusrer_name -i 'inventory/doris-?e.*.yaml' -p playbooks/doris/initialize-machine.yaml
デプロイチェックポイント
サーバーのディスクマウントが正しいか確認します。
サーバーの swap が完全に無効化されているか確認します。
サーバーの vm.max_map_count パラメータが 2000000 に調整されているか確認します。
自己観測データを報告するために Datakit 設定を更新します。
python3 deployer.py -l cluster_name -i 'inventory/doris-?e.*.yaml' -p playbooks/doris/update-datakit.yaml
Doris Manager をダウンロードして起動します。
python3 deployer.py -l cluster_name -i 'inventory/doris-manager.*.yaml' -p playbooks/doris/initialize-manager.yaml
be ノードの cgroup を設定します。
サーバーが cgroup の v1 と v2 のどちらをサポートしているかを確認する必要があります。
# このパスが存在する場合、現在有効なのは cgroup v1 です。
ls /sys/fs/cgroup/cpu/
# このパスが存在する場合、現在有効なのは cgroup v2 です。
ls /sys/fs/cgroup/cgroup.controllers
# サービスファイルを作成します。
sudo vi /etc/systemd/system/doris-cgroup-v1.service
# ファイル内容
[Unit]
Description=Create Doris CGroup V1
After=remote-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '\
mkdir -p /sys/fs/cgroup/cpu/doris && \
mkdir -p /sys/fs/cgroup/memory/doris && \
chmod 770 /sys/fs/cgroup/cpu/doris && \
chmod 770 /sys/fs/cgroup/memory/doris && \
chown -R doris:doris /sys/fs/cgroup/cpu/doris && \
chown -R doris:doris /sys/fs/cgroup/memory/doris'
[Install]
WantedBy=multi-user.target
# systemd 設定を再読み込みします。
sudo systemctl daemon-reload
# 起動時にサービスを有効にします。
sudo systemctl enable doris-cgroup-v1.service
# サービスを起動します。
sudo systemctl start doris-cgroup-v1.service
# サービスの状態を確認します。
sudo systemctl status doris-cgroup-v1.service
# 確認します。
ls -l /sys/fs/cgroup/cpu/doris
# サービスファイルを作成します。
sudo vi /etc/systemd/system/doris-cgroup-v2.service
# ファイル内容
[Unit]
Description=Create Doris CGroup V2
After=remote-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '\
mkdir -p /sys/fs/cgroup/doris && \
chmod 770 /sys/fs/cgroup/doris && \
chown -R doris:doris /sys/fs/cgroup/doris && \
chmod a+w /sys/fs/cgroup/cgroup.procs'
[Install]
WantedBy=multi-user.target
# systemd 設定を再読み込みします。
sudo systemctl daemon-reload
# 起動時にサービスを有効にします。
sudo systemctl enable doris-cgroup-v2.service
# サービスを起動します。
sudo systemctl start doris-cgroup-v2.service
# サービスの状態を確認します。
sudo systemctl status doris-cgroup-v2.service
# 検証します。
ls -l /sys/fs/cgroup/doris
cat /sys/fs/cgroup/cgroup.subtree_control
Doris FE と BE のデプロイ¶
Doris クラスターの作成¶
アクセスアドレス:http://doris-fe-01:8004
Doris Manager 管理者アカウントの作成
サービス設定
- 監視アラートサービスを無効にします。
- Doris ローカルインストールパッケージのパス:/data1/doris/manager/downloads/doris
- Doris Manager ローカルインストールパッケージのパス:/data1/doris/manager/downloads/manager
クラスターの新規作成
- クラスター名:顧客略称_test/prd 例:guance_prd
- データベース root ユーザーパスワード:inventory/secrets.yaml の doris_root_password を記入します。
ノード設定
- ノードユーザー名:doris
- ノードパスワード:inventory/secrets.yaml の os_doris_password を記入します。
- FE インストールパス:/home/doris/
- FE メタデータ保存ディレクトリ:/data1/doris/meta
- BE インストールパス:/home/doris/
- BE データ保存ディレクトリ:データディスクごとに入力欄に記入します。/data1/doris/data、/data2/doris/data など。
Doris クラスターの設定¶
トークナイザー設定を変更します。パラメータはクラスター名に変更する必要があります。
python3 deployer.py -l cluster_name -i 'inventory/doris-be.*.yaml' -p playbooks/doris/update-be.yaml
python3 deployer.py -l cluster_name -i 'inventory/doris.vars.yaml' -p playbooks/doris/render-config.yaml
デプロイチェックポイント
設定ファイル内の storage_path が正しく設定されているか確認します。
設定ファイル内の priority_networks が正しく設定されているか確認します。
BE 設定の変更:Doris Manager クラスターページ右上の「…」ボタン -> 「パラメータ設定」 -> BE ノードをすべて選択 -> 右上の「設定を編集」 -> 生成したばかりの be.conf を貼り付け -> 「確認しました……」をチェック -> 「確定」
FE 設定の変更:Doris Manager クラスターページ右上の「…」ボタン -> 「パラメータ設定」 -> FE ノードをすべて選択 -> 右上の「設定を編集」 -> 生成したばかりの fe.conf を貼り付け -> 「確認しました……」をチェック -> 「確定」
データベース設定の変更
python3 deployer.py -l cluster_name -i 'inventory/doris-manager.*.yaml' -p playbooks/doris/exec-init-sql.yaml
この手順で S3 ストレージバケットが設定されます。以下の方法でファイルをストレージバケットにアップロードできるか確認できます。
fe マシンで root ユーザーに切り替え、クラスターにログインします。
以下の SQL を実行後、S3 バケット内の default_resource フォルダに result_ で始まるファイルが生成されているか確認します。ファイルが生成されていない場合は、権限を確認してください。use information_schema;
SELECT * FROM files
INTO OUTFILE "s3://bucket_name/default_resource/result_"
FORMAT AS ORC
PROPERTIES(
"s3.endpoint" = "https://xxx",
"s3.access_key"= "your-ak",
"s3.secret_key" = "your-sk"
);
デプロイチェックポイント
S3 ストレージが使用可能であり、設定後に変更できないことを確認します。
S3 エンドポイントアドレスは内部ネットワークアドレスである必要があります。
guance-insert、guance-select、VictoriaMetrics のデプロイ¶
マシンを初期化します。
python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris.*.yaml' -p playbooks/guancedb/initialize-machine.yaml
python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris-vm.*.yaml' -p playbooks/doris/init-victoria-metrics.yaml
python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris.*.yaml' -p playbooks/guancedb/update-config.yaml
クラスター状態の確認¶
VictoriaMetrics の状態を確認します。IP は guance-select をデプロイしたマシンのものです。
Doris コンポーネントを確認します。










