Google Cloud 上で ClickHouse Cloud を使用している場合、このページは該当しません。サービスはすでに Google Cloud Storage を使用しているためです。GCS からデータを
SELECT または INSERT したい場合は、gcs テーブル関数 を参照してください。GCS をバックエンドの MergeTree
ディスクの作成
conf.d 配下のファイルで ClickHouse の設定内に宣言する必要があります。GCS ディスクの宣言例を以下に示します。この設定には、GCS の「ディスク」、cache、および GCS ディスク上に table を作成する際に DDL queries で指定するポリシーを設定するための複数のセクションが含まれています。各セクションについては、以下で説明します。
ストレージ構成 > disks > gcs
- S3 API を使用するため、ディスクの type は
s3です。 - GCS が提供するエンドポイント
- サービスアカウントの HMACキーとシークレット
- ローカルディスク上のメタデータパス
ストレージ構成 > disks > cache
gcs に 10Gi のメモリ cache を有効化しています。
ストレージ構成 > policies > gcs_main
gcs_main を指定することで、データをディスク gcs に保存できます。たとえば、CREATE TABLE ... SETTINGS storage_policy='gcs_main' のように指定します。
テーブルの作成
system.processes テーブルで確認できます。行数は上限の1000万まで適宜調整し、いくつかのサンプルクエリを試してみてください。
レプリケーションへの対応
ReplicatedMergeTree テーブルエンジンを使用して実現できます。詳細については、GCS を使用して 2 つの GCP リージョンにまたがって単一の分片をレプリケートする ガイドを参照してください。
さらに詳しく
Google Cloud Storage (GCS) を使用する
デプロイメントを計画する
- 2 つの GCP リージョンに 2 つの ClickHouse サーバー ノード
- 2 つの GCS バケット。2 つの ClickHouse サーバー ノードと同じリージョンにデプロイ
- 3 つの ClickHouse Keeper ノード。このうち 2 つは ClickHouse サーバー ノードと同じリージョンにデプロイします。3 つ目は最初の 2 つの Keeper ノードのいずれかと同じリージョンでもかまいませんが、可用性ゾーンは別にする必要があります。
仮想マシンを準備する
* これは、1 または 2 と同じリージョン内の別のアベイラビリティゾーンにすることも可能です。
ClickHouseをデプロイ
chnode1、chnode2 です。
chnode1 は1つ目の GCP リージョンに、chnode2 は2つ目のリージョンに配置します。このガイドでは、Compute Engine の VM と GCS バケットの両方に us-east1 と us-east4 を使用します。
clickhouse server は設定が完了するまで起動しないでください。インストールだけを行ってください。ClickHouse Keeper をデプロイする
keepernode1、keepernode2、keepernode3 という名前です。keepernode1 は chnode1 と同じリージョンに、keepernode2 は chnode2 と同じリージョンにデプロイできます。keepernode3 はどちらのリージョンにもデプロイできますが、そのリージョン内の ClickHouse ノードとは異なるアベイラビリティゾーンに配置する必要があります。
ClickHouse Keeper ノードでデプロイ手順を実施する際は、インストール手順を参照してください。
2 つのバケットを作成する
us-east1 と us-east4 にそれぞれ 1 つずつ、合計 2 つのバケットを作成します。バケットは単一リージョン、Standard ストレージクラス、非公開に設定します。求められたら、公開アクセス防止を有効にしてください。フォルダは作成しないでください。ClickHouse がストレージに書き込むときに作成されます。
バケットと HMAC キーの作成手順を順を追って確認したい場合は、Create GCS buckets and an HMAC key を展開して、その手順に従ってください。
GCS バケットと HMAC キーを作成する
GCS バケットと HMAC キーを作成する
ch_bucket_us_east1
ch_bucket_us_east4
アクセスキーを生成する
サービス アカウントの HMAC キーとシークレットを作成する
Cloud Storage > Settings > Interoperability を開き、既存の Access key を選択するか、CREATE A KEY FOR A SERVICE ACCOUNT を選択します。このガイドでは、新しいサービス アカウント用に新しいキーを作成する手順を説明します。新しいサービス アカウントを追加する
既存のサービス アカウントがないプロジェクトの場合は、CREATE NEW ACCOUNT を選択します。サービス アカウントの作成は 3 つの手順で行います。最初の手順では、アカウントにわかりやすい名前、ID、説明を設定します。Interoperability の設定ダイアログでは、IAM role Storage Object Admin を使用することを推奨します。2 番目の手順でこのロールを選択してください。3 番目の手順は任意であり、このガイドでは使用しません。ポリシーに応じて、ユーザーにこれらの権限を付与できます。サービス アカウントの HMAC キーが表示されます。この情報は ClickHouse の設定で使用するため、保存しておいてください。ClickHouse Keeper を設定する
server_id の行 (以下で最初にハイライトされている行) を除き、同じ設定ファイルを使用します。ファイル内のホスト名を使用環境の ClickHouse Keeper サーバーのものに置き換え、各サーバーで server_id が raft_configuration 内の対応する server エントリに一致するよう設定してください。この例では server_id が 3 に設定されているため、raft_configuration 内の対応する行をハイライトしています。
- ファイル内のホスト名を実際のものに置き換え、それらが ClickHouse サーバー ノードおよび Keeper ノードから名前解決できることを確認してください
- ファイルを所定の場所にコピーしてください (各 Keeper サーバーでは
/etc/clickhouse-keeper/keeper_config.xml) - 各マシンで、
raft_configuration内のエントリ番号に基づいてserver_idを編集してください
/etc/clickhouse-keeper/keeper_config.xml
ClickHouse server の設定
ベストプラクティスこのガイドの一部の手順では、設定ファイルを
/etc/clickhouse-server/config.d/ に配置する必要があります。これは、Linux システムで設定の上書きファイルを配置する既定の場所です。これらのファイルをこのディレクトリに配置すると、ClickHouse はその内容をデフォルト設定にマージします。これらのファイルを config.d ディレクトリに配置しておけば、アップグレード時に設定が失われるのを防げます。ネットワーク
/etc/clickhouse-server/config.d/network.xml
リモート ClickHouse Keeper サーバー
- ホスト名を使用する Keeper ホストに合わせて編集します
/etc/clickhouse-server/config.d/use-keeper.xml
リモート ClickHouse サーバー
remote_servers エントリに replace="true" タグを追加します。これにより、この設定をデフォルト設定とマージした際、remote_servers セクションに追記するのではなく、そのセクション全体を置き換えるようになります。
- ホスト名に合わせてファイルを編集し、それらが ClickHouse サーバーノードから名前解決できることを確認してください
/etc/clickhouse-server/config.d/remote-servers.xml
レプリカの識別
replica_1、もう片方のサーバーでは replica_2 と指定する必要があります。名前は変更可能です。たとえば、一方のレプリカを South Carolina に、もう一方を Northern Virginia に保存する場合、値は carolina と virginia にできます。ただし、各マシンで異なる名前を指定してください。
/etc/clickhouse-server/config.d/macros.xml
GCS のストレージ
disks と policies が含まれます。以下で構成するディスクは gcs という名前で、type は s3 です。type が s3 なのは、ClickHouse が GCS バケットを AWS S3 バケットのように扱ってアクセスするためです。この構成は 2 つ必要で、それぞれの ClickHouse サーバー ノードに 1 つずつ配置します。
以下の構成では、次の置換を行ってください。
これらの置換は、2 つの ClickHouse サーバー ノードで異なります。
REPLICA 1 BUCKETは、server と同じリージョンにあるバケット名に設定してくださいREPLICA 1 FOLDERは、一方の server ではreplica_1に、もう一方ではreplica_2に変更してください
access_key_idは、先ほど生成した HMAC Key に設定してくださいsecret_access_keyは、先ほど生成した HMAC Secret に設定してください
/etc/clickhouse-server/config.d/storage.xml
ClickHouse Keeper を起動する
ClickHouse Keeper のステータスを確認する
netcat を使って ClickHouse Keeper にコマンドを送信します。たとえば、mntr は ClickHouse Keeper クラスターの状態を返します。各 Keeper ノードでこのコマンドを実行すると、1 つが leader、残り 2 つが followers であることを確認できます。
ClickHouseサーバーを起動する
chnode1 と chnode で次を実行します:
確認
ディスク設定を確認する
system.disks には、各ディスクのレコードが含まれているはずです。
- default
- gcs
- cache
クラスターで作成したテーブルが両方のノードに作成されていることを確認する
データを挿入できることを確認する
テーブルでストレージポリシー gcs_main が使用されていることを確認します。
Google Cloud Console で確認する
storage.xml の設定ファイルで使用した名前のフォルダが作成されていることがわかります。フォルダを展開すると、データのパーティションを表す多数のファイルが表示されます。