エラスティックスケーリング
Dorisはオンライン弾性スケーリングをサポートしており、ユーザーはサービスを中断することなく動的にノードを追加または削除できます。この機能により、企業は増大する需要に対応したり、アイドル状態のリソースの無駄を削減したりできます。BEノードのスケールアップまたはスケールダウンはクラスターの可用性に影響しませんが、データ移行を伴うため、ビジネス活動が少ない期間にスケーリング操作を実行することを推奨します。
FEクラスターのスケールイン/アウト
Doris FEノードは以下の3つの役割に分かれており、各FEノードには完全なメタデータセットが含まれています:
-
Master Node:メタデータの読み取りと書き込みを担当します。Master nodeでメタデータの変更が発生すると、BDB JEプロトコルを介してnon-Masterノードに同期されます。クラスター内にはMaster FEノードを1つだけ配置できます。
-
Follower Node:メタデータの読み取りを担当します。Master nodeに障害が発生した場合、Follower nodeがリーダー選出を開始して新しいMaster nodeを選択します。クラスター内では、MasterとFollowerノードの総数を奇数にすることを推奨します。
-
Observer Node:メタデータの読み取りを担当しますが、リーダー選出には参加しません。FEノードの読み取りサービス容量を拡張するために使用されます。
通常、各FEノードは10~20個のBEノードの負荷操作を処理できます。3つのFEノードの構成で、ほとんどのビジネスシナリオの要件を満たすのに十分です。
FEのスケールアウト
新しいFEノードを追加する際は、以下の点にご注意ください:
-
新しいFEノードの
http_portは、クラスター内の既存のすべてのFEノードのhttp_portと一致する必要があります。 -
Follower nodeを追加する場合、クラスター内のMasterとFollowerノードの総数を奇数にすることを推奨します。
-
show frontendsコマンドを使用して、現在のクラスターノードのポートと役割を確認できます。
- FE Nodeを開始:
fe/bin/start_fe.sh --helper <leader_fe_host>:<edit_log_port> --daemon
-
FE ノードの登録:
-
ノードを Follower FE として登録:
ALTER SYSTEM ADD FOLLOWER "<follower_host>:<edit_log_port>";
-
-
ノードをObserver FEとして登録する:
ALTER SYSTEM ADD OBSERVER "<observer_host>:<edit_log_port>"; -
新しく追加されたFEノードのステータスを確認する
show frontends;
FE クラスターでのスケールイン
FE ノードをスケールインする際は、クラスター内の Master および Follower ノードの総数が奇数のままになることを確認してください。ノードを削除するには、以下のコマンドを使用します:
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "<fe_host>:<edit_log_port>";
スケールイン後、FEディレクトリを手動で削除する必要があります。
BEクラスタのスケールイン/アウト
BEクラスタのスケールアウト
-
BEプロセスを開始します:
be/bin/start_be.sh -
BEノードを登録します:
ALTER SYSTEM ADD backend '<be_host>:<be_heartbeat_service_port>';
BE クラスターのスケールイン
BE ノードのスケールイン時には、DROP または DECOMMISSION のいずれかの方法を選択できます:
| DROP | DECOMMISSION | |
|---|---|---|
| 原理 | ノードを直接削除し、BE ノードを削除します。 | BE ノード上のデータを他のノードに移行するコマンドを開始します。移行が完了すると、BE ノードは自動的に削除されます。 |
| 実効時間 | 実行後即座に効果を発揮します。 | データ移行完了後に効果を発揮します。クラスターの既存データ量により、数時間から最大1日かかることがあります。 |
| 単一レプリカテーブルの処理 | データ損失が発生する可能性があります。 | データ損失は発生しません。 |
| 複数ノードの同時削除 | データ損失が発生する可能性があります。 | データ損失は発生しません。 |
| 本番環境での推奨 | 本番環境では推奨されません。 | 本番環境で推奨されます。 |
-
DROP 方法を使用して BE ノードを削除するには、以下のコマンドを使用してください:
ALTER SYSTEM DROP backend "<be_host>:<be_heartbeat_service_port>"; -
DECOMMISSION方式を使用してBEノードを削除するには、以下のコマンドを使用してください:
ALTER SYSTEM DECOMMISSION backend "<be_host>:<be_heartbeat_service_port>";
DECOMMISSIONコマンドの説明:
-
DECOMMISSIONは非同期操作です。実行後、
SHOW backends;を使用してBEノードのSystemDecommissionedステータスがtrueに設定されていることを確認できます。これは、ノードが削除されていることを示します。 -
DECOMMISSIONコマンドは失敗する可能性があります。例えば、削除されるBEからのデータを格納するのに残りのBEノードに十分なストレージ容量がない場合、または残りのノードが最小レプリケーション要件を満たさない場合、コマンドは完了せず、BEは
SystemDecommissioned状態がtrueに設定されたまま残ります。 -
DECOMMISSIONの進行状況は
SHOW PROC '/backends';を使用して監視できます。操作が進行中の場合、TabletNumの値は継続的に減少します。 -
CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";コマンドを使用して操作をキャンセルできます。キャンセル後、BEノードは現在の残りデータを保持し、Dorisは負荷を再バランスします。 -
データ移行レートは
balance_slot_num_per_pathパラメータを変更することで調整できます。