メインコンテンツまでスキップ
メインコンテンツまでスキップ

クラスター検出

概要

ClickHouseのクラスター検出機能は、ノードが自動的に自分自身を発見し登録できるようにすることで、クラスターの構成を簡素化します。これにより、構成ファイルに明示的に定義する必要がなくなり、各ノードの手動定義が煩雑になる場合に特に有益です。

注記

クラスター検出は実験的な機能であり、将来のバージョンで変更または削除される可能性があります。 これを有効にするには、構成ファイルに allow_experimental_cluster_discovery 設定を含めてください:

リモートサーバーの構成

従来の手動構成

従来、ClickHouseでは、クラスター内の各シャードおよびレプリカを構成に手動で指定する必要がありました:

クラスター検出の使用

クラスター検出を使用すると、各ノードを明示的に定義するのではなく、ZooKeeper内のパスを指定するだけで済みます。このパスの下に登録されているすべてのノードは、自動的に発見され、クラスターに追加されます。

特定のノードにシャード番号を指定したい場合は、<discovery> セクション内に <shard> タグを含めることができます:

node1 および node2 の場合:

node3 および node4 の場合:

観察者モード

観察者モードで構成されたノードは、自分自身をレプリカとして登録しません。 彼らは、アクティブなレプリカを観察し発見するだけで、積極的に参加しません。 観察者モードを有効にするには、<discovery> セクション内に <observer/> タグを含めます:

クラスターの発見

時には、クラスター内のホストだけでなく、クラスター自体を追加および削除する必要がある場合があります。複数のクラスター用にルートパスを持つ <multicluster_root_path> ノードを使用できます:

この場合、他のホストが /clickhouse/discovery/some_new_cluster で自分を登録すると、some_new_cluster という名前のクラスターが追加されます。

これらの機能を同時に使用することもでき、ホストはクラスター my_cluster に自分を登録し、他のクラスターを発見することができます:

制限事項:

  • 同じ remote_servers サブツリー内で <path><multicluster_root_path> の両方を使用することはできません。
  • <multicluster_root_path><observer/> とだけ使用できます。
  • Keeperからのパスの最後の部分はクラスタ名として使用され、登録中はXMLタグから名前が取得されます。

使用例と制限事項

指定されたZooKeeperパスからノードが追加または削除されると、それらは自動的に発見されたり、クラスタから削除されたりします。構成の変更やサーバーの再起動は必要ありません。

ただし、変更はクラスター構成のみに影響し、データや既存のデータベースおよびテーブルには影響しません。

次の例を考えてみましょう。3ノードのクラスターが組織されています:

その後、クラスターに新しいノードを追加し、構成ファイルの remote_servers セクションに同じエントリを持つ新しいノードを起動します:

4番目のノードはクラスターに参加していますが、テーブル event_table は依然として最初の3つのノードにのみ存在します:

すべてのノードにテーブルを複製する必要がある場合は、クラスター検出の代わりに Replicated データベースエンジンを使用できます。