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

Container Service for Kubernetes:複数のクラスターを使用したクロスリージョンディザスタリカバリと負荷分散の実装

最終更新日:Nov 21, 2024

ASM (Service Mesh) は、アプリケーションのリージョン間トラフィック分散およびフェイルオーバー機能を提供します。 クロスリージョントラフィック分散機能は、重みに基づいてトラフィックを複数のクラスターにルーティングすることにより、クロスリージョンロード分散を実装します。 クロスリージョンフェイルオーバー機能は、障害のあるリージョンから別のリージョンにトラフィックを転送することにより、クロスリージョンディザスタリカバリを実装します。 このトピックでは、クロスリージョンフェイルオーバーとトラフィック分散機能を使用して、クロスリージョンディザスタリカバリと負荷分散を実装する方法について説明します。 このトピックの例では、Bookinfoアプリケーションが使用されています。

ネットワークを計画する

ASMを使用する前に、ASMのネットワーク設定を完了する必要があります。これには、CIDRブロックとvSwitch、仮想プライベートクラウド (VPC) 、およびクラスターの名前が含まれます。 この例では、次の計画に基づいてネットワークが作成されます。

説明

データプレーン上の複数のクラスターのCIDRブロックを計画する方法の詳細については、「データプレーン上の複数のクラスターのCIDRブロックを計画する」をご参照ください。

  • vSwitchとVPCのネットワークプラン

    • vSwitch

      重要

      Cloud Enterprise Network (CEN) を使用してVPCを接続するときにルートの競合を防ぐには、vSwitchごとに一意のCIDRブロックを指定します。

      カテゴリ

      vSwitch

      [VPC]

      IPv4 CIDRブロック

      クラスター

      vpc-hangzhou-switch-1

      vpc-hangzhou

      20.0.0.0/16

      vpc-shanghai-switch-1

      vpc-上海

      21.0.0.0/16

      ASMインスタンス

      vpc-hangzhou-switch-2

      vpc-hangzhou2

      192.168.0.0/24

    • VPC

      カテゴリ

      [VPC]

      リージョン

      IPv4 CIDRブロック

      クラスター

      vpc-hangzhou

      cn-hangzhou

      20.0.0.0/8

      vpc-上海

      cn-shanghai

      21.0.0.0/8

      ASMインスタンス

      vpc-hangzhou2

      cn-hangzhou

      192.168.0.0/16

  • クラスター内のポッドとサービスのネットワーク計画

    クラスター

    リージョン

    [VPC]

    ポッドCIDR

    サービスCIDR

    ack-hangzhou

    cn-hangzhou

    vpc-hangzhou

    10.0.0.0/16

    172.16.0.0/16

    ack-上海

    cn-shanghai

    vpc-上海

    10.1.0.0/16

    172.17.0.0/16

ステップ1: 異なるリージョンでクラスターを作成する

  1. 上記の計画に基づいて、中国 (杭州) および中国 (上海) リージョンに2つのvSwitchを作成し、vSwitchに関連付けられたVPCを作成します。 詳細については、「vSwitchの作成」および「VPCとvSwitchの作成」をご参照ください。

  2. 作成したVPCと前述のネットワーク計画を使用して、中国 (杭州) および中国 (上海) リージョンにクラスターを作成します。 詳細については、「ACK管理クラスターの作成」をご参照ください。

  3. 上記のネットワークプランに基づいて、中国 (杭州) リージョンにASMインスタンスを作成します。 詳細については、「ASMインスタンスの作成」をご参照ください。

ステップ2: CENを使用したクロスリージョンVPC通信の実装

CENを使用して、クラスター間およびクラスターとASMインスタンス間のVPCを接続できます。

  1. CENコンソールにログインし、CENインスタンスを作成します。 詳細については、「CENインスタンスの作成」をご参照ください。

  2. トランジットルーターを作成します。

    1. [インスタンス] ページで、サブステップ1で作成したCENインスタンスの名前をクリックします。 [基本設定] タブで、[中継ルーターの作成] をクリックします。

    2. [トランジットルーターの作成] ダイアログボックスで、[リージョン] ドロップダウンリストからリージョンを選択し、[名前] を指定して、[OK] をクリックします。

    この例では、2つのトランジットルーターが設定されています。

    • 1つのトランジットルーターの場合、リージョン中国 (上海) に設定し、名前上海ルーターに設定します。

    • 他のトランジットルーターの場合は、リージョン中国 (杭州) に、名前Hangzhou-routerに設定します。

  3. 中国 (上海) および中国 (杭州) リージョンの2つのトランジットルーターに対して、次の手順を繰り返して、VPCをトランジットルーターに接続します。

    1. [インスタンス] ページで、サブステップ1で作成したCENインスタンスの名前をクリックします。 [基本設定] タブで、作成したトランジットルーターのIDをクリックして、トランジットルーターの詳細ページに移動します。

    2. [イントラリージョン接続] タブで、[接続の作成] をクリックします。 [ネットワークタイプ][VPC] を選択し、[ネットワークインスタンス] のリージョンに対応するVPCを選択します。

    3. 他のパラメーターにデフォルト値を使用し、[OK] をクリックします。

  4. クロスリージョンネットワーク帯域幅を設定します。

    1. サブステップ2で作成したトランジットルーターの名前をクリックします。 ページの右上隅にある [接続の作成] をクリックします。

    2. [ピアネットワークインスタンスとの接続] ページで、関連するパラメーターを設定し、[OK] をクリックします。

      次の図は、杭州から上海への接続例を示しています。 Regionは現在のリージョンを示し、Peer regionは宛先リージョンを示します。 設定項目の詳細については、「リージョン間接続の管理」をご参照ください。 2023-09-27_15-11-25.png

      インスタンスの作成後、[クロスリージョン接続] タブでインスタンスを表示できます。

  5. セキュリティグループルールを追加します。

    この例では、Flannelネットワークプラグインが使用されています。 ack-shanghaiクラスターのポッドCIDRブロックをack-hangzhouクラスターのセキュリティグループに追加します。 これにより、ピアクラスターのポッドCIDRブロック内のIPアドレスからのインバウンド通信が可能になります。

    説明

    Terwayネットワークプラグインを使用する場合は、一方のクラスターのvSwitch CIDRブロックをもう一方のクラスターのセキュリティグループに追加します。 VPCコンソールにログインし、vSwitchページのIPv4 CIDRブロック列からvSwitchのCIDRブロックを取得できます。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、ack-shanghaiクラスターの名前をクリックします。 [クラスター情報] ページの [基本情報] タブで、ack-shanghaiクラスターのポッドCIDRブロックを表示します。

    3. On theクラスターページで、ack-hangzhouクラスターを見つけて、詳細で、アクション列を作成します。

    4. [クラスター情報] ページで、[基本情報] タブをクリックします。 次に、[セキュリティグループ] の横にあるセキュリティグループIDをクリックします。

    5. On theセキュリティグループの詳細タブをクリックします。ルールの追加上のインバウンドタブをクリックします。

    6. [プロトコルタイプ][すべて] に設定し、[ソース] をack-shanghaiクラスターのポッドCIDRブロックに設定します。 他のデフォルト値を保持します。 次に、[操作] 列の [保存] をクリックします。

    7. 上記のサブステップを繰り返して、ack-hangzhouクラスターのポッドCIDRブロックを表示します。 次に、ack-hangzhouクラスターのポッドCIDRブロックをack-shanghaiクラスターのセキュリティグループに追加します。

    8. ack-hangzhouクラスターのECSインスタンスにログインし、pingコマンドを実行して、ack-hangzhouクラスターのECSインスタンスがack-shanghaiクラスターの任意のECSインスタンスと通信できるかどうかを確認します。

手順3: ASMインスタンスにクラスターを追加し、マネージドingressゲートウェイを作成する

  1. 作成したack-hangzhouクラスターとack-shanghaiクラスターをASMインスタンスに追加します。 詳細については、「ASMインスタンスへのクラスターの追加」をご参照ください。

  2. 次のYAMLファイルを使用して、管理されたingressゲートウェイを作成します。 詳細については、「ingressゲートウェイの作成」をご参照ください。

    マネージingressゲートウェイのYAMLファイルを表示するには

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      annotations:
        asm.alibabacloud.com/managed-by-asm: 'true'
      name: ingressgateway
      namespace: istio-system
    spec:
      gatewayType: ingress
      dnsPolicy: ClusterFirst
      externalTrafficPolicy: Local
      hostNetwork: false
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 80
      - name: https
        port: 443
        protocol: TCP
        targetPort: 443
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
      rollingMaxSurge: 100%
      rollingMaxUnavailable: 25%
      runAsRoot: true
      serviceType: LoadBalancer

ステップ4: Bookinfoアプリケーションのデプロイ

  1. ack-hangzhouクラスターにBookinfoアプリケーションをデプロイします。

    1. kubectlを使用してack-hangzhouクラスターに接続します。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。

    2. 次のコンテンツを含むack-hangzhou-k8s.yamlファイルを作成します。

      展開してack-hangzhou-k8s.yamlファイルを表示する

      # Details service
      apiVersion: v1
      kind: Service
      metadata:
        name: details
        labels:
          app: details
          service: details
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: details
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-details
        labels:
          account: details
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: details-v1
        labels:
          app: details
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: details
            version: v1
        template:
          metadata:
            labels:
              app: details
              version: v1
          spec:
            serviceAccountName: bookinfo-details
            containers:
            - name: details
              image: docker.io/istio/examples-bookinfo-details-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              securityContext:
                runAsUser: 1000
      ---
      # Ratings service
      apiVersion: v1
      kind: Service
      metadata:
        name: ratings
        labels:
          app: ratings
          service: ratings
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: ratings
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-ratings
        labels:
          account: ratings
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: ratings-v1
        labels:
          app: ratings
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: ratings
            version: v1
        template:
          metadata:
            labels:
              app: ratings
              version: v1
          spec:
            serviceAccountName: bookinfo-ratings
            containers:
            - name: ratings
              image: docker.io/istio/examples-bookinfo-ratings-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              securityContext:
                runAsUser: 1000
      ---
      # Reviews service
      apiVersion: v1
      kind: Service
      metadata:
        name: reviews
        labels:
          app: reviews
          service: reviews
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: reviews
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-reviews
        labels:
          account: reviews
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: reviews-v1
        labels:
          app: reviews
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: reviews
            version: v1
        template:
          metadata:
            labels:
              app: reviews
              version: v1
          spec:
            serviceAccountName: bookinfo-reviews
            containers:
            - name: reviews
              image: docker.io/istio/examples-bookinfo-reviews-v1:1.16.2
              imagePullPolicy: IfNotPresent
              env:
              - name: LOG_DIR
                value: "/tmp/logs"
              ports:
              - containerPort: 9080
              volumeMounts:
              - name: tmp
                mountPath: /tmp
              - name: wlp-output
                mountPath: /opt/ibm/wlp/output
              securityContext:
                runAsUser: 1000
            volumes:
            - name: wlp-output
              emptyDir: {}
            - name: tmp
              emptyDir: {}
      ---
      # Productpage services
      apiVersion: v1
      kind: Service
      metadata:
        name: productpage
        labels:
          app: productpage
          service: productpage
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: productpage
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-productpage
        labels:
          account: productpage
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: productpage-v1
        labels:
          app: productpage
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: productpage
            version: v1
        template:
          metadata:
            labels:
              app: productpage
              version: v1
          spec:
            serviceAccountName: bookinfo-productpage
            containers:
            - name: productpage
              image: docker.io/istio/examples-bookinfo-productpage-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              volumeMounts:
              - name: tmp
                mountPath: /tmp
              securityContext:
                runAsUser: 1000
            volumes:
            - name: tmp
              emptyDir: {}
      ---
      
    3. 次のコマンドを実行して、Bookinfoアプリケーションをack-hangzhouクラスターにデプロイします。

      kubectl apply -f ack-hangzhou-k8s.yaml
  2. ack-shanghaiクラスターにBookinfoアプリケーションをデプロイします。

    1. kubectlを使用してack-shanghaiクラスターに接続します。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。

      説明

      kubectlを使用してack-shanghaiクラスターに接続する場合、ack-hangzhouクラスターのkubeconfigファイルをack-shanghaiクラスターのkubeconfigファイルに切り替える必要があります。

    2. 次のコンテンツを含むack-shanghai.yamlファイルを作成します。

      展開してack-shanghai.yamlファイルを表示する

      # Details service
      apiVersion: v1
      kind: Service
      metadata:
        name: details
        labels:
          app: details
          service: details
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: details
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-details
        labels:
          account: details
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: details-v1
        labels:
          app: details
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: details
            version: v1
        template:
          metadata:
            labels:
              app: details
              version: v1
          spec:
            serviceAccountName: bookinfo-details
            containers:
            - name: details
              image: docker.io/istio/examples-bookinfo-details-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              securityContext:
                runAsUser: 1000
      ---
      # Ratings service
      apiVersion: v1
      kind: Service
      metadata:
        name: ratings
        labels:
          app: ratings
          service: ratings
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: ratings
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-ratings
        labels:
          account: ratings
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: ratings-v1
        labels:
          app: ratings
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: ratings
            version: v1
        template:
          metadata:
            labels:
              app: ratings
              version: v1
          spec:
            serviceAccountName: bookinfo-ratings
            containers:
            - name: ratings
              image: docker.io/istio/examples-bookinfo-ratings-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              securityContext:
                runAsUser: 1000
      ---
      # Reviews service
      apiVersion: v1
      kind: Service
      metadata:
        name: reviews
        labels:
          app: reviews
          service: reviews
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: reviews
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-reviews
        labels:
          account: reviews
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: reviews-v2
        labels:
          app: reviews
          version: v2
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: reviews
            version: v2
        template:
          metadata:
            labels:
              app: reviews
              version: v2
          spec:
            serviceAccountName: bookinfo-reviews
            containers:
            - name: reviews
              image: docker.io/istio/examples-bookinfo-reviews-v2:1.16.2
              imagePullPolicy: IfNotPresent
              env:
              - name: LOG_DIR
                value: "/tmp/logs"
              ports:
              - containerPort: 9080
              volumeMounts:
              - name: tmp
                mountPath: /tmp
              - name: wlp-output
                mountPath: /opt/ibm/wlp/output
              securityContext:
                runAsUser: 1000
            volumes:
            - name: wlp-output
              emptyDir: {}
            - name: tmp
              emptyDir: {}
      ---
      # Productpage services
      apiVersion: v1
      kind: Service
      metadata:
        name: productpage
        labels:
          app: productpage
          service: productpage
      spec:
        ports:
        - port: 9080
          name: http
        selector:
          app: productpage
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: bookinfo-productpage
        labels:
          account: productpage
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: productpage-v1
        labels:
          app: productpage
          version: v1
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: productpage
            version: v1
        template:
          metadata:
            labels:
              app: productpage
              version: v1
          spec:
            serviceAccountName: bookinfo-productpage
            containers:
            - name: productpage
              image: docker.io/istio/examples-bookinfo-productpage-v1:1.16.2
              imagePullPolicy: IfNotPresent
              ports:
              - containerPort: 9080
              volumeMounts:
              - name: tmp
                mountPath: /tmp
              securityContext:
                runAsUser: 1000
            volumes:
            - name: tmp
              emptyDir: {}
      ---
      	  
    3. 次のコマンドを実行して、Bookinfoアプリケーションをack-shanghaiクラスターにデプロイします。

      kubectl apply -f ack-shanghai.yaml
    4. kubectlを使用してASMインスタンスに接続します。 詳細については、「コントロールプレーンでkubectlを使用したIstioリソースへのアクセス」をご参照ください。

      説明

      kubectlを使用してASMインスタンスに接続する場合、ack-shanghaiクラスターのkubeconfigファイルをASMインスタンスのkubeconfigファイルに切り替える必要があります。

  3. ASMでルーティングルールを作成します。

    1. 次のコンテンツを含むasm.yamlファイルを作成します。

      展開してasm.yamlファイルを表示

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: bookinfo-gateway
      spec:
        selector:
          istio: ingressgateway # use istio default controller
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: bookinfo
      spec:
        hosts:
        - "*"
        gateways:
        - bookinfo-gateway
        http:
        - match:
          - uri:
              exact: /productpage
          - uri:
              prefix: /static
          - uri:
              exact: /login
          - uri:
              exact: /logout
          - uri:
              prefix: /api/v1/products
          route:
          - destination:
              host: productpage
              port:
                number: 9080
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: DestinationRule
      metadata:
        name: productpage
      spec:
        host: productpage
        subsets:
        - name: v1
          labels:
            version: v1
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: DestinationRule
      metadata:
        name: reviews
      spec:
        host: reviews
        subsets:
        - name: v1
          labels:
            version: v1
        - name: v2
          labels:
            version: v2
        - name: v3
          labels:
            version: v3
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: DestinationRule
      metadata:
        name: ratings
      spec:
        host: ratings
        subsets:
        - name: v1
          labels:
            version: v1
        - name: v2
          labels:
            version: v2
        - name: v2-mysql
          labels:
            version: v2-mysql
        - name: v2-mysql-vm
          labels:
            version: v2-mysql-vm
      ---
      apiVersion: networking.istio.io/v1alpha3
      kind: DestinationRule
      metadata:
        name: details
      spec:
        host: details
        subsets:
        - name: v1
          labels:
            version: v1
        - name: v2
          labels:
            version: v2
      ---
      	  
    2. 次のコマンドを実行して、ルーティングルールを作成します。

      kubectl apply -f asm.yaml
  4. Bookinfoアプリケーションがデプロイされているかどうかを確認します。

    1. ACKコンソールにログインします。

    2. ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    3. On theクラスターページで、ack-hangzhouクラスターを見つけて、詳細で、アクション列を作成します。

    4. 詳細ページの左側のナビゲーションウィンドウで、[ネットワーク] > [サービス] を選択します。

    5. [サービス] ページの上部にある、[名前空間] ドロップダウンリストからistio-systemを選択します。 istio-ingressgatewayという名前のingressゲートウェイを見つけ、ポートが80のIPアドレスを [外部IP] 列に表示します。

    6. 入力ingress gateway/productpageのIPアドレスブラウザのアドレスバーに

      ページを複数回更新します。 次の画像が画面に交互に表示されます。review1review1

ステップ5: クロスリージョントラフィック分散およびフェールオーバー機能の使用

クロスリージョントラフィック分散の設定

  1. ASMコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASMインスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[ASMインスタンス] > [ベース情報] を選択します。

  3. [基本情報] ページで、locality-Failoverの右側にある [地域トラフィック分散の有効化] をクリックします。

    説明

    クロスリージョンフェールオーバーを有効にした場合、クロスリージョントラフィック分散を有効にする前に、クロスリージョンフェールオーバーを無効にする必要があります。

  4. では、地域-トラフィック分布ダイアログボックスで、ポリシーパラメーターをcn-hangzhouに移動し、新しいポリシー.

  5. 展开アイコンをクリックし、添加アイコンをクリックします。 [To] をcn-hangzhouに、[Weight] を90% に設定します。

  6. をクリックし、添加アイコン, setToにcn-shanghaiと重量を10% し、OK.

  7. 次のコマンドを実行して、Bookinfoアプリケーションに10回要求し、クロスリージョントラフィックの配信が成功したかどうかを確認します。

    for ((i=1;i<=10;i++));do curl http://<Port 80 of the IP address of the ingress gateway in the ack-hangzhou cluster>/productpage 2>&1|grep full.stars;done

    期待される出力:

    <!-- full stars: -->
    <!-- full stars: -->

    出力は、10回のアクセス要求が行われ、2行のフルスター出力が返されたことを示します。 これは、10件のリクエストのうち9件がack-hangzhouクラスターのv1バージョンのレビューサービスにルーティングされ、1件のリクエストがack-shanghaiクラスターのv2バージョンのレビューサービスにルーティングされることを示しています。 トラフィックは、クラスタの重みに基づいて異なるクラスタにルーティングされます。

クロスリージョンフェイルオーバーの設定

  1. ack-hangzhouクラスターのレビューサービスを無効にします。

    1. ACKコンソールにログインします。

    2. ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    3. 詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイ] を選択します。

    4. On theデプロイメントページからデフォルトを選択します。名前空間ドロップダウンリストをクリックし、スケールで、アクションreviews-v1の列。

    5. では、スケールダイアログボックスで、目的のポッド数パラメータを0にし、OK.

  2. 宛先ルールを設定します。

    次の宛先ルールを設定します。レビューサービスに1秒以内にアクセスできない場合、レビューサービスは1分間イジェクトされます。

    1. にログインします。ASMコンソール.

    2. 左側のナビゲーションウィンドウで、サービスメッシュ > メッシュ管理.

    3. [メッシュ管理] ページで、設定するASMインスタンスを見つけます。 ASMインスタンスの名前をクリックするか、[操作] 列の [管理] をクリックします。

    4. ASMインスタンスの詳細ページで、交通管理センター > DestinationRule左側のナビゲーションウィンドウに表示されます。

    5. On theDestinationRuleページ、レビューサービスを見つけてクリックYAMLで、アクション列を作成します。

    6. では、編集ダイアログボックスで、次の内容をコードエディターにコピーし、OK.

      spec:
        ......
        trafficPolicy:
          connectionPool:
            http:
              maxRequestsPerConnection: 1
          outlierDetection:
            baseEjectionTime: 1m
            consecutive5xxErrors: 1
            interval: 1s
      • maxRequestsPerConnection: 接続ごとの最大リクエスト数を指定します。

      • baseEjectionTime: 最小排出時間を指定します。

      • successive5xxErrors: 連続エラーの数を指定します。

      • interval: 排出分析の時間間隔を指定します。

  3. クロスリージョンフェイルオーバーを有効にします。

    1. ASMインスタンスの詳細ページで、ASMインスタンス > ベース情報左側のナビゲーションウィンドウに表示されます。

    2. On theベース情報ページをクリックします。Locality-Failoverの有効化の右側に地域-フェイルオーバー.

      説明

      クロスリージョントラフィック分散を有効にした場合、クロスリージョンフェールオーバーを有効にする前に、クロスリージョントラフィック分散を無効にする必要があります。

    3. [ローカルロード-バランス] ダイアログボックスで、[差出人] パラメーターがcn-shanghaiに設定されている場合は、[フェールオーバー] パラメーターをcn-hangzhouに設定します。 Fromパラメーターがcn-hangzhouに設定されている場合、Failover toパラメーターをcn-shanghaiに設定します。 次に、[送信] をクリックします。

  4. 次のコマンドを実行して、Bookinfoアプリケーションを10回リクエストし、v2バージョンのレビューサービスにルーティングされたリクエストの数を記録します

    for ((i=1;i<=10;i++));do curl http://<Port 80 of the IP address of the ingress gateway in the ack-hangzhou cluster>/productpage 2>&1|grep full.stars;done | wc -l

    期待される出力:

    20

    出力は、10回のアクセス要求が行われ、20行の結果が返されたことを示します。 これは、リクエストがv2バージョンのレビューサービスにルーティングされるたびに、完全な星を含む2行の結果が返されるためです。 これは、10個のリクエストすべてがack-shanghaiクラスターのv2バージョンのレビューサービスにルーティングされ、クロスリージョンフェイルオーバーが成功したことを示しています。

よくある質問

CENを使用してKubernetesクラスターのVPCを接続します。 ただし、クラスターをASMインスタンスに追加すると、エラーメッセージが表示されます。 どうすればよいですか。

クラスターが異なるリージョンに存在する場合、CENを使用してクラスターのVPCを接続するときに、クロスリージョンデータ転送プランを購入し、クロスリージョンデータ転送の有効な設定を構成する必要があります。 そうしないと、ASMインスタンスはデータプレーン上のクラスターへの接続に失敗します。 この場合、クラスターをASMインスタンスに追加できません。

この問題を解決するには、CENコンソールでクロスリージョンデータ転送の有効な設定を再構成して、CENを使用してクラスターのVPCを接続する必要があります。 詳細については、「手順2: CENを使用してクロスリージョンVPC通信を実装する」をご参照ください。