コンテンツにスキップ

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 マシンに配置します。

https://static.guance.com/guancedb/guancedb-doris-deploy-latest.tar.gz

ダウンロードして解凍すると、SelectDB + manager インストールパッケージになります。インストールパッケージは fe-01 マシンに配置し、フォルダの場所は inventory/doris-manager.vars.yaml で設定したパスと同じにします。

https://static.guance.com/guancedb/selectdb-latest.tar.gz

ダウンロードして解凍すると、GuanceDB インストールパッケージになります。インストールパッケージはすべての guancedb-logs マシンに配置し、ファイルの場所は inventory/guancedb-logs-doris.vars.yaml で設定したパスと同じにします。

https://static.guance.com/guancedb/guancedb-cluster-linux-amd64-latest.tar.gz

ダウンロードして解凍すると、victoria-metrics + vmutils インストールパッケージになります。インストールパッケージはすべての guancedb-logs マシンに配置し、ファイルの場所は inventory/guancedb-logs-doris.vars.yaml で設定したパスと同じにします。

https://static.guance.com/guancedb/vmutils-latest.tar.gz

マシン間のパスワードなしログイン設定

踏み台サーバー(通常は fe-01)で、現在のユーザーの ~/.ssh に公開鍵がすでに存在するか確認します。公開鍵が生成されていない場合は、以下のコマンドを実行して生成し、他のロールのマシンにリモート送信します。

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.xxx.xxx

デプロイチェックポイント

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:
inventory/doris.vars.yaml ファイルを変更します。
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: 
inventory/guancedb-logs-doris.vars.yaml ファイルを変更します。
  - name: xxx
    vars:
      # バージョン番号は使用しないため、空にします。
      version: ""
      # マシン上のインストールパッケージがあるディレクトリを記入します。例:/root/packages
      local_dir:
inventory/secrets.yaml ファイルを変更します。
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 依存パッケージのインストール

pip3 install -r requirements.txt

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

Doris 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
doris-conf ディレクトリで Doris 設定をレンダリングします。doris-conf フォルダに cluster_name-be.conf と cluster_name-fe.conf が生成されているか確認します。
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 ユーザーに切り替え、クラスターにログインします。

mysql -uroot -h127.0.0.1 -P 9030
以下の 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 
VictoriaMetrics をデプロイします。
 python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris-vm.*.yaml' -p playbooks/doris/init-victoria-metrics.yaml
guance-insert と guance-select をデプロイします。
python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris.*.yaml' -p playbooks/guancedb/update-config.yaml

クラスター状態の確認

VictoriaMetrics の状態を確認します。IP は guance-select をデプロイしたマシンのものです。

guancedb-logs-doris-api-test -ip xxx -ip yyy -ip zzz
Doris コンポーネントを確認します。
# コンポーネントを確認します。
supervisorctl

# ログを確認します。
/var/log/supervisor/guance-select-stderr.log 

フィードバック

このページは役に立ちましたか?