メインコンテンツへスキップ

概要

ClickHouse の Cluster Discovery 機能を使うと、設定ファイルに各ノードを明示的に定義しなくても、ノードが自動的に検出・登録されるため、クラスター構成を簡素化できます。これは、各ノードを個別に手動定義するのが煩雑になる場合に特に有効です。
Cluster Discovery は Experimental な機能であり、今後のバージョンで変更または削除される可能性があります。 有効にするには、設定ファイルに allow_experimental_cluster_discovery 設定を追加してください。

リモートサーバーの設定

従来の手動設定

従来、ClickHouse では、クラスター内の各分片とレプリカを設定ファイルで手動で指定する必要がありました。

クラスター検出 の使用

クラスター検出 では、各ノードを明示的に定義する代わりに、ZooKeeper 内のパスを指定するだけで済みます。ZooKeeper でこのパス配下に登録されたすべてのノードは、自動的に検出され、クラスターに追加されます。
特定のノードの分片番号を指定する場合は、<discovery> セクション内に <shard> タグを含めることができます。 node1node2 の場合:
node3node4 では、

オブザーバーモード

オブザーバーモードに設定されたノードは、自身をレプリカとして登録しません。 これらのノードは、能動的には参加せず、クラスター内のほかのアクティブなレプリカを監視・検出するだけです。 オブザーバーモードを有効にするには、<discovery> セクション内に <observer/> タグを含めます。

クラスターの検出

場合によっては、クラスター内のホストだけでなく、クラスター自体を追加・削除する必要があります。複数のクラスターのルートパスを持つ <multicluster_root_path> ノードを使用できます:
この場合、別のホストがパス /clickhouse/discovery/some_new_cluster に自身を登録すると、some_new_cluster という名前のクラスターが追加されます。 これら2つの機能は同時に使用できます。ホストはクラスター my_cluster に自身を登録しつつ、他の任意のクラスターを検出することもできます:
制限事項:
  • 同じ remote_servers サブツリー内で <path><multicluster_root_path> を併用することはできません。
  • <multicluster_root_path><observer/> と組み合わせてのみ使用できます。
  • Keeper の path の最後の部分がクラスター名として使用されますが、登録時の名前は XML タグから取得されます。

ユースケースと制限事項

指定されたZooKeeper path にノードが追加または削除されると、設定を変更したり server を再起動したりしなくても、それらのノードは自動的に検出されるか、クラスターから削除されます。 ただし、これらの変更が影響するのはクラスター構成のみであり、データや既存のデータベース、テーブルには影響しません。 以下の 3 ノードのクラスターの例を考えてみましょう。
次に、設定ファイルのremote_serversセクションに同じエントリを指定して新しいノードを起動し、クラスターに追加します。
4 番目のノードはクラスターに参加していますが、テーブル event_table は依然として最初の 3 つのノードにしか存在していません。
すべてのノードにテーブルをレプリケートする必要がある場合は、クラスター検出 の代わりに Replicated データベースエンジンを使用できます。
最終更新日 2026年6月12日