クラスター接続の準備
すべての BYOC クラスターは、お客様の仮想ネットワーク(AWS VPC、GCP VPC、または Microsoft Azure VNet)上で完全にホストされており、パブリックエンドポイント は持ちません。本ガイドでは、これらの BYOC クラスターに接続するための 2 つのアプローチについて説明します。
クラウドプロバイダーが使用する用語とその同等語
本ガイドは、クラウドプロバイダーに関係なく、すべての BYOC クラスターに適用されます。用語の違いに対処し、説明を簡素化するため、本ガイドで使用される用語と、各プロバイダーで使用される用語との対応関係を以下に示します。
規約 | AWS | GCP | Azure |
|---|---|---|---|
仮想ネットワーク | VPC | VPC | VNet |
Security group | Security group | Firewall rules | ネットワーク Security Group (NSG) |
Load balancer | ネットワーク Load Balancer (NLB) | Cloud Load Balancer | Load Balancer |
プライベート endpoint | プライベートLink | プライベート Service Connect (PSC) | プライベート Link |
仮想ネットワーク endpoint | VPC Endpoint | PSC Endpoint | プライベート Endpoint |
仮想ネットワーク endpoint service | VPC Endpoint Service | PSC Publishing | プライベート Link Service |
利用可能な接続モード
BYOC クラスターには、以下のいずれかのモードで接続できます。
-
このモードでは、BYOC クラスターと対話するクライアント(通常はアプリケーション)が、BYOC クラスターと同じ仮想ネットワーク内に存在します。このモードはデフォルトの選択肢であり、追加のネットワーク設定は不要です。
これを使用するには、データプレーンのデプロイ中に private endpoint の選択を外してください。
-
このモードでは、クライアントが複数の仮想ネットワークにまたがって存在したり、異なるアカウントに存在したりする可能性があります。これには一度の設定が必要ですが、private endpoint を構築 once すれば、新しいクラスターの追加や追加のクライアント仮想ネットワークへの接続が容易になります。
これを使用するには、データプレーンのデプロイ中に private endpoint を有効にしてください。
以下の表は、これらの 2 つのモードを設定の複雑さ、可用性、クラスターごとのアクセス制御、クロスアカウントサポート、およびマルチ仮想ネットワークのスケーラビリティの観点から比較したものです。
Mode 1: Direct VPC Access | Mode 2: プライベートLink Access | |
|---|---|---|
Best for | Clients in the same VPC as the data plane | Clients in multiple VPCs or different accounts |
Setup complexity | Low — works by default after deployment | One-time setup; simpler to scale as 新しいクラスターs are added, automatically accessible via wildcard DNS |
Availability | Default for all BYOC deployments | Currently requires contacting Zilliz Support to enable (self-service coming soon) |
Per-cluster access control | Security Group per cluster load balancer | Kubernetes Envoy Gateway SecurityPolicy |
Cross-account support | No | Yes |
Multi-virtual-network scalability | Low — each new client VPC requires a separate VPC Peering and routing configurations. | High — new client VPCs connect via a single Endpoint Service; 新しいクラスターs are reachable immediately. |
Direct VPC access
各 BYOC クラスターは実際には Kubernetes クラスターであり、エントリーポイントとしてロードバランサーを公開しています。ロードバランサーは、受信トラフィックをポート 19530 でクラスターに転送します。Zilliz はパブリックホストゾーン経由で クラスターエンドポイント を管理しているため、クライアントがロードバランサーに対してレイヤー 3 接続を確立していれば、任意のネットワークからトラフィックを解決できます。

上記の図は、クライアントアプリケーションから BYOC クラスターへのトラフィックフローを示しており、クラスター固有のロードバランサーがトラフィックを各クラスター内の Milvus プロキシ に転送します。各クラスターには独自のロードバランサーがあるため、クラスターレベルのアクセス制御を実装できます。
前提条件
-
クライアントアプリケーションが、BYOC プロジェクトのデータプレーンと同じ仮想ネットワーク内で実行されているか、あるいはクライアント仮想ネットワークとデータプレーン仮想ネットワークが、適切なルートテーブルエントリを持つ仮想ネットワークピアリングによって接続されていること。
-
クライアントに関連付けられたセキュリティグループが、データプレーン仮想ネットワークセグメントに対するポート 19530 でのアウトバウンドトラフィックを許可していること。
-
データプレーンのセキュリティグループが、クライアントのネットワークセグメントまたはセキュリティグループからのポート 19530 でのインバウンドトラフィックを許可していること。
ステップ 1: クラスターエンドポイントを取得する
Zilliz Cloud console を開きます。
BYOC プロジェクトに移動し、クラスターを選択します。
クラスターの詳細 ページで、Connect カードを見つけます。
クラスターエンドポイント をコピーします。形式は <i>http</i>s://${cluster-id}-internal.${region}.byoc.vectordb.zillizcloud.com:19530 です。
Terraform を使用してデプロイされた BYOC クラスターの場合、Terraform の出力からエンドポイントを取得することもできます。
ステップ 2: クラスターに接続する
次に、コピーしたクラスターエンドポイントと認証情報を使用してクラスターに接続できます。詳細については、Connect to Cluster を参照してください。
プライベート endpoint access
BYOC プロジェクトのデータプレーンをデプロイする際に private endpoint を有効にした場合、単一のロードバランサーのエントリーポイントを持つ共有ゲートウェイがデータプレーン仮想ネットワーク内にデプロイされます。このゲートウェイは TLS を終端し、リクエストのホスト名に基づいてトラフィックを正しいクラスターにルーティングします。
この場合、ロードバランサーを仮想ネットワークエンドポイントとして公開する必要があります。これにより、他のクラウドプロバイダーアカウント内にあるものを含む、任意の数のクライアント仮想ネットワークが、そのエンドポイントを介して BYOC クラスターに接続できるようになります。

上記の図に示すように、クライアントアプリケーションと BYOC クラスター間のトラフィックは、クライアント仮想ネットワーク内の仮想ネットワークエンドポイント、仮想ネットワークエンドポイントサービス、Zilliz Gateway として機能するデータプレーン仮想ネットワーク内の共有ロードバランサー、クラスター固有の TLS 終端ゲートウェイ、そして各クラスター内の Milvus プロキシ を通過します。
クラスターエンドポイント (*.${region}.byoc.vectordb.zillizcloud.com) は、Zilliz Cloud によって管理されるパブリックアドレスに解決されます。したがって、各クライアント仮想ネットワークは、ワイルドカードドメインを仮想ネットワークのプライベート IP アドレスに向ける DNS レコードを追加することで、DNS 解決を上書きする必要があります。
データプレーンのデプロイ中に private endpoint オプションの選択を外したが、private endpoint アクセスが必要な場合は、データプレーン内でのゲートウェイデプロイを有効にするためにお問い合わせください。
前提条件
-
BYOC プロジェクトがあり、Zilliz テクニカルサポートによってゲートウェイがデプロイされたことが確認されていること。
-
仮想ネットワークエンドポイント、仮想ネットワークエンドポイントサービス、および DNS レコードを管理する権限を持っていること。
-
クライアント仮想ネットワークが、BYOC プロジェクトのデータプレーンと同じリージョンにあること。
ステップ 1: 仮想ネットワークエンドポイントサービスを作成する
- AWS
- GCP
- Azure
データプレーン内のロードバランサーの名前は zilliz-gateway です。クライアント仮想ネットワークがこれに接続できるように、このロードバランサーから仮想ネットワークエンドポイントサービスを作成する必要があります。
利用可能なオプションは 3 つあります。AWS コンソール、AWS CloudShell、または Zilliz が提供する Terraform スクリプトを使用して、仮想ネットワークエンドポイントを作成できます。
AWS コンソール上
VPC コンソールに移動し、プライベートLink and Lattice > Endpoint services を選択します。
Create endpoint service をクリックします。
Load balancer type で、ネットワーク を選択します。
Available load balancers で、zilliz-gateway という名前の NLB を選択します。
アクセス制御の設定に応じて Acceptance required を設定します(自動承認の場合は無効にします)。
Create endpoint service をクリックします。
サービス名(例:com.amazonaws.vpce.${region}.vpce-svc-xxxxxxxxxxxxxxxxx)を控えます。これをすべてのクライアント VPC の所有者と共有します。
AWS CloudShell 内
以下のコマンドを実行して、仮想ネットワークエンドポイントを作成します。
# Get the ARN of the zilliz-gateway NLB
NLB_ARN=$(aws elbv2 describe-load-balancers \
--query "LoadBalancers[?LoadBalancerName=='zilliz-gateway'].LoadBalancerArn" \
--output text)
# Create the endpoint service
aws ec2 create-vpc-endpoint-service-configuration \
--network-load-balancer-arns "$NLB_ARN" \
--no-acceptance-required \
--query "ServiceConfiguration.ServiceName" \
--output text
Terraform の使用
仮想ネットワークエンドポイントを作成するには、以下のコマンドを実行します。
data "aws_lb" "zilliz_gateway" {
name = "zilliz-gateway"
}
resource "aws_vpc_endpoint_service" "zilliz_gateway" {
network_load_balancer_arns = [data.aws_lb.zilliz_gateway.arn]
acceptance_required = false
}
output "endpoint_service_name" {
value = aws_vpc_endpoint_service.zilliz_gateway.service_name
}
ステップ 2: 各クライアント仮想ネットワークに Virtual ネットワーク Endpoint を作成する
- AWS
- GCP
- Azure
AWS コンソール上で
BYOC クラスターに接続する必要のあるすべてのクライアント VPC について、以下の手順を繰り返してください。
VPC コンソールに移動し、プライベートLink and Lattice > Endpoints を選択します。
Create endpoint をクリックします。
Service category で、Other endpoint services を選択します。
ステップ 1 のサービス名を貼り付け、Verify serviceをクリックします。
クライアントアプリケーションが実行されているVPCを選択します。
使用する各アベイラビリティーゾーン内のサブネットを選択します。
ポート 19530 でのインバウンドトラフィックを許可するセキュリティグループを割り当てます。
Create endpoint をクリックします。
エンドポイントのステータスがAvailableになるまで待ちます。
上記で作成した各 VPC エンドポイントについて、各サブネットに割り当てられたプライベート IP アドレスを次のように取得します。
VPC コンソールに移動し、Endpointsをクリックします。
エンドポイントを選択し、サブネットタブに移動します。
各サブネットに記載されているIPアドレスを控えます。これらを A レコードのターゲットとして使用します。
AWS CloudShell 内で
プレースホルダーを実際の値に置き換えてコマンドを実行します。
# Replace with your values
SERVICE_NAME="com.amazonaws.vpce.${region}.vpce-svc-xxxxxxxxxxxxxxxxx"
VPC_ID="vpc-xxxxxxxxxxxxxxxxx"
SUBNET_IDS="subnet-aaa subnet-bbb subnet-ccc"
SECURITY_GROUP_ID="sg-xxxxxxxxxxxxxxxxx"
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--service-name "$SERVICE_NAME" \
--vpc-id "$VPC_ID" \
--subnet-ids $SUBNET_IDS \
--security-group-ids "$SECURITY_GROUP_ID"
Terraform の使用
プレースホルダーを実際の値に置き換えて、コマンドを実行してください。
resource "aws_vpc_endpoint" "zilliz_byoc" {
vpc_id = var.client_vpc_id
service_name = aws_vpc_endpoint_service.zilliz_gateway.service_name
vpc_endpoint_type = "Interface"
subnet_ids = var.client_subnet_ids
security_group_ids = [var.client_security_group_id]
}
ステップ 3: DNS レコードの設定
- AWS
- GCP
- Azure
クラスターエンドポイントドメイン(*.aws-${region}.byoc.vectordb.zillizcloud.com)は、 publicly reachable な Zilliz 管理の IP アドレスに解決されます。これを VPC エンドポイントにリダイレクトするには、VPC 内での DNS 解決を上書きするプライベート Route 53 ホストゾーンを作成する必要があります。
BYOC クラスターに接続する必要のあるすべてのクライアント VPC について、以下の手順を繰り返してください。
Route 53 コンソールを開き、Hosted zones に移動します。
Create hosted zone をクリックします。
Domain name を aws-${region}.byoc.vectordb.zillizcloud.com に設定します(${region} をお使いの AWS リージョンに置き換えてください。例:aws-us-west-2.byoc.vectordb.zillizcloud.com)。
Type を プライベート hosted zone に設定します。
クライアント VPC に関連付けます。
Create hosted zone をクリックします。
ホストゾーン内で、Create record をクリックします。
Record name を *(ワイルドカード)に設定します。
Record type を A に設定します。
上記のエンドポイント IP アドレスを入力します(マルチ値を使用する場合は 1 行に 1 つずつ入力します)。
Create records をクリックします。
AWS CloudShell 内で
プレースホルダーを実際の値に置き換えて、コマンドを実行してください。
REGION="us-west-2"
VPC_ID="vpc-xxxxxxxxxxxxxxxxx"
HOSTED_ZONE_NAME="aws-${REGION}.byoc.vectordb.zillizcloud.com"
ENDPOINT_IPS='["10.0.1.x", "10.0.2.x", "10.0.3.x"]' # Replace with your endpoint IPs
# Create the private hosted zone
HOSTED_ZONE_ID=$(aws route53 create-hosted-zone \
--name "$HOSTED_ZONE_NAME" \
--caller-reference "$(date +%s)" \
--hosted-zone-config "PrivateZone=true" \
--vpc "VPCRegion=${REGION},VPCId=${VPC_ID}" \
--query "HostedZone.Id" \
--output text)
# Add the wildcard A record
aws route53 change-resource-record-sets \
--hosted-zone-id "$HOSTED_ZONE_ID" \
--change-batch "{
\"Changes\": [{
\"Action\": \"CREATE\",
\"ResourceRecordSet\": {
\"Name\": \"*.${HOSTED_ZONE_NAME}\",
\"Type\": \"A\",
\"TTL\": 60,
\"ResourceRecords\": $(echo $ENDPOINT_IPS | jq '[.[] | {\"Value\": .}]')
}
}]
}"
同じホストゾーンに追加の VPC を関連付けるには:
aws route53 associate-vpc-with-hosted-zone \
--hosted-zone-id "$HOSTED_ZONE_ID" \
--vpc "VPCRegion=${REGION},VPCId=${ADDTIONAL_VPC_ID}"
Terraform の使用
プレースホルダーを実際の値に置き換えて、コマンドを実行してください。
locals {
region = "us-west-2"
endpoint_ips = ["10.0.1.x", "10.0.2.x", "10.0.3.x"] # Replace with your endpoint IPs
}
resource "aws_route53_zone" "zilliz_byoc" {
name = "aws-${local.region}.byoc.vectordb.zillizcloud.com"
vpc {
vpc_id = var.client_vpc_id
}
}
resource "aws_route53_record" "zilliz_byoc_wildcard" {
zone_id = aws_route53_zone.zilliz_byoc.zone_id
name = "*.aws-${local.region}.byoc.vectordb.zillizcloud.com"
type = "A"
ttl = 60
records = local.endpoint_ips
}
# Associate additional VPCs if needed
resource "aws_route53_zone_association" "additional_vpc" {
for_each = toset(var.additional_vpc_ids)
zone_id = aws_route53_zone.zilliz_byoc.zone_id
vpc_id = each.value
}
ステップ 4: クラスターへの接続
次に、コピーしたクラスターエンドポイントと認証情報を使用してクラスターに接続できます。詳細については、クラスターへの接続 を参照してください。
トラブルシューティング
以下の表は、準備中に発生する可能性のある一般的な問題の一覧です。
症状 | 考えられる原因 | 解決策 |
|---|---|---|
接続タイムアウト(モード 1) | セキュリティグループがポート 19530 をブロックしている | データプレーンのセキュリティグループでポート 19530 のインバウンドルールを追加するか、クライアントのセキュリティグループでアウトバウンドルールを追加します。 |
接続タイムアウト(モード 2) | DNS がオーバーライドされていない、または VPC エンドポイントが準備できていない | ホストゾーンが正しい VPC に関連付けられているか確認し、エンドポイントのステータスが「Available」であることを確認します |
DNS が誤った IP アドレスに解決される(モード 2) | プライベートホストゾーンがクライアント VPC に関連付けられていない | Route 53 ホストゾーンをすべてのクライアント VPC に関連付けます |
TLS エラー | SDK で | エンドポイント URI が |