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

ステップ 1:クラウドネイティブゲートウェイへの ACK サービスソースの追加
MSE コンソール にログインします。上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーション ウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 [ゲートウェイ] ページで、ゲートウェイの名前をクリックします。
左側のナビゲーションウィンドウで、Routes をクリックします。表示されるページで、[ソース] タブをクリックします。
-
「ソース」タブで、Add Source をクリックします。Add Source パネルでパラメーターを設定し、OK をクリックします。詳細については、「サービスソースの追加」をご参照ください。
サービスソースが作成されると、ソースリストで確認できます。リストには、名前/ID、ソースタイプ、関連情報、Ingress リスニングステータス、変更時刻などの情報が表示されます。また、[編集] または [削除] をクリックしてソースを管理することもできます。
ステップ 2:クラウドネイティブゲートウェイにサービスを追加
左側のナビゲーションウィンドウで、Routes をクリックします。表示されるページで、[サービス] タブをクリックします。
-
[Add Service]タブで、Add Service をクリックします。Add Service パネルで、パラメーターを設定し、OK をクリックします。詳細については、「サービスを追加する」をご参照ください。
サービスが作成されると、サービスリストで [httpbin] サービスを確認できます。ヘルスチェックステータスは [正常] と表示されます。
ステップ 3:クラウドネイティブゲートウェイでのルーティングルールの追加
左側のナビゲーションウィンドウで、Routes をクリックし、[ルート] タブをクリックします。
-
「ルート」タブで、Add Route をクリックします。Add Route ページでパラメーターを設定し、Save and Release をクリックします。詳細については、「ルートの作成」をご参照ください。
ルートが作成されると、新しいルート [testt] がルートリストに表示されます。そのルート条件は /test の完全一致、宛先サービスタイプは [単一サービス]、宛先サービスは [httpbin]、ステータスは [発行済み] です。
結果の検証
クラスター A と B が正常な場合
-
Services タブで、サービスの IP アドレスを表示します。
サービスアドレスリストには 2 つのレコードが含まれています。[httpbin] サービスのヘルスチェックステータスは [正常] で、リストには 2 つの IP アドレス (例:
192.168.xxx.xxx) が表示されます。これは、両方のクラスターがサービスを提供していることを示します。 ゲートウェイに複数回アクセスして、アクセスログを生成します。コード例:
while :; do curl http://<IP address of the SLB instance associated with the gateway>/test ; done-
ゲートウェイのログをクエリして分析します。
MSE コンソール にログオンします。
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 上部のナビゲーションバーで、リージョンを選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
-
左側のナビゲーションペインで、Observation Analysis > Log Center を選択します。 「ログセンター」ページの右上隅で、[ログサービス] を選択します。
検索ボックスに
route_name : test | SELECT COUNT(*) GROUP BY upstream_hostと入力し、[統計/チャート] タブをクリックして結果を表示します。upstream_hostに基づいてクラスター内のサービスの IP アドレスをクエリできます。次の図に示すように、upstream_hostには 2 つの値があります。これは、トラフィックが 2 つの ACK クラスターに均等に分散されていることを示します。mse_gw_access_logLogstore でクエリroute_name : test | SELECT DISTINCT upstream_hostを実行します。[統計/チャート] タブで、2 つのupstream_hostの値192.168.15.82:8080(クラスター A) と192.168.15.52:8080(クラスター B) が表示されます。
クラスター A に障害が発生した場合
-
クラスター A から httpbin サービスを削除します。
この場合、次の図に示すように、利用可能な IP アドレスは 1 つだけになります。
サービス管理コンソールで、[httpbin] サービスの [サービスアドレス] 列には、IP アドレスが 1 つだけ表示されます。
ゲートウェイに複数回アクセスして、アクセスログを生成します。コード例:
while :; do curl http://<IP address of the SLB instance associated with the gateway>/test ; done-
ゲートウェイのログをクエリして分析します。
MSE コンソール にログオンします。
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。 上部のナビゲーションバーで、リージョンを選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
-
左側のナビゲーションペインで、Observation Analysis > Log Center を選択します。[ログセンター] ページの右上隅で、[ログサービス] を選択します。
検索ボックスでクエリ
route_name : test | SELECT COUNT(*) GROUP BY upstream_hostを実行し、[統計/チャート] タブに切り替えて結果を表示します。次の図に示すように、
upstream_hostには値が 1 つしかありません。この値は、クラスター B 内のサービスの IP アドレスを示します。これは、ゲートウェイがすべてのトラフィックをクラスター B に転送することを示します。