概要
ClickHouse の クラスター検出 機能を使うと、設定ファイルに各ノードを明示的に定義しなくても、ノードが自動的に検出・登録されるため、クラスター構成を簡素化できます。これは、各ノードを個別に手動定義するのが煩雑になる場合に特に有効です。クラスター検出 を使用するには、ClickHouse Keeper または ZooKeeper が設定されている必要があります。
以前のバージョンでは Experimental な機能であり、設定ファイルで
allow_experimental_cluster_discovery 設定を指定して有効にする必要がありました。
この設定は現在廃止されており、指定しても効果はありません。リモートサーバーの設定
従来の手動設定
従来、ClickHouse では、クラスター内の各分片とレプリカを設定ファイルで手動で指定する必要がありました。クラスター検出 の使用
クラスター検出 では、各ノードを明示的に定義する代わりに、ZooKeeper 内のパスを指定するだけで済みます。ZooKeeper でこのパス配下に登録されたすべてのノードは、自動的に検出され、クラスターに追加されます。<discovery> セクション内に <shard> タグを含めることができます。
node1 と node2 の場合:
node3 と node4 では、
オブザーバーモード
オブザーバーモードに設定されたノードは、自身をレプリカとして登録しません。 これらのノードは、能動的には参加せず、クラスター内のほかのアクティブなレプリカを監視・検出するだけです。 オブザーバーモードを有効にするには、<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セクションに同じエントリを指定して新しいノードを起動し、クラスターに追加します。
event_table は依然として最初の 3 つのノードにしか存在していません。