メインコンテンツまでスキップ

Deploy StarRocks manually

StarRocksの手動デプロイ

このトピックでは、共有ノッシングStarRocks(BEがストレージと計算を担当する)を手動でデプロイする方法について説明します。インストールの他の方法については、デプロイの概要を参照してください。

共有データのStarRocksクラスタ(ストレージと計算が分離されたもの)をデプロイする場合は、共有データのStarRocksのデプロイと使用を参照してください。

ステップ1: リーダーFEノードの起動

以下の手順は、FEインスタンスで実行します。

  1. メタデータの保存に専用のディレクトリを作成します。メタデータをFEのデプロイファイルとは別のディレクトリに保存することをお勧めします。このディレクトリが存在し、書き込みアクセス権があることを確認してください。

    # <meta_dir>を作成するメタデータディレクトリに置き換えます。
    mkdir -p <meta_dir>
  2. StarRocksのFEデプロイファイルを保存したディレクトリに移動し、既に準備しているFE構成ファイル fe/conf/fe.conf を変更します。a. 構成項目 meta_dir でメタデータディレクトリを指定します。

    # <meta_dir>を作成済みのメタデータディレクトリに置き換えます。
    meta_dir = <meta_dir>

    b. 環境設定チェックリスト で言及されているいずれかのFEポートが使用中である場合は、有効な代替ポートをFE構成ファイルに割り当てる必要があります。

    http_port = aaaa        # デフォルト: 8030
    rpc_port = bbbb # デフォルト: 9020
    query_port = cccc # デフォルト: 9030
    edit_log_port = dddd # デフォルト: 9010

    注意

    クラスタに複数のFEノードをデプロイする場合は、各FEノードに対して同じhttp_portを割り当てる必要があります。

    c. クラスタでIPアドレスアクセスを有効にする場合は、構成ファイルに priority_networks 設定項目を追加し、専用のIPアドレス(CIDR形式)をFEノードに割り当てます。クラスタでFQDNアクセスを有効にする場合は、この構成項目を無視できます。

    priority_networks = x.x.x.x/x

    注意

    インスタンスが所持するIPアドレスを表示するには、ターミナルで ifconfig を実行してください。

    d. インスタンスに複数のJDKがインストールされており、環境変数 JAVA_HOME で指定されているJDKと異なる特定のJDKを使用したい場合は、構成ファイルに JAVA_HOME 設定項目を追加し、選択したJDKがインストールされているパスを指定する必要があります。

    # <path_to_JDK>を選択したJDKがインストールされているパスに置き換えます。
    JAVA_HOME = <path_to_JDK>

    f. 高度な設定項目の詳細については、パラメータの設定 - FE設定項目を参照してください。

  3. FEノードを起動します。

    • クラスタでIPアドレスアクセスを有効にする場合は、次のコマンドを実行してFEノードを起動します:

      ./fe/bin/start_fe.sh --daemon
    • クラスタでFQDNアクセスを有効にする場合は、次のコマンドを実行してFEノードを起動します:

      ./fe/bin/start_fe.sh --host_type FQDN --daemon

      最初の起動時に --host_type パラメータを1度だけ指定する必要があることに注意してください。

      注意

      FQDNアクセスを有効にした状態でFEノードを起動する前に、/etc/hosts のすべてのインスタンスにホスト名が割り当てられていることを確認してください。詳細については、環境設定チェックリスト - ホスト名を参照してください。

  4. FEノードが正常に起動したかどうかを確認するために、FEログを確認します。

    cat fe/log/fe.log | grep thrift

    "2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020." のようなログのレコードは、FEノードが正常に起動していることを示しています。

ステップ2: BEサービスの開始

以下の手順は、BEインスタンスで実行します。

  1. データの保存に専用のディレクトリを作成します。BEのデプロイディレクトリとは別のディレクトリにデータを保存することを推奨します。このディレクトリが存在し、書き込みアクセス権があることを確認してください。

    # <storage_root_path>を作成するデータ保存ディレクトリに置き換えます。
    mkdir -p <storage_root_path>
  2. StarRocksのBEデプロイファイルを保存したディレクトリに移動し、既に準備しているBE構成ファイル be/conf/be.conf を変更します。a. 構成項目 storage_root_path でデータディレクトリを指定します。

    # <storage_root_path>を作成済みのデータディレクトリに置き換えます。
    storage_root_path = <storage_root_path>

    b. 環境設定チェックリスト で言及されているいずれかのBEポートが使用中である場合は、有効な代替ポートをBE構成ファイルに割り当てる必要があります。

    be_port = vvvv                   # デフォルト: 9060
    be_http_port = xxxx # デフォルト: 8040
    heartbeat_service_port = yyyy # デフォルト: 9050
    brpc_port = zzzz # デフォルト: 8060

    c. クラスタでIPアドレスアクセスを有効にする場合は、構成ファイルに priority_networks 設定項目を追加し、専用のIPアドレス(CIDR形式)をBEノードに割り当てます。クラスタでFQDNアクセスを有効にする場合は、この構成項目を無視できます。

    priority_networks = x.x.x.x/x

    注意

    インスタンスが所持するIPアドレスを表示するには、ターミナルで ifconfig を実行してください。

    d. インスタンスに複数のJDKがインストールされており、環境変数 JAVA_HOME で指定されているJDKと異なる特定のJDKを使用したい場合は、構成ファイルに JAVA_HOME 設定項目を追加し、選択したJDKがインストールされているパスを指定する必要があります。

    # <path_to_JDK>を選択したJDKがインストールされているパスに置き換えます。
    JAVA_HOME = <path_to_JDK>

    高度な設定項目の詳細については、パラメータの設定 - BE設定項目を参照してください。

  3. BEノードを起動します。

    ./be/bin/start_be.sh --daemon

    注意

    • FQDNアクセスを有効にした状態でBEノードを起動する前に、/etc/hosts のすべてのインスタンスにホスト名が割り当てられていることを確認してください。詳細については、環境設定チェックリスト - ホスト名を参照してください。
    • BEノードを起動する際には、--host_type パラメータを指定する必要はありません。
  4. BEノードが正常に起動したかどうかを確認するために、BEログを確認します。

    cat be/log/be.INFO | grep heartbeat

    "I0810 16:18:44.487284 3310141 task_worker_pool.cpp:1387] Waiting to receive first heartbeat from frontend" のようなログのレコードは、BEノードが正常に起動していることを示しています。

  5. 上記の手順を他のBEインスタンスで繰り返すことで、新しいBEノードを起動することができます。

注意

少なくとも3つのBEノードがデプロイされ、StarRocksクラスタに追加されると、BEノードのハイアベイラビリティクラスタが自動的に形成されます。

ステップ3: (オプション)CNサービスの開始

Compute Node(CN)は、データ自体を保持しない状態の計算サービスです。クエリの追加の計算リソースを提供するために、CNノードをクラスタに追加することもできます。CNノードはv2.4以降でサポートされています。

  1. StarRocks BEデプロイファイルを保存したディレクトリに移動し、CN構成ファイル be/conf/cn.conf を変更します。a. 環境設定チェックリスト で言及されているいずれかのCNポートが使用中である場合は、有効な代替ポートをCN構成ファイルに割り当てる必要があります。

    be_port = vvvv                   # デフォルト: 9060
    be_http_port = xxxx # デフォルト: 8040
    heartbeat_service_port = yyyy # デフォルト: 9050
    brpc_port = zzzz # デフォルト: 8060

    b. クラスタでIPアドレスアクセスを有効にする場合は、構成ファイルに priority_networks 設定項目を追加し、専用のIPアドレス(CIDR形式)をCNノードに割り当てます。クラスタでFQDNアクセスを有効にする場合は、この構成項目を無視できます。

    priority_networks = x.x.x.x/x

    注意

    インスタンスが所持するIPアドレスを表示するには、ターミナルで ifconfig を実行してください。

    c. インスタンスに複数のJDKがインストールされており、環境変数 JAVA_HOME で指定されているJDKと異なる特定のJDKを使用したい場合は、構成ファイルに JAVA_HOME 設定項目を追加し、選択したJDKがインストールされているパスを指定する必要があります。

    # <path_to_JDK>を選択したJDKがインストールされているパスに置き換えます。
    JAVA_HOME = <path_to_JDK>

    BEの設定項目から継承されるため、詳細な設定項目についてはパラメータの設定 - BE設定項目を参照してください。

  2. CNノードを起動します。

    ./be/bin/start_cn.sh --daemon

    注意

    • FQDNアクセスを有効にした状態でCNノードを起動する前に、/etc/hosts のすべてのインスタンスにホスト名が割り当てられていることを確認してください。詳細については、環境設定チェックリスト - ホスト名を参照してください。
    • CNノードを起動する際には、--host_type パラメータを指定する必要はありません。
  3. CNノードが正常に起動したかどうかを確認するために、CNログを確認します。

    cat be/log/cn.INFO | grep heartbeat

    "I0313 15:03:45.820030 412450 thrift_server.cpp:375] heartbeat has started listening port on 9050" のようなログのレコードは、CNノードが正常に起動していることを示しています。

  4. 上記の手順を他のインスタンスで繰り返すことで、新しいCNノードを起動することができます。

ステップ4: クラスタのセットアップ

すべてのFEノード、BEノード、およびCNノードが正常に起動したら、StarRocksクラスタのセットアップを行うことができます。

以下の手順は、MySQLクライアントで実行する必要があります。MySQLクライアント5.5.0以降がインストールされている必要があります。

  1. MySQLクライアントを使用してStarRocksに接続します。初期アカウント root でログインし、パスワードはデフォルトで空です。

    # <fe_address>をLeader FEノードのIPアドレス(priority_networks)またはFQDNに、
    # <query_port>(デフォルト:9030)をfe.confで指定したquery_portに置き換えます。
    mysql -h <fe_address> -P<query_port> -uroot
  2. 以下のSQLを実行して、リーダーFEノードのステータスを確認します。

    SHOW PROC '/frontends'\G

    例:

    MySQL [(none)]> SHOW PROC '/frontends'\G
    *************************** 1. row ***************************
    Name: x.x.x.x_9010_1686810741121
    IP: x.x.x.x
    EditLogPort: 9010
    HttpPort: 8030
    QueryPort: 9030
    RpcPort: 9020
    Role: LEADER
    ClusterId: 919351034
    Join: true
    Alive: true
    ReplayedJournalId: 1220
    LastHeartbeat: 2023-06-15 15:39:04
    IsHelper: true
    ErrMsg:
    StartTime: 2023-06-15 14:32:28
    Version: 3.0.0-48f4d81
    1 row in set (0.01 sec)
    • フィールド Alivetrue の場合、このFEノードは正常に起動し、クラスタに追加されています。
    • フィールド RoleFOLLOWER の場合、このFEノードはリーダーFEノードに選出される資格があります。
    • フィールド RoleLEADER の場合、このFEノードはリーダーFEノードです。
  3. BEノードをクラスタに追加します。

    -- <be_address>にはBEノードのIPアドレス(priority_networks)またはFQDNを、
    -- <heartbeat_service_port>にはbe.confで指定したheartbeat_service_port(デフォルト: 9050)を置き換えます。
    ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>";

    注意

    上記のコマンドを使用して一度に複数のBEノードを追加することができます。各 <be_address>:<heartbeat_service_port> のペアは1つのBEノードを表します。

  4. BEノードのステータスを確認するために、以下のSQLを実行します。

    SHOW PROC '/backends'\G
    MySQL [(none)]> SHOW PROC '/backends'\G
    *************************** 1. row ***************************
    BackendId: 10007
    IP: 172.26.195.67
    HeartbeatPort: 9050
    BePort: 9060
    HttpPort: 8040
    BrpcPort: 8060
    LastStartTime: 2023-06-15 15:23:08
    LastHeartbeat: 2023-06-15 15:57:30
    Alive: true
    SystemDecommissioned: false
    ClusterDecommissioned: false
    TabletNum: 30
    DataUsedCapacity: 0.000
    AvailCapacity: 341.965 GB
    TotalCapacity: 1.968 TB
    UsedPct: 83.04 %
    MaxDiskUsedPct: 83.04 %
    ErrMsg:
    Version: 3.0.0-48f4d81
    Status: {"lastSuccessReportTabletsTime":"2023-06-15 15:57:08"}
    DataTotalCapacity: 341.965 GB
    DataUsedPct: 0.00 %
    CpuCores: 16
    NumRunningQueries: 0
    MemUsedPct: 0.01 %
    CpuUsedPct: 0.0 %

    フィールド Alivetrue の場合、このBEノードは正常に起動し、クラスタに追加されています。

  5. (オプション) CNノードをクラスタに追加します。

    -- <cn_address>にはCNノードのIPアドレス(priority_networks)またはFQDNを、
    -- <heartbeat_service_port>にはcn.confで指定したheartbeat_service_port(デフォルト: 9050)を置き換えます。
    ALTER SYSTEM ADD COMPUTE NODE "<cn_address>:<heartbeat_service_port>";

    注意

    このSQLを使用して1度に複数のCNノードを追加することができます。各 <cn_address>:<heartbeat_service_port> のペアは1つのCNノードを表します。

  6. (オプション) CNノードのステータスを確認するために、以下のSQLを実行します。

    SHOW PROC '/compute_nodes'\G
    MySQL [(none)]> SHOW PROC '/compute_nodes'\G
    *************************** 1. row ***************************
    ComputeNodeId: 10003
    IP: x.x.x.x
    HeartbeatPort: 9050
    BePort: 9060
    HttpPort: 8040
    BrpcPort: 8060
    LastStartTime: 2023-03-13 15:11:13
    LastHeartbeat: 2023-03-13 15:11:13
    Alive: true
    SystemDecommissioned: false
    ClusterDecommissioned: false
    ErrMsg:
    Version: 2.5.2-c3772fb
    1 row in set (0.00 sec)

    フィールド Alivetrue の場合、このCNノードは正常に起動し、クラスタに追加されています。CNが正常に起動した後、クエリの実行中にCNを使用する場合は、システム変数 SET prefer_compute_node = true; および SET use_compute_nodes = -1; を設定してください。詳細については、システム変数を参照してください。

ステップ5: (オプション)高可用性のFEクラスタのデプロイ

高可用性のFEクラスタをデプロイするには、StarRocksクラスタに少なくとも3つのFollower FEノードが必要です。リーダーFEノードが正常に起動された後、2つの新しいFEノードを起動して高可用性のFEクラスタをデプロイすることができます。

  1. MySQLクライアントを使用してStarRocksに接続します。初期アカウント root でログインし、パスワードはデフォルトで空です。

    # <fe_address>をLeader FEノードのIPアドレス(priority_networks)またはFQDNに、
    # <query_port>(デフォルト:9030)をfe.confで指定したquery_portに置き換えます。
    mysql -h <fe_address> -P<query_port> -uroot
  2. 以下のSQLを実行して、新しいFollower FEノードをクラスタに追加します。

    -- <fe2_address>には新しいFollower FEノードのIPアドレス(priority_networks)またはFQDNを、
    -- <edit_log_port>にはfe.confで指定したedit_log_port(デフォルト: 9010)を置き換えます。
    ALTER SYSTEM ADD FOLLOWER "<fe2_address>:<edit_log_port>";

    注意

    • 一度に1つのFollower FEノードのみを追加するため、上記のコマンドを使用します。
    • Observer FEノードを追加する場合、 ALTER SYSTEM ADD OBSERVER "<fe_address>:<edit_log_port>"= を実行します。詳細な手順については、ALTER SYSTEM - FEを参照してください。
  3. 新しいFollower FEノードを構成するために、新しいFEインスタンスでターミナルを起動し、メタデータの保存に専用のディレクトリを作成し、StarRocks FEデプロイファイルを保存したディレクトリに移動し、FE構成ファイル fe/conf/fe.conf を変更します。詳細な手順については、ステップ1: リーダーFEノードの起動を参照してください。基本的には、FEノードの起動コマンド以外の手順を繰り返すことができます。Follower FEノードを構成した後、次のSQLを実行してFollower FEノードにヘルパーノードを割り当て、Follower FEノードを起動します。

    注意

    クラスタに新しいFollower FEノードを追加する場合は、メタデータを同期するためにヘルパーノード(基本的には既存のFollower FEノード)を新しいFollower FEノードに割り当てる必要があります。

    • IPアドレスアクセスを使用して新しいFEノードを起動する場合、次のコマンドを実行してFEノードを起動します:
      # <helper_fe_ip>にはLeader FEノードのIPアドレス(priority_networks)を、
      # <helper_edit_log_port>(デフォルト:9010)にはLeader FEノードのedit_log_portを置き換えます。
      ./fe/bin/start_fe.sh --helper <helper_fe_ip>:<helper_edit_log_port> --daemon
      ノードを最初に起動するときには、パラメータ --helper を1度だけ指定する必要があります。
    • FQDNアクセスを使用して新しいFEノードを起動する場合、次のコマンドを実行してFEノードを起動します。
      # <helper_fqdn>にはLeader FEノードのFQDNを、
      # <helper_edit_log_port>(デフォルト:9010)にはLeader FEノードのedit_log_portを置き換えます。
      ./fe/bin/start_fe.sh --helper <helper_fqdn>:<helper_edit_log_port> \
      --host_type FQDN --daemon
      ノードを最初に起動するときには、パラメータ --helper および --host_type を1度だけ指定する必要があります。
  4. FEログを確認して、FEノードが正常に起動したかどうかを確認します。

    cat fe/log/fe.log | grep thrift

    "2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020." のようなログのレコードは、FEノードが正常に起動していることを示しています。

  5. 前述の手順2、3、および4をすべて正常に開始するまで繰り返し、MySQLクライアントから以下のSQLを実行して、FEノードのステータスを確認します。

    SHOW PROC '/frontends'\G

    例:

    MySQL [(none)]> SHOW PROC '/frontends'\G
    *************************** 1. row ***************************
    Name: x.x.x.x_9010_1686810741121
    IP: x.x.x.x
    EditLogPort: 9010
    HttpPort: 8030
    QueryPort: 9030
    RpcPort: 9020
    Role: LEADER
    ClusterId: 919351034
    Join: true
    Alive: true
    ReplayedJournalId: 1220
    LastHeartbeat: 2023-06-15 15:39:04
    IsHelper: true
    ErrMsg:
    StartTime: 2023-06-15 14:32:28
    Version: 3.0.0-48f4d81
    *************************** 2. row ***************************
    Name: x.x.x.x_9010_1686814080597
    IP: x.x.x.x
    EditLogPort: 9010
    HttpPort: 8030
    QueryPort: 9030
    RpcPort: 9020
    Role: FOLLOWER
    ClusterId: 919351034
    Join: true
    Alive: true
    ReplayedJournalId: 1219
    LastHeartbeat: 2023-06-15 15:39:04
    IsHelper: true
    ErrMsg:
    StartTime: 2023-06-15 15:38:53
    Version: 3.0.0-48f4d81
    *************************** 3. row ***************************
    Name: x.x.x.x_9010_1686814090833
    IP: x.x.x.x
    EditLogPort: 9010
    HttpPort: 8030
    QueryPort: 9030
    RpcPort: 9020
    Role: FOLLOWER
    ClusterId: 919351034
    Join: true
    Alive: true
    ReplayedJournalId: 1219
    LastHeartbeat: 2023-06-15 15:39:04
    IsHelper: true
    ErrMsg:
    StartTime: 2023-06-15 15:37:52
    Version: 3.0.0-48f4d81
    3 rows in set (0.02 sec)
    • フィールド Alivetrue の場合、このFEノードは正常に起動し、クラスタに追加されています。
    • フィールド RoleFOLLOWER の場合、このFEノードはリーダーFEノードに選出される資格があります。
    • フィールド RoleLEADER の場合、このFEノードはリーダーFEノードです。

StarRocksクラスタの停止

対応するインスタンスで以下のコマンドを実行することで、StarRocksクラスタを停止することができます。

  • FEノードの停止。

    ./fe/bin/stop_fe.sh --daemon
  • BEノードの停止。

    ./be/bin/stop_be.sh --daemon
  • CNノードの停止。

    ./be/bin/stop_cn.sh --daemon

トラブルシューティング

FEノード、BEノード、またはCNノードを起動する際にエラーが発生した場合は、次の手順を実行してエラーを特定します。

  • FEノードが正常に起動しない場合は、FEログ fe/log/fe.warn.log を確認して問題を特定できます。
    cat fe/log/fe.warn.log
    問題を特定し、解決後には現在のFEプロセスを終了し、既存のmetaディレクトリを削除し、新しいメタデータ保存ディレクトリを作成し、正しい構成でFEノードを再起動する必要があります。
  • BEノードが正常に起動しない場合は、BEログ be/log/be.WARNING を確認して問題を特定できます。
    cat be/log/be.WARNING
    問題を特定し、解決後には既存のBEプロセスを終了し、既存の storage ディレクトリを削除し、新しいデータ保存ディレクトリを作成し、正しい構成でBEノードを再起動する必要があります。
  • CNノードが正常に起動しない場合は、CNログ be/log/cn.WARNING を確認して問題を特定できます。
    cat be/log/cn.WARNING
    問題を特定し、解決後には既存のCNプロセスを終了し、正しい構成でCNノードを再起動する必要があります。

次に行うべきこと

StarRocksクラスタをデプロイしたら、デプロイ後のセットアップに進んで初期の管理手順を行うことができます。