Azure Private Link
Azure Private LinkはClickHouse CloudのProductionサービスにのみ有効化できます。Developmentサービスはサポートされていません。
このガイドでは、Azure Private Linkを使用して、Azure(顧客所有およびMicrosoftパートナーサービスを含む)とClickHouse Cloudとの間に仮想ネットワーク経由でプライベート接続を提供する方法を示します。Azure Private Linkはネットワークアーキテクチャを簡素化し、パブリックインターネットへのデータ露出を排除することで、Azure内のエンドポイント間の接続を安全にします。

AWSやGCPとは異なり、AzureはPrivate Linkを介したクロスリージョン接続をサポートしています。これにより、異なるリージョンにデプロイされたClickHouseサービス間で、VNet間の接続を確立できます。
リージョン間のトラフィックには追加料金が発生する場合があります。最新のAzureドキュメントを確認してください。
Azure Private Linkを有効にするために、以下の手順を完了してください。
- Private Link用のAzure接続エイリアスを取得する
- Azureにプライベートエンドポイントを作成する
- プライベートエンドポイントのGUIDをClickHouse Cloud組織に追加する
- プライベートエンドポイントのGUIDをサービスの許可リストに追加する
- プライベートリンクを使用してClickHouse Cloudサービスにアクセスする
Azure Private Linkの完全なTerraform例については、こちらを参照してください。
Private Link用のAzure接続エイリアスを取得する
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLinkを介して接続したいサービスを開き、設定メニューを開きます。プライベートエンドポイントを設定ボタンをクリックします。プライベートリンクのセットアップに使用されるサービス名をコピーします。

オプション2: API
始める前に、ClickHouse Cloud APIキーが必要です。新しいキーを作成するか、既存のキーを使用できます。プライベートリンク構成を管理するには、Adminキーが必要であることに注意してください。
APIキーを取得したら、コマンドを実行する前に以下の環境変数を設定します:
リージョンからインスタンスIDを取得します:
指定されたリージョンに少なくとも1つのClickHouse Cloudサービスが展開されている必要があります。
前の手順で受け取ったIDを使用して、INSTANCE_ID
環境変数を作成します:
Private Link用のAzure接続エイリアスとプライベートDNSホスト名を取得します:
endpointServiceId
をメモしておきます。この値は次のステップで使用します。
Azureにプライベートエンドポイントを作成する
このセクションでは、Azureにプライベートエンドポイントを作成します。AzureポータルまたはTerraformを使用できます。
オプション1: Azureポータルを使用してプライベートエンドポイントを作成する
Azureポータルで、プライベートリンクセンター → プライベートエンドポイントを開きます。

作成ボタンをクリックして、プライベートエンドポイント作成ダイアログを開きます。

次の画面では、以下のオプションを指定します:
- サブスクリプション / リソースグループ: プライベートエンドポイント用のAzureサブスクリプションとリソースグループを選択してください。
- 名前: プライベートエンドポイントの名前を設定します。
- リージョン: Private Linkを介してClickHouse Cloudに接続されるVNetが展開されているリージョンを選択します。
上記の手順を完了したら、次へ: リソースボタンをクリックします。

Azureリソースに、リソースIDまたはエイリアスで接続のオプションを選択します。
リソースIDまたはエイリアスには、Private Link用のAzure接続エイリアスを取得するステップで取得したendpointServiceId
を使用してください。
次へ: 仮想ネットワークボタンをクリックします。

- 仮想ネットワーク: Private Linkを使用してClickHouse Cloudに接続したいVNetを選択してください
- サブネット: プライベートエンドポイントが作成されるサブネットを選択してください
オプション:
- アプリケーションセキュリティグループ: プライベートエンドポイントにASGを添付して、プライベートエンドポイントへのネットワークトラフィックをフィルタリングするためにネットワークセキュリティグループで使用できます。
次へ: DNSボタンをクリックします。

次へ: タグボタンをクリックします。

オプションで、プライベートエンドポイントにタグを添付できます。
次へ: レビュー + 作成ボタンをクリックします。

最後に、作成ボタンをクリックします。

作成されたプライベートエンドポイントの接続状況は保留中の状態になります。サービスの許可リストにこのプライベートエンドポイントを追加すると、承認済みの状態に変更されます。
プライベートエンドポイントに関連付けられたネットワークインターフェイスを開き、プライベートIPv4アドレス(この例では10.0.0.4)をコピーします。この情報は次の手順で必要になります。

オプション2: Terraformを使用してAzureにプライベートエンドポイントを作成する
Terraformを使用してプライベートエンドポイントを作成するには、以下のテンプレートを使用してください:
プライベートエンドポイントの resourceGuid
を取得する
Private Linkを使用するには、プライベートエンドポイント接続GUIDをサービスの許可リストに追加する必要があります。
プライベートエンドポイントリソースGUIDはAzureポータルでのみ表示されます。前のステップで作成されたプライベートエンドポイントを開き、JSONビューをクリックします:

プロパティの下にあるresourceGuid
フィールドを見つけ、この値をコピーします:

Private Link用DNSの設定
Private Linkを介してリソースにアクセスするには、プライベートDNSゾーン(${location_code}.privatelink.azure.clickhouse.cloud
)を作成し、VNetにアタッチする必要があります。
プライベートDNSゾーンを作成する
オプション1: Azureポータルを使用する
以下のガイドに従って、Azureポータルを使用してAzureプライベートDNSゾーンを作成してください。
オプション2: Terraformを使用する
プライベートDNSゾーンを作成するための以下のTerraformテンプレートを使用してください:
ワイルドカードDNSレコードを作成する
ワイルドカードレコードを作成し、プライベートエンドポイントを指すようにします。
オプション1: Azureポータルを使用する
MyAzureResourceGroup
リソースグループを開き、${region_code}.privatelink.azure.clickhouse.cloud
プライベートゾーンを選択します。-
- レコードセットを選択します。
- 名前に
*
を入力します。 - IPアドレスに、プライベートエンドポイントのIPアドレスを入力します。
- OKを選択します。

オプション2: Terraformを使用する
ワイルドカードDNSレコードを作成するための以下のTerraformテンプレートを使用してください:
仮想ネットワークリンクを作成する
プライベートDNSゾーンを仮想ネットワークにリンクするには、仮想ネットワークリンクを作成する必要があります。
オプション1: Azureポータルを使用する
以下のガイドに従って、プライベートDNSゾーンに仮想ネットワークをリンクしてください。
オプション2: Terraformを使用する
仮想ネットワークをプライベートDNSゾーンにリンクするための以下のTerraformテンプレートを使用してください:
DNS設定を確認する
westus3.privatelink.azure.clickhouse.cloud
ドメイン内の任意のレコードは、プライベートエンドポイントIPにポイントされるべきです。(この例では10.0.0.4)。
プライベートエンドポイント_GUID_をClickHouse Cloud組織に追加する
オプション1: ClickHouse Cloudコンソール
エンドポイントを組織に追加するには、サービスの許可リストにプライベートエンドポイントGUIDを追加します手順に進みます。ClickHouse Cloudコンソールを使用してプライベートエンドポイントGUID
をサービスの許可リストに追加すると、自動的に組織にも追加されます。
エンドポイントを削除するには、組織の詳細 -> プライベートエンドポイントを開き、削除ボタンをクリックしてエンドポイントを削除します。

オプション2: API
コマンドを実行する前に、以下の環境変数を設定します:
プライベートエンドポイントの resourceGuid
を取得する ステップからのデータを使用して、VPC_ENDPOINT
環境変数を設定します。
プライベートエンドポイントを追加するために次のコマンドを実行します:
プライベートエンドポイントを削除するためのコマンドも実行できます:
プライベートエンドポイントを追加または削除した後、次のコマンドを実行して組織に適用します:
サービスの許可リストにプライベートエンドポイント_GUID_を追加する
デフォルトでは、プライベートリンク接続が承認され、確立されていても、ClickHouse Cloudサービスはプライベートリンク接続を介して利用できません。プライベートリンクを使用して利用可能にする各サービスにプライベートエンドポイントGUIDを明示的に追加する必要があります。
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLink経由で接続したいサービスを開き、設定に移動します。 前のステップで取得したエンドポイントID
を入力します。
既存のプライベートリンク接続からのアクセスを許可したい場合は、既存のエンドポイントドロップダウンメニューを使用してください。

オプション2: API
コマンドを実行する前に、以下の環境変数を設定します:
プライベートリンクを使用して利用可能な各サービスに対して実行します。
プライベートエンドポイントをサービスの許可リストに追加するためのコマンドを実行します:
サービスの許可リストからプライベートエンドポイントを削除するためのコマンドを実行できます:
サービスの許可リストにプライベートエンドポイントを追加または削除した後、次のコマンドを実行して組織に適用します:
プライベートリンクを使用してClickHouse Cloudサービスにアクセスする
プライベートリンクが有効化されている各サービスには、公開エンドポイントとプライベートエンドポイントがあります。プライベートリンクを介して接続するには、privateDnsHostname
であるプライベートエンドポイントを使用する必要があります。
プライベートDNSホスト名は、Azure VNetからのみ利用可能です。Azure VNetの外部にあるマシンからDNSホストを解決しようとしないでください。
プライベートDNSホスト名を取得する
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、設定に移動します。プライベートエンドポイントを設定ボタンをクリックします。開いたフライアウトで、DNS名をコピーします。

オプション2: API
コマンドを実行する前に、以下の環境変数を設定します:
次のコマンドを実行します:
次のようなレスポンスが返されます:
この例では、xxxxxxx.region_code.privatelink.azure.clickhouse.cloud
ホスト名への接続はプライベートリンクにルーティングされます。一方、xxxxxxx.region_code.azure.clickhouse.cloud
はインターネット経由でルーティングされます。
プライベートリンクを使用してClickHouse Cloudサービスに接続するには、privateDnsHostname
を使用します。
トラブルシューティング
DNS設定をテストする
${region_code}.privatelink.azure.clickhouse.cloud.
ゾーン内のすべてのDNSレコードは、Azureにプライベートエンドポイントを作成するステップの内部IPアドレスを指すべきです。この例では、リージョンはwestus3
です。
次のコマンドを実行します:
次のようなレスポンスを受け取るべきです:
ピアによる接続リセット
おそらく、プライベートエンドポイントGUIDがサービスの許可リストに追加されていません。_サービスの許可リストにプライベートエンドポイントGUIDを追加する_ステップを再確認してください。
プライベートエンドポイントが保留中の状態にある
おそらく、プライベートエンドポイントGUIDがサービスの許可リストに追加されていません。_サービスの許可リストにプライベートエンドポイントGUIDを追加する_ステップを再確認してください。
接続をテストする
プライベートリンク接続で問題が発生している場合は、openssl
を使用して接続を確認してください。プライベートリンクエンドポイントの状態がAccepted
であることを確認してください。
OpenSSLが接続できるはずです(出力に「CONNECTED」が表示されます)。errno=104
は期待されるものです。
プライベートエンドポイントフィルターの確認
コマンドを実行する前に、以下の環境変数を設定します:
次のコマンドを実行してプライベートエンドポイントフィルターを確認します:
さらなる情報
Azure Private Linkに関する詳細情報は、azure.microsoft.com/en-us/products/private-linkをご覧ください。