メインコンテンツまでスキップ

グローバルクラスターに接続する

この機能は、Business Critical(SaaS)および BYOC デプロイでのみ利用できます。

この機能は、すべての AWS リージョン、および次の Google Cloud リージョンで利用できます:gcp-us-central1 および gcp-us-east4。Microsoft Azure では利用できません。

グローバルクラスターが稼働したら、エンドポイントと認証トークンを使用して接続します。このページでは、2 種類のエンドポイント、それぞれの使用場面、およびスイッチオーバーとフェイルオーバー時のルーティングの動作について説明します。

エンドポイントタイプを選択する​

グローバルクラスターには、次の 2 つの接続方法があります:

  • グローバルエンドポイント経由

  • グローバルクラスター内のプライマリクラスターまたはセカンダリクラスターの パブリックまたはプライベートエンドポイント経由

次の表で、2 つの接続エンドポイントを比較します。

グローバルエンドポイントプライマリまたはセカンダリクラスターのエンドポイント
書き込みルーティングプライマリクラスターに自動的にルーティングされますプライマリのパブリックエンドポイントのみが書き込みを受け付けます
読み取りルーティングプライマリクラスターにルーティングされます
(レイテンシに基づいて、利用可能な最も近いクラスターへのインテリジェントルーティングが近日中にサポートされる予定です。)
接続先の特定のクラスターに読み取りがルーティングされます
スイッチオーバー / フェイルオーバー自動的に再ルーティングされます — コードの変更は不要です新しいプライマリを指すように接続を更新する必要があります
Private Linkサポートされていません(パブリックインターネットが必要です)サポートされています。
最適な用途自動フェイルオーバーとレイテンシに基づくルーティングを必要とする本番アプリケーション特定のクラスターへの直接アクセス(例:環境のレプリケーション、テスト、デバッグ)
Notes

本番ワークロードにはグローバルエンドポイントの使用をお勧めします。これにより、スイッチオーバーやフェイルオーバー時にアプリケーションコードでエンドポイントの変更を処理する必要がなくなります。

エンドポイントとトークンを取得する​

1

グローバルクラスターまたはターゲットクラスターに移動します:

  • グローバルエンドポイントの場合:Global Cluster ページに移動します。

  • パブリックエンドポイントの場合:特定のプライマリクラスターまたはセカンダリクラスターの Cluster Details ページに移動します。

2

Connect カードで、Global Endpoint または Public Endpoint をコピーします。

OPCTbMaYIoUXHKxDf0ycdMNBnze

3

認証トークンを準備します。これは API キー または クラスター認証情報(username:password)のいずれかです。

グローバルエンドポイントを使用して接続する​

グローバルエンドポイントは、常にグローバルクラスター内の現在のプライマリクラスターにリクエストをルーティングする単一の URL です。

スイッチオーバーまたはフェイルオーバーが発生すると、Zilliz Cloud はグローバルエンドポイントを自動的に更新し、新しいプライマリクラスターを指すようにします。これにより、クラスター URI を手動で変更することなく、アプリケーションは同じエンドポイントを引き続き使用できます。

Zilliz Cloud は、SDK と RESTful API の両方を通じてグローバルエンドポイントへの接続をサポートしています。本番アプリケーションでは、SDK クライアントの使用をお勧めします。

RESTful API 接続よりも SDK 接続が推奨されるのはなぜですか?

SDK クライアントは、エンドポイントリスト、プライマリとセカンダリのロール、クラスターのヘルスなど、グローバルクラスターのトポロジーを取得できます。この情報を利用して、SDK クライアントはプライマリクラスターが変更されたときに迅速に対応できます。SDK クライアントは今後、read/write 分割もサポートする予定で、書き込みリクエストはプライマリクラスターにルーティングされ、対象となる読み取りリクエストはグローバルクラスターのトポロジーに基づいてルーティングされます。

ただし、RESTful API 接続はグローバルクラスターのトポロジー情報を保持しません。その結果、スイッチオーバーまたはフェイルオーバー後に、RESTful API 接続が新しいプライマリクラスターへ切り替わるまでに時間がかかる場合があります。同じ理由で、RESTful API 接続は read/write 分割をサポートできません。

次の表で、SDK 接続と RESTful API 接続を比較します。

項目SDK 接続RESTful API 接続
最適な用途ロール変更時の迅速な復旧と将来の read/write 分割を必要とする本番アプリケーション。軽量なスクリプト、シンプルな REST 統合、および単発の管理操作。
トポロジーの認識エンドポイントリスト、プライマリとセカンダリのロール、クラスターのヘルスなど、グローバルクラスターのトポロジーを取得します。グローバルクラスターのトポロジー情報を保持しません。
プライマリ変更時の処理スイッチオーバーまたはフェイルオーバー後にプライマリクラスターが変更されたとき、通常は数秒以内に迅速に対応できます。クライアントがトポロジー情報を保持しないため、新しいプライマリへの切り替えに通常は数分かかる場合があります。
read/write 分割 近日中にサポートされる予定です。 サポートされていません

SDK バージョンを確認する​

開始する前に、SDK を インストール 済みであること、および SDK が最小バージョン要件を満たしていることを確認してください。

SDK最小バージョン
Python2.6.9
Java2.6.14

接続ガイド​

python
from pymilvus import MilvusClient

# Use the global endpoint for automatic routing
client = MilvusClient(
uri="YOUR_GLOBAL_ENDPOINT", # Global endpoint from the console
token="YOUR_CLUSTER_TOKEN" # API key or username:password
)

パブリックエンドポイントを使用して接続する​

グローバルクラスター内の各クラスターには、独自のパブリックエンドポイントがあります。特定のクラスターを直接ターゲットにする必要がある場合に使用します。

python
from pymilvus import MilvusClient

# Connect directly to a specific cluster
client = MilvusClient(
uri="YOUR_CLUSTER_PUBLIC_ENDPOINT", # Public endpoint of a specific cluster
token="YOUR_CLUSTER_TOKEN" # API key or username:password
)
Notes

パブリックエンドポイントを使用する場合、書き込み操作を受け付けるのはプライマリクラスターのパブリックエンドポイントのみです。セカンダリクラスターのパブリックエンドポイントに書き込むと失敗します。

ルーティングの動作​

通常運用時​

リクエストタイプグローバルエンドポイントパブリックエンドポイント
書き込み(insert、upsert、delete)プライマリクラスターにルーティングされますプライマリクラスターのエンドポイントでのみ受け付けられます
読み取り(search、query)プライマリクラスターにルーティングされます
(レイテンシに基づいて、利用可能な最も近いクラスターへのインテリジェントルーティングが近日中にサポートされる予定です。)
接続先の特定のクラスターによって処理されます

スイッチオーバー / フェイルオーバー中およびその後​

シナリオグローバルエンドポイントパブリックエンドポイント
スイッチオーバー進行中書き込みは一時的に停止し、その後新しいプライマリで再開します。読み取りは継続します。エンドポイントに変更はありません。以前のプライマリはセカンダリになります。
フェイルオーバー進行中新しいプライマリが昇格するまで書き込みは利用できません。読み取りはセカンダリで継続します。以前のプライマリのエンドポイントに到達できなくなります。
完了後新しいプライマリに自動的にルーティングされます。コードの変更は不要です。書き込みには新しいプライマリのパブリックエンドポイントを使用するようにコードを更新します。

SDK の自動再接続​

グローバルエンドポイントを使用する場合、Zilliz Cloud SDK はスイッチオーバーとフェイルオーバー時のエンドポイント再ルーティングを処理します。アプリケーションは、ルーティング変更自体に対する再試行ロジックを実装する必要はありません。ただし、切り替えの瞬間に実行中だった書き込みでは一時的なエラーが発生する可能性があります — アプリケーションの標準的な再試行ロジックがこれらのケースを処理します。