サービスの安定性を確保するために、複数の Container Service for Kubernetes(ACK)クラスタをピアツーピア方式でデプロイして、高可用性を実現できます。クラウドネイティブ API Gateway インスタンスは、複数の ACK クラスタからのアクセスをサポートしています。インスタンスは複数のクラスタに関連付けられ、同じ名前のサービスを組み合わせ、複数のサービス間で負荷分散を実装します。この機能をクラウドネイティブ API Gateway のヘルスチェック機能と併用することで、サービスの可用性を自動的に検出し、障害発生時の自動トラフィック切り替えを効率的に実装できます。このトピックでは、クラウドネイティブ API Gateway インスタンスを使用して複数の ACK クラスタを管理する方法について説明します。
前提条件
2 つの ACK クラスタが作成されていること。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
2 つの ACK クラスタに同じ名前のサービスがデプロイされていること。次のサンプルコードは、
httpbinという名前のサービスに使用されます。
背景
本番環境では、ビジネスの安定性が高いことが求められる場合、複数の ACK クラスタをピアツーピア方式でデプロイして、高可用性を確保できます。たとえば、クラスタ A はゾーン A にデプロイされ、クラスタ B はゾーン B にデプロイされます。同じサービスが 2 つのクラスタにデプロイされます。1 つのクラスタで障害が発生した場合、トラフィックは別のクラスタのサービスに切り替えられます。
クラウドネイティブ API Gateway は、ビジネスの高可用性デプロイメント要件を満たすために、マルチクラスタアクセス機能を提供します。クラウドネイティブ API Gateway インスタンスがクラスタ A とクラスタ B の両方に関連付けられている場合、インスタンスは 2 つのクラスタ内の同じ名前のサービスを 1 つのサービスに結合します。結合されたサービスの名前は元のサービス名と同じですが、結合されたサービスの IP アドレスリストには、2 つのサービスのすべての IP アドレスが含まれます。クラスタ A または B で障害が発生した場合、すべてのトラフィックはインスタンスのルーティング機能を使用して正常なクラスタに自動的に分散されます。この機能は、インスタンスのアクティブヘルスチェック機能と併用することをお勧めします。アクティブヘルスチェック機能により、インスタンスはサービスの IP アドレスの可用性をアクティブに検出できます。これは、自動トラフィック切り替えの実装に役立ちます。
次の図では、クラウドネイティブ API Gateway インスタンスが 2 つの ACK クラスタのサービス A とサービス B を管理しています。クラスタ B でクラッシュが発生した場合でも、インスタンスを使用してクラスタ A のサービス A とサービス B にアクセスできます。すべてのトラフィックは、人手を介さずにクラスタ A に自動的に切り替えられます。

手順 1:クラウドネイティブ API Gateway インスタンスに ACK サービスソースを追加する
クラウドネイティブ API Gateway コンソール にログインします。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。
左側のナビゲーションツリーで、[サービス] をクリックします。次に、[ソース] タブをクリックします。
[ソースの作成] をクリックします。[ソースの作成] パネルで、[ソースタイプ] の下にある [ACK] を選択し、プロンプトに従ってパラメータを設定します。次に、[OK] をクリックします。詳細については、「サービスソースを追加する」をご参照ください。

手順 2:クラウドネイティブ API Gateway インスタンスにサービス A とサービス B を追加する
クラウドネイティブ API Gateway コンソール にログインします。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。上部のナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。
左側のナビゲーションツリーで、[サービス] をクリックします。次に、[サービス] タブをクリックします。
[サービス] タブで、[サービスの作成] をクリックします。[サービスの作成] パネルで、[サービスソース] を [ACK] に設定し、[名前空間] パラメータと [サービス] パラメータを指定して、[OK] をクリックします。詳細については、「サービスを作成する」をご参照ください。

手順 3:クラウドネイティブ API Gateway インスタンスのサービスにルーティングルールを追加する
HTTP API を作成します。詳細については、「HTTP API を作成する」をご参照ください。
ターゲット API をクリックし、左上隅にある [ルートの作成] をクリックします。
[ルートの作成] パネルで、パラメータを設定し、[保存して公開] をクリックします。詳細については、「ルートを作成する」をご参照ください。

結果の確認
クラスタ A とクラスタ B が正常な場合
[サービス] タブで、サービスの IP アドレスを表示します。
2 つの IP アドレスが表示されます。

クラウドネイティブ API Gateway インスタンスに複数回アクセスします。次のコードは、2 つの異なるホスト名が返されることを示しています。
curl <インスタンスエンドポイント>/version
クラスタ A で障害が発生した場合
クラスタ A から httpbin サービスを削除します。
この場合、次の図に示すように、使用可能な IP アドレスは 1 つだけです。

クラウドネイティブ API Gateway インスタンスに複数回アクセスします。次のコードは、1 つのホスト名のみが返されることを示しています。
curl <インスタンスエンドポイント>/version