メインコンテンツまでスキップ
バージョン: Stable-3.3

Deploy StarRocks manually

ヒント

手動デプロイの準備については、 Deployment prerequisitesCheck environment configurations のドキュメントに記載されています。プロダクションデプロイを計画している場合は、まずこれらを確認してください。StarRocks を始める場合やクイックスタートを試したい場合は、 Quick Starts を参照してください。

このトピックでは、共有なし StarRocks(BE がストレージとコンピューティングの両方を担当する)を手動でデプロイする方法について説明します。他のインストールモードについては、 Deployment Overview を参照してください。

共有データ StarRocks クラスタ(ストレージとコンピューティングが分離された)をデプロイするには、 Deploy and use shared-data StarRocks を参照してください。

Step 1: Leader 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. Environment Configuration Checklist に記載されている FE ポートが占有されている場合は、FE 設定ファイルで有効な代替ポートを割り当てる必要があります。

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

    CAUTION

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

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

    priority_networks = x.x.x.x/x

    NOTE

    • ターミナルで ifconfig を実行すると、インスタンスが所有する IP アドレスを確認できます。
    • v3.3.0 以降、StarRocks は IPv6 に基づくデプロイをサポートしています。

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

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

    f. 高度な設定項目については、 Parameter Configuration - FE configuration items を参照してください。

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

    • クラスタに対して IP アドレスアクセスを有効にするには、以下のコマンドを実行して FE ノードを起動します。

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

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

      ノードを初めて起動する際に、パラメータ --host_type を指定する必要があるのは一度だけです。

      CAUTION

      FQDN アクセスを有効にして FE ノードを起動する前に、すべてのインスタンスにホスト名を割り当てたことを確認してください。詳細については、 Environment Configuration Checklist - Hostnames を参照してください。

  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 ノードが正常に起動したことを示しています。

Step 2: (For shared-nothing) BE サービスを起動する

注記

BE ノードは共有なしクラスタにのみ追加できます。共有データクラスタに 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. Environment Configuration Checklist に記載されている BE ポートが占有されている場合は、BE 設定ファイルで有効な代替ポートを割り当てる必要があります。

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

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

    priority_networks = x.x.x.x/x

    NOTE

    • ターミナルで ifconfig を実行すると、インスタンスが所有する IP アドレスを確認できます。
    • v3.3.0 以降、StarRocks は IPv6 に基づくデプロイをサポートしています。

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

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

    高度な設定項目については、 Parameter Configuration - BE configuration items を参照してください。

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

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

    CAUTION

    • FQDN アクセスを有効にして BE ノードを起動する前に、すべてのインスタンスにホスト名を割り当てたことを確認してください。詳細については、 Environment Configuration Checklist - Hostnames を参照してください。
    • 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 ノードを起動できます。

NOTE

BE ノードが少なくとも 3 つデプロイされ、StarRocks クラスタに追加されると、高可用性クラスタが自動的に形成されます。 1 つの BE ノードのみをデプロイしたい場合は、FE 設定ファイル fe/conf/fe.confdefault_replication_num1 に設定する必要があります。

default_replication_num = 1

Step 2: (For shared-data) CN サービスを起動する

注記

CN ノードは共有データクラスタにのみ追加できます。共有なしクラスタに CN ノードを追加することは推奨されず、未知の動作を引き起こす可能性があります。

Compute Node (CN) はデータを自ら保持しないステートレスなコンピューティングサービスです。クエリのために追加のコンピューティングリソースを提供するために、クラスタに CN ノードをオプションで追加できます。CN ノードは BE デプロイメントファイルを使用してデプロイできます。Compute Nodes は v2.4 からサポートされています。

  1. 以前に準備した StarRocks BE デプロイメントファイル を格納するディレクトリに移動し、CN 設定ファイル be/conf/cn.conf を変更します。

    a. Environment Configuration Checklist に記載されている CN ポートが占有されている場合は、CN 設定ファイルで有効な代替ポートを割り当てる必要があります。

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

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

    priority_networks = x.x.x.x/x

    NOTE

    • ターミナルで ifconfig を実行すると、インスタンスが所有する IP アドレスを確認できます。
    • v3.3.0 以降、StarRocks は IPv6 に基づくデプロイをサポートしています。

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

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

    高度な設定項目については、 Parameter Configuration - BE configuration items を参照してください。CN のパラメータのほとんどは BE から継承されています。

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

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

    CAUTION

    • FQDN アクセスを有効にして CN ノードを起動する前に、すべてのインスタンスにホスト名を割り当てたことを確認してください。詳細については、 Environment Configuration Checklist - Hostnames を参照してください。
    • 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 ノードを起動できます。

Step 3: クラスタをセットアップする

すべての 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 を実行して Leader 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 ノードは Leader FE ノードとして選出される資格があります。
    • フィールド RoleLEADER の場合、この FE ノードは Leader FE ノードです。
  1. BE/CN ノードをクラスタに追加します。

    • (共有なしの場合) 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>";

    NOTE

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

    • (共有データの場合) 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>";

    NOTE

    1 つの SQL で複数の CN ノードを追加できます。各 <cn_address>:<heartbeat_service_port> ペアは 1 つの CN ノードを表します。

  2. 次の SQL を実行して BE/CN ノードのステータスを確認します。

    • (共有なしの場合) BE ノードのステータスを確認します。
    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 ノードは正常に起動し、クラスタに追加されています。

    • (共有データの場合) CN ノードのステータスを確認します。
    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; を設定します。詳細については、 System variables を参照してください。

Step 4: (Optional) 高可用性 FE クラスタをデプロイする

高可用性 FE クラスタには、StarRocks クラスタ内に少なくとも 3 つの Follower FE ノードが必要です。Leader 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 ノードをクラスタに追加します。

    -- <fe_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>";

    NOTE

    • 上記のコマンドを使用して、1 回に 1 つの Follower FE ノードを追加できます。
    • Observer FE ノードを追加したい場合は、ALTER SYSTEM ADD OBSERVER "<fe_address>:<edit_log_port>"= を実行します。詳細な手順については、 ALTER SYSTEM - FE を参照してください。
  3. 新しい FE インスタンスでターミナルを起動し、メタデータストレージ用の専用ディレクトリを作成し、StarRocks FE デプロイメントファイルを格納するディレクトリに移動し、FE 設定ファイル fe/conf/fe.conf を変更します。詳細な手順については、 Step 1: Start the Leader FE node を参照してください。基本的に、Step 1 の手順を繰り返すことができますが、FE ノードを起動するためのコマンドを除きます

    Follower FE ノードを設定した後、次の SQL を実行して Follower FE ノードにヘルパーノードを割り当て、Follower FE ノードを起動します。

    NOTE

    クラスタに新しい 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 を指定する必要があるのは一度だけです。

    • 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 を指定する必要があるのは一度だけです。

  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 を繰り返して、すべての新しい Follower FE ノードを正常に起動し、次に 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 ノードは Leader FE ノードとして選出される資格があります。
    • フィールド RoleLEADER の場合、この FE ノードは Leader FE ノードです。

Stop the StarRocks cluster

対応するインスタンスで次のコマンドを実行して、StarRocks クラスタを停止できます。

  • FE ノードを停止します。

    ./fe/bin/stop_fe.sh
  • BE ノードを停止します。

    ./be/bin/stop_be.sh
  • CN ノードを停止します。

    ./be/bin/stop_cn.sh

Troubleshooting

FE または BE ノードを起動する際に発生するエラーを特定するために、次の手順を試してください。

  • FE ノードが正常に起動しない場合、fe/log/fe.warn.log のログを確認して問題を特定できます。

    cat fe/log/fe.warn.log

    問題を特定して解決した後、現在の FE プロセスを終了し、既存の meta ディレクトリを削除し、新しいメタデータストレージディレクトリを作成し、正しい設定で FE ノードを再起動する必要があります。

  • BE ノードが正常に起動しない場合、be/log/be.WARNING のログを確認して問題を特定できます。

    cat be/log/be.WARNING

    問題を特定して解決した後、既存の BE プロセスを終了し、既存の storage ディレクトリを削除し、新しいデータストレージディレクトリを作成し、正しい設定で BE ノードを再起動する必要があります。

  • CN ノードが正常に起動しない場合、be/log/cn.WARNING のログを確認して問題を特定できます。

    cat be/log/cn.WARNING

    問題を特定して解決した後、既存の CN プロセスを終了し、正しい設定で CN ノードを再起動する必要があります。

What to do next

StarRocks クラスタをデプロイした後、初期管理手順についての指示を得るために Post-deployment Setup に進むことができます。