FQDN
この記事では、Apache Doris クラスタで FQDN(完全修飾ドメイン名)を有効にする方法を説明します。FQDN は、インターネット上の特定のコンピュータまたはホストを示す完全なドメイン名です。
FQDN を有効にすると、Doris ノード間の通信はすべて FQDN に基づいて行われます。ノードを追加するときは、FQDN を直接指定します。たとえば、BE ノードを追加するコマンドは次のとおりです。
ALTER SYSTEM ADD BACKEND "be_host:heartbeat_service_port";
FQDN モードでは、be_host に BE ノードの IP アドレスではなく FQDN を設定する必要があります。
適用場面
| 場面 | 説明 | 操作手順 |
|---|---|---|
| 新規クラスタのデプロイ | 新しいクラスタの構築時に FQDN を有効にし、後からの移行を避けます | 新規クラスタで FQDN を有効にする |
| Kubernetes へのデプロイ | Pod の再起動後に IP アドレスが変わっても、ドメイン名は変わりません。FQDN によってサービスの継続性を確保できます。 | K8s に Doris をデプロイする |
| サーバーの IP アドレス変更 | ネットワークインターフェースの切り替えやマシンの交換時に、Doris のメタデータを変更する必要はありません | サーバーの IP アドレス変更 |
| 既存クラスタの移行 | IP アドレスを使用して稼働しているクラスタを FQDN モードに切り替えます | 既存クラスタで FQDN を有効にする |
前提条件
FQDN を有効にする前に、次の条件を満たす必要があります。
enable_fqdn_mode = trueをfe.confに設定します。- クラスタ内のすべてのマシンにホスト名を設定します。
- クラスタ内の各マシンの
/etc/hostsファイルに、他のすべてのマシンの IP アドレスと FQDN の対応関係を記載します。 /etc/hostsファイルに同じ IP アドレスを重複して記載してはいけません。
新規クラスタで FQDN を有効にする
3 FE + 3 BE のクラスタをデプロイする場合を例に、手順を示します。
-
マシンを準備する:クラスタの規模に応じてマシンを用意します(この例では 6 台)。
-
ホスト名の一意性を確認する:各マシンで
hostコマンドを実行し、返される結果がそれぞれ異なることを確認します。6 台のマシンのホスト名をfe1、fe2、fe3、be1、be2、be3とします。 -
/etc/hostsを設定する:6 台すべてのマシンで、6 つの FQDN に対応する実際の IP アドレスを/etc/hostsに設定します。172.22.0.1 fe1
172.22.0.2 fe2
172.22.0.3 fe3
172.22.0.4 be1
172.22.0.5 be2
172.22.0.6 be3 -
ネットワークを確認する:任意のノード(たとえば
fe1)でping fe2を実行します。正しい IP アドレスに名前解決され、ノードに到達できれば、ネットワーク環境の準備は完了です。 -
FQDN の設定を有効にする:各 FE ノードの
fe.confに次の設定を追加します。enable_fqdn_mode = true -
クラスタをデプロイする:手動デプロイに従って、FE / BE のデプロイを完了します。
-
必要に応じて Broker を追加する:選択したマシンに Broker をデプロイし、次のコマンドを実行します。
ALTER SYSTEM ADD BROKER broker_name "fe1:8000","be1:8000",...;
K8s に Doris をデプロイする
Kubernetes 環境では、Pod が予期せず再起動した後も IP アドレスが同じであるとは限りませんが、ドメイン名は変わりません。Doris で FQDN を有効にすると、この性質を利用して Pod の再起動後もサービスに到達できるようにできます。
K8s に Doris をデプロイする詳しい手順については、K8s に Doris をデプロイするを参照してください。
サーバーの IP アドレス変更
「新規クラスタで FQDN を有効にする」の手順でデプロイした後に、マシンの IP アドレスを変更する場合(ネットワークインターフェースの切り替えやマシンの交換など)は、すべてのマシンの /etc/hosts ファイルを更新するだけです。Doris クラスタのメタデータを変更する必要はありません。
既存クラスタで FQDN を有効にする
バージョンの前提条件:現在使用している Doris のバージョンが、次の構文をサポートしている必要があります。
ALTER SYSTEM MODIFY FRONTEND "<fe_ip>:<edit_log_port>" HOSTNAME "<fe_hostname>";
現在のバージョンがこの構文をサポートしていない場合は、サポートするバージョンに先にアップグレードしてください。
以下の操作を行うには、クラスタに Follower ノードが少なくとも 3 つ必要です。それ未満の場合、クラスタは正常に起動しません。
FE ノードで FQDN を有効にする
Follower ノードと Observer ノードで次の操作を順番に行い、Master ノードは最後に操作してください。
-
ノードを停止する:対象の FE プロセスを停止します。
-
ノードの状態を確認する:MySQL クライアントで
SHOW FRONTENDSを実行し、この FE ノードのAliveがfalseに変わったことを確認します。 -
FQDN を設定する:次の SQL を実行します(Master ノードの停止後は、新しい Master が自動的に選出されます。その場合は、新しい Master でこの文を実行します)。
ALTER SYSTEM MODIFY FRONTEND "<fe_ip>:<edit_log_port>" HOSTNAME "<fe_hostname>"; -
ノードの設定を変更する:停止したノードの FE ルートディレクトリにある
conf/fe.confを編集し、次の設定を追加します。enable_fqdn_mode = trueこの設定を追加してもノードが正常に起動しない場合は、
enable_fqdn_mode = trueをすべての FE のfe.confに追加してから、停止した FE ノードを起動します。 -
ノードを起動する:FE プロセスを起動し、ノードをクラスタに再参加させます。
BE ノードで FQDN を有効にする
BE ノードで FQDN を有効にする際、再起動は不要です。MySQL クライアントから次のコマンドを実行します。
ALTER SYSTEM MODIFY BACKEND "<backend_ip>:<HeartbeatPort>" HOSTNAME "<be_hostname>";
HeartbeatPort のポート番号が不明な場合は、SHOW BACKENDS コマンドで確認してください。
FAQ
Q: enable_fqdn_mode の設定値は任意に変更できますか?
いいえ、任意に変更することはできません。IP アドレスを使用して稼働しているクラスタを FQDN モードに切り替えるには、既存クラスタで FQDN を有効にするの手順に従ってください。
Q: Follower ノードが 3 つ未満でも FQDN を有効にできますか?
いいえ。既存クラスタで移行手順を実行するには、Follower ノードが少なくとも 3 つ必要です。それ未満の場合、クラスタは正常に起動しません。
Q: サーバーの IP アドレスを変更した後、Doris のメタデータを変更する必要がありますか?
いいえ。すべてのマシンの /etc/hosts で、IP アドレスと FQDN の対応関係を更新するだけです。
Q: ノードを追加するとき、be_host には何を設定しますか?
FQDN を有効にした後は、be_host に BE ノードの IP アドレスではなく FQDN を設定する必要があります。