すべてのプロダクト
Search
ドキュメントセンター

API Gateway:クラウドネイティブ API Gateway インスタンスを使用した ACK クラスタの管理

最終更新日:Feb 26, 2025

サービスの安定性を確保するために、複数の Container Service for Kubernetes(ACK)クラスタをピアツーピア方式でデプロイして、高可用性を実現できます。クラウドネイティブ API Gateway インスタンスは、複数の ACK クラスタからのアクセスをサポートしています。インスタンスは複数のクラスタに関連付けられ、同じ名前のサービスを組み合わせ、複数のサービス間で負荷分散を実装します。この機能をクラウドネイティブ API Gateway のヘルスチェック機能と併用することで、サービスの可用性を自動的に検出し、障害発生時の自動トラフィック切り替えを効率的に実装できます。このトピックでは、クラウドネイティブ API Gateway インスタンスを使用して複数の ACK クラスタを管理する方法について説明します。

前提条件

  • 2 つの ACK クラスタが作成されていること。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。

  • 2 つの ACK クラスタに同じ名前のサービスがデプロイされていること。次のサンプルコードは、httpbin という名前のサービスに使用されます。

    YAML コンテンツの表示

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: 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 に自動的に切り替えられます。

image

手順 1:クラウドネイティブ API Gateway インスタンスに ACK サービスソースを追加する

  1. クラウドネイティブ API Gateway コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。上部のナビゲーションバーで、リージョンを選択します。

  3. [インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。

  4. 左側のナビゲーションツリーで、[サービス] をクリックします。次に、[ソース] タブをクリックします。

  5. [ソースの作成] をクリックします。[ソースの作成] パネルで、[ソースタイプ] の下にある [ACK] を選択し、プロンプトに従ってパラメータを設定します。次に、[OK] をクリックします。詳細については、「サービスソースを追加する」をご参照ください。

    image

手順 2:クラウドネイティブ API Gateway インスタンスにサービス A とサービス B を追加する

  1. クラウドネイティブ API Gateway コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。上部のナビゲーションバーで、リージョンを選択します。

  3. [インスタンス] ページで、管理するゲートウェイインスタンスの名前をクリックします。

  4. 左側のナビゲーションツリーで、[サービス] をクリックします。次に、[サービス] タブをクリックします。

  5. [サービス] タブで、[サービスの作成] をクリックします。[サービスの作成] パネルで、[サービスソース][ACK] に設定し、[名前空間] パラメータと [サービス] パラメータを指定して、[OK] をクリックします。詳細については、「サービスを作成する」をご参照ください。

    image

手順 3:クラウドネイティブ API Gateway インスタンスのサービスにルーティングルールを追加する

  1. HTTP API を作成します。詳細については、「HTTP API を作成する」をご参照ください。

  2. ターゲット API をクリックし、左上隅にある [ルートの作成] をクリックします。

  3. [ルートの作成] パネルで、パラメータを設定し、[保存して公開] をクリックします。詳細については、「ルートを作成する」をご参照ください。

    image

結果の確認

クラスタ A とクラスタ B が正常な場合

  1. [サービス] タブで、サービスの IP アドレスを表示します。

    2 つの IP アドレスが表示されます。

    image

  2. クラウドネイティブ API Gateway インスタンスに複数回アクセスします。次のコードは、2 つの異なるホスト名が返されることを示しています。

    curl <インスタンスエンドポイント>/version

    image

クラスタ A で障害が発生した場合

  1. クラスタ A から httpbin サービスを削除します。

    この場合、次の図に示すように、使用可能な IP アドレスは 1 つだけです。

    image

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

    curl <インスタンスエンドポイント>/version

    image