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

手順 1:ACK サービスソースをクラウドネイティブゲートウェイに追加する
MSE コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。
左側のナビゲーションペインで、Routes をクリックします。 表示されるページで、[ソース] タブをクリックします。
[ソース] タブで、Add Source をクリックします。 Add Source パネルで、パラメーターを設定し、OK をクリックします。 詳細については、「サービスソースの追加」をご参照ください。

手順 2:サービス A とサービス B をクラウドネイティブゲートウェイに追加する
左側のナビゲーションペインで、Routes をクリックします。 表示されるページで、[サービス] タブをクリックします。
[サービス] タブで、Add Service をクリックします。 Add Service パネルで、パラメーターを設定し、OK をクリックします。 詳細については、「サービスの追加」をご参照ください。

手順 3:クラウドネイティブゲートウェイのサービスのルーティングルールを追加する
左側のナビゲーションペインで、Routes をクリックし、[ルート] タブをクリックします。
[ルート] タブで、Add Route をクリックします。 Add Route ページで、パラメーターを設定し、Save and Release をクリックします。 詳細については、「ルートの作成」をご参照ください。

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

ゲートウェイに複数回アクセスして、アクセスログを生成します。 サンプルコード:
while :; do curl http://<ゲートウェイに関連付けられた SLB インスタンスの IP アドレス>/test ; doneゲートウェイログをクエリして分析します。
MSE コンソール にログインします。
左側のナビゲーションペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 上部のナビゲーションバーで、リージョンを選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
左側のナビゲーションペインで、Observation Analysis > Log Center を選択します。 [ログセンター] ページの右上隅で、[ログサービス] を選択します。

upstream_host に基づいて、クラスター内のサービスの IP アドレスをクエリできます。 次の図に示すように、upstream_host には 2 つの値があります。 これは、トラフィックが 2 つの ACK クラスターに均等に分散されていることを示しています。

クラスター A に障害が発生した場合
クラスター A から httpbin サービスを削除します。
この場合、次の図に示すように、使用可能な IP アドレスは 1 つだけです。

ゲートウェイに複数回アクセスして、アクセスログを生成します。 サンプルコード:
while :; do curl http://<ゲートウェイに関連付けられた SLB インスタンスの IP アドレス>/test ; doneゲートウェイログをクエリして分析します。
MSE コンソール にログインします。
左側のナビゲーションペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 上部のナビゲーションバーで、リージョンを選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
左側のナビゲーションペインで、Observation Analysis > Log Center を選択します。 [ログセンター] ページの右上隅で、[ログサービス] を選択します。

次の図に示すように、upstream_host には 1 つの値しかありません。 この値は、クラスター B 内のサービスの IP アドレスを示しています。 これは、ゲートウェイがすべてのトラフィックをクラスター B に分散していることを示しています。
