Azure Private Link
Azure Private Link is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
このガイドでは、Azure Private Linkを使用して、Azure(顧客所有およびMicrosoftパートナーサービスを含む)とClickHouse Cloudの間で仮想ネットワークを介したプライベート接続を提供する方法を示します。Azure Private Linkは、ネットワークアーキテクチャを簡素化し、公開インターネットへのデータ露出を排除することで、Azure内のエンドポイント間の接続を安全にします。

AWSやGCPとは異なり、AzureはPrivate Linkを介してのリージョン間接続をサポートしています。これにより、異なるリージョンに配置されているVNet間でClickHouseサービスとの接続を確立できます。
リージョン間のトラフィックには追加料金がかかる場合があります。最新のAzureドキュメントをご確認ください。
Azure Private Linkを有効にするために、次の手順を完了してください:
- Private LinkのAzure接続エイリアスを取得します
- Azureでプライベートエンドポイントを作成します
- プライベートエンドポイントGUIDをClickHouse Cloud組織に追加します
- プライベートエンドポイントGUIDをサービスの許可リストに追加します
- プライベートリンクを使用してClickHouse Cloudサービスにアクセスします
注意
ClickHouseは、Azureリージョン内で同じ公開されたPrivate Linkサービスを再利用するために、サービスをグループ化しようとします。ただし、このグループ化は保証されておらず、特にサービスを複数のClickHouse組織に分散させている場合は特にそうです。 すでにClickHouse組織内で他のサービスのためにPrivate Linkが設定されている場合、そのグループ化のために大部分の手順をスキップし、最終手順であるプライベートエンドポイントGUIDをサービスの許可リストに追加に直接進むことができます。
ClickHouseのTerraformプロバイダリポジトリでTerraformの例を見つけてください。
Azure接続エイリアスを取得する
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLinkを介して接続したいサービスを開き、設定メニューを開きます。プライベートエンドポイントを設定ボタンをクリックします。Private Linkの設定に使用するサービス名
およびDNS名
をメモしておきます。

サービス名
およびDNS名
をメモしておいてください。次のステップで必要になります。
オプション2: API
始める前に、ClickHouse Cloud APIキーが必要です。新しいキーを作成するか、既存のキーを使用できます。
APIキーが手に入ったら、コマンドを実行する前に次の環境変数を設定します:
地域、プロバイダ、サービス名でフィルタリングしてClickHouseのINSTANCE_ID
を取得します:
Private Link用のAzure接続エイリアスとプライベートDNSホスト名を取得します:
endpointServiceId
をメモしておきます。次のステップで使用します。
Azureでプライベートエンドポイントを作成する
このセクションでは、Azure Private Linkを介してClickHouseを構成するためのClickHouse特有の詳細をカバーしています。Azure特有の手順は参照用に提供されており、どこを見れば良いかのガイドとなりますが、Azureクラウドプロバイダからの通知なしに時間と共に変更される可能性があります。特定のユースケースに基づいてAzure構成を検討してください。
ClickHouseは、必要なAzureプライベートエンドポイントやDNSレコードの構成について責任を負いません。
Azure構成タスクに関する問題は、Azureサポートに直接連絡してください。
このセクションでは、Azureでプライベートエンドポイントを作成します。AzureポータルまたはTerraformを使用できます。
オプション1: Azureポータルを使用してAzureでプライベートエンドポイントを作成する
Azureポータルで、プライベートリンクセンター → プライベートエンドポイントを開きます。

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

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

AzureリソースのIDまたはエイリアスで接続オプションを選択します。
リソースIDまたはエイリアスには、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
フィールドを見つけ、この値をコピーします:

プライベートリンク用のDNSを設定する
プライベートリンクを介してリソースにアクセスするために、プライベート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を設定する方法はいくつかあります。特定のユースケースに基づいてDNSを設定してください。
Azure接続エイリアスを取得するステップから取得した"DNS名"をプライベートエンドポイントのIPアドレスにポイントする必要があります。これにより、VPC/ネットワーク内のサービスやコンポーネントが適切に解決できるようになります。
DNS設定を確認する
xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud
ドメインはプライベートエンドポイントのIPにポイントされる必要があります。(この例では10.0.0.4)
プライベートエンドポイントGUIDをClickHouse Cloud組織に追加する
オプション1: ClickHouse Cloudコンソール
組織にエンドポイントを追加するには、プライベートエンドポイントGUIDをサービスの許可リストに追加するステップに進みます。ClickHouse Cloudコンソールを使用してプライベートエンドポイントGUID
をサービスの許可リストに追加すると、自動的に組織にも追加されます。
エンドポイントを削除するには、組織の詳細 -> プライベートエンドポイントを開き、削除ボタンをクリックしてエンドポイントを削除します。

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

オプション2: API
コマンドを実行する前に次の環境変数を設定します:
プライベートリンクを使用して利用可能な各サービスについて実行します。
プライベートエンドポイントをサービスの許可リストに追加するために次のコマンドを実行します:
サービスの許可リストからプライベートエンドポイントを削除するために次のコマンドを実行することもできます:
サービスの許可リストにプライベートエンドポイントを追加または削除した後、次のコマンドを実行して組織に適用します:
プライベートリンクを使用してClickHouse Cloudサービスにアクセスする
プライベートリンクが有効な各サービスには、公開エンドポイントとプライベートエンドポイントがあります。プライベートリンクを介して接続するには、Azure接続エイリアスを取得するから取得したprivateDnsHostname
APIまたは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設定をテストする
次のコマンドを実行します:
ここで「dns名」はAzure接続エイリアスを取得するからのprivateDnsHostname
APIまたはDNS名
コンソールです。
次のような応答を受け取るはずです:
接続がリセットされた
おそらく、プライベートエンドポイントGUIDがサービスの許可リストに追加されていません。_プライベートエンドポイントGUIDをサービスの許可リストに追加する_ステップを再確認してください。
プライベートエンドポイントが保留中の状態
おそらく、プライベートエンドポイントGUIDがサービスの許可リストに追加されていません。_プライベートエンドポイントGUIDをサービスの許可リストに追加する_ステップを再確認してください。
接続をテストする
プライベートリンクを介して接続する際に問題がある場合は、openssl
を使用して接続を確認してください。プライベートリンクエンドポイントのステータスが受理済み
であることを確認します。
OpenSSLは接続できるはずです(出力にCONNECTEDと表示されます)。errno=104
は予想されることです。
プライベートエンドポイントフィルタを確認する
コマンドを実行する前に次の環境変数を設定します:
プライベートエンドポイントフィルタを確認するために次のコマンドを実行します:
更なる情報
Azure Private Linkに関する詳細情報については、azure.microsoft.com/en-us/products/private-linkをご覧ください。