障害耐性のためのレプリケーション
説明
このアーキテクチャには、5台のサーバーが構成されています。2台はデータのコピーをホストするために使用され、他の3台はデータのレプリケーションをコーディネートするために使用されます。この例では、ReplicatedMergeTree テーブルエンジンを使用して、データノード間でレプリケートされるデータベースとテーブルを作成します。
レベル: 基本
Terminology
Replica
データのコピー。ClickHouse は常にデータのコピーを少なくとも 1 つ持っており、最小限の レプリカ の数は 1 つです。これは重要な詳細であり、データのオリジナルコピーをレプリカとしてカウントすることに慣れていないかもしれませんが、ClickHouse のコードとドキュメントで使用される用語です。データの 2 番目のレプリカを追加することにより、フォールトトレランスを提供します。
Shard
データのサブセット。ClickHouse は常にデータのためのシャードを少なくとも 1 つ持っているため、データを複数のサーバーに分割しない場合、データは 1 つのシャードに格納されます。データを複数のサーバーにシャーディングすることで、単一のサーバーの容量を超えた場合に負荷を分散させることができます。宛先サーバーは シャーディングキー によって決定され、分散テーブルを作成する際に定義されます。シャーディングキーはランダムであったり、ハッシュ関数 の出力として定義されることがあります。シャーディングに関する導入例では、rand()
をシャーディングキーとして使用し、異なるシャーディングキーを選択するタイミングと方法についてのさらなる情報を提供します。
Distributed coordination
ClickHouse Keeper はデータレプリケーションおよび分散DDLクエリ実行のためのコーディネーションシステムを提供します。ClickHouse Keeper は Apache ZooKeeper と互換性があります。
環境
アーキテクチャ図

ノード | 説明 |
---|---|
clickhouse-01 | データ |
clickhouse-02 | データ |
clickhouse-keeper-01 | 分散コーディネーション |
clickhouse-keeper-02 | 分散コーディネーション |
clickhouse-keeper-03 | 分散コーディネーション |
本番環境では、ClickHouse Keeper用の専用ホストの使用を強く推奨します。テスト環境では、ClickHouse ServerとClickHouse Keeperを同一のサーバー上で実行することが許容されます。他の基本的な例、スケーリングアウトでもこの方法が使用されています。この例では、KeeperをClickHouse Serverから分離する推奨メソッドを示しています。Keeperサーバーはより小型で、ClickHouse Serversが非常に大きくなるまで、各Keeperサーバーに4GBのRAMが一般的に十分です。
インストール
clickhouse-01
およびclickhouse-02
の2台のサーバーにClickHouse Serverとクライアントをインストールします。手順については、アーカイブタイプに関する手順を参照してください(.deb、.rpm、.tar.gzなど)。
clickhouse-keeper-01
、clickhouse-keeper-02
、clickhouse-keeper-03
の3台のサーバーにClickHouse Keeperをインストールします。手順については、アーカイブタイプに関する手順を参照してください(.deb、.rpm、.tar.gzなど)。
設定ファイルの編集
ClickHouse Serverの設定を行う際、設定ファイルを追加または編集する場合は次の点に注意してください:
/etc/clickhouse-server/config.d/
ディレクトリにファイルを追加する/etc/clickhouse-server/users.d/
ディレクトリにファイルを追加する/etc/clickhouse-server/config.xml
ファイルはそのままにする/etc/clickhouse-server/users.xml
ファイルはそのままにする
clickhouse-01の設定
clickhouse-01には5つの設定ファイルがあります。これらのファイルを1つのファイルにまとめることもできますが、ドキュメントの明確さを保つために、別々に見る方が簡単かもしれません。設定ファイルを読み進めると、clickhouse-01とclickhouse-02の間でほとんどの設定が同じであることがわかります。違いは強調表示されます。
ネットワークとロギングの設定
これらの値は、お好みに応じてカスタマイズ可能です。この例の設定では、次のようになります:
- サイズ1000Mで3回ロールオーバーするデバッグログ
clickhouse-client
で接続したときに表示される名前はcluster_1S_2R node 1
です。- ClickHouseは、ポート8123および9000でIPV4ネットワーク上でリッスンします。