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

:南北の交通を管理する

最終更新日:Nov 20, 2024

Distributed Cloud Container Platform for Kubernetes (ACK One) が提供するマルチクラスターゲートウェイは、MSE Ingressに基づいて、マルチクラスターデプロイの南北トラフィックを管理できます。 これにより、アクティブゾーン冗長性、トラフィック負荷分散、ヘッダーベースのトラフィックルーティングなどの機能を使用できます。 このトピックでは、マルチクラスタゲートウェイを使用して南北トラフィックを管理する方法について説明します。

背景情報

マルチクラスタゲートウェイの利点

Ingressは、Kubernetesクラスターにデプロイされたサービスの南北トラフィックを管理するために、コンテナサービス部門で一般的に使用されます。 Ingressはクラスターにスコープされます。 Ingressを使用してマルチクラスターアプリケーションのトラフィックを管理することはできません。 ACK Oneでは、MSE IngressをグローバルIngressとして使用して、リージョン内のマルチクラスタアプリケーションの南北トラフィックを一元管理できます。 これらのIngressは強力なトラフィック管理機能を提供し、アクティブゾーン冗長性、トラフィック負荷分散、およびヘッダーベースのトラフィックルーティングを低コストで実装するのに役立ちます。 さらに、マルチクラスタゲートウェイは、初心者のための技術的なギャップを狭めるために使いやすいIngress APIを提供します。

重要

マルチクラスタゲートウェイを使用する場合、料金は課金されます。 マルチクラスターゲートウェイの課金の詳細については、「課金の概要」をご参照ください。

MSE参照

  • MseIngressConfigは、Microservices Engine (MSE) Ingress Controllerによって提供されるCustomResourceDefinition (CRD) です。 MseIngressConfigsは、MSEクラウドネイティブゲートウェイのライフサイクルを管理し、Ingressリスニングオプションとグローバル設定を構成するために使用されます。 MseIngressConfigの使用方法の詳細については、「MseIngressConfigの設定」をご参照ください。

  • MSE Ingressは、Nginx-Ingressのコアと一般的に使用されるアノテーションをサポートします。 MSE Ingressは、Nginx-Ingressの欠点をカバーする他の注釈も提供します。 詳細については、「MSE Ingressゲートウェイでサポートされているアノテーション」をご参照ください。

前提条件

手順1: ACK One Fleetインスタンスにマルチクラスターゲートウェイを作成する

ACK One Fleetインスタンスにマルチクラスタゲートウェイを作成し、関連付けられたクラスタをマルチクラスタゲートウェイにアタッチします。 デフォルトでは、マルチクラスタゲートウェイはゾーン間でデプロイされ、高可用性を確保します。

コンソールの使用

  1. ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、フリート> マルチクラスタゲートウェイを選択します。

  2. マルチクラスターゲートウェイページの右上隅にある [ゲートウェイの作成] をクリックします。

  3. 表示されるパネルで、ビジネス要件に基づいてマルチクラスターゲートウェイの作成に使用するYAMLファイルを変更し、[作成] をクリックします。

CLIの使用

  1. ACK One FleetインスタンスのvSwitch IDを取得して記録します。

    1. 次のコマンドを実行して、vSwitch IDを照会します。

    aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID>
    1. 出力のvSwitchフィールドにvSwitch IDを記録します。

  2. mseingressconfig.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    ${vsw-id1} を記録したvSwitch IDに置き換えます。 ゲートウェイ構成ファイルに注釈を追加して、ゲートウェイに追加する関連クラスターを指定できます。

    apiVersion: mse.alibabacloud.com/v1alpha1
    kind: MseIngressConfig
    metadata:
      name: ackone-gateway
      # Connect associated clusters to the MSE gateway. 
      #annotations:
      #  mse.alibabacloud.com/remote-clusters: ${cluster1},${cluster2}
    spec:
      common:
        instance:
          replicas: 3
          spec: 2c4g
        network:
          # You can configure both an Internet-facing Server load Balancer (SLB) instance and an internal-facing SLB instance. If no SLB instance is specified, an Internet-facing SLB instance is used by default. 
          #publicSLBSpec: slb.s2.small
          #privateSLBSpec: slb.s2.small
          vSwitches:
          - ${vsw-id1}
      ingress:
        local:
          ingressClass: mse
      name: mse-ingress
  3. 次のコマンドを実行して、ACK One Fleetインスタンスにmse-ingressという名前のゲートウェイを作成します。

    kubectl apply -f mseingressconfig.yaml
  4. 次のコマンドを実行して、ゲートウェイが作成されているかどうかを確認します。

    kubectl get mseingressconfig ackone-gateway

    期待される出力:

    NAME             STATUS      AGE
    ackone-gateway   Listening   3m15s

    出力は、ゲートウェイがリスニング状態にあることを示します。 これは、クラウドネイティブゲートウェイが作成されて実行されていることを意味します。 ゲートウェイは、IngressClassesがmseであるIngressをリッスンします。

    MseIngressConfigから作成されたゲートウェイのステータスは、Pending、Running、Listeningの順に変わります。 状態の説明:

    • 保留中: クラウドネイティブゲートウェイが作成中です。 このプロセスには約3分かかります。

    • 実行中: クラウドネイティブゲートウェイが作成され、実行中です。

    • リスニング: クラウドネイティブゲートウェイが実行中で、Ingressでリッスンします。

    • Failed: クラウドネイティブゲートウェイが無効です。 [ステータス] フィールドのメッセージを確認して、問題をトラブルシューティングできます。

手順2: 関連付けられたクラスターをマルチクラスタゲートウェイにアタッチする

コンソールの使用

  1. ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、フリート> マルチクラスタゲートウェイを選択します。

  2. [マルチクラスタゲートウェイ] ページの上部で、[ゲートウェイの選択] ドロップダウンリストから管理するマルチクラスタゲートウェイを選択し、右上隅の [変更] をクリックします。

  3. ModifyGatewayパネルで、MseIngresConfig.yamlファイルを変更します。 annotationsパラメーターでクラスターIDを変更し、[更新] をクリックします。

    サンプルコード:

    annotations:
      mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
    • ${cluster1-id}${cluster2-id} は、関連付けられているクラスターのIDです。 複数のクラスターIDはコンマ (,) で区切ります。 クラスターIDを変更して、関連するクラスターを追加または削除できます。

    • マルチクラスターゲートウェイの作成時に関連付けられたクラスターをマルチクラスターゲートウェイに追加しない場合、MseIngresConfig.yamlファイルにはannotationsパラメーターがありません。 指定された関連クラスターをマルチクラスターゲートウェイに追加するには、上記のコードをMseIngresConfig.yamlファイルのmetadataオブジェクトに追加し、クラスターIDを変更する必要があります。

CLIの使用

  1. ACK One Fleetインスタンスのmseingressconfigで対応するアノテーションを変更して、関連するクラスターを追加または削除できます。 ${cluster1-id}${cluster2-id} を、アタッチする関連クラスターのIDに置き換えます。 クラスターIDはコンマ (,) で区切ります。

    annotations:
      mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
  2. 次のコマンドを実行して、関連付けられているクラスターがマルチクラスターゲートウェイにアタッチされているかどうかを確認します。

    kubectl get mseingressconfig ackone-gateway -ojsonpath="{.status.remoteClusters}"

    期待される出力:

    [{"clusterId":"c7fb82****"},{"clusterId":"cd3007****"}]

    出力は関連するクラスターのIDを示し、失敗した情報は返されません。 これは、関連するクラスタがマルチクラスタゲートウェイにアタッチされることを意味する。

ステップ3: GitOpsを使用してサンプルアプリケーションをデプロイする

  1. GitOpsを使用して、関連するクラスターにサンプルアプリケーションをデプロイします。 詳細については、「GitOpsの使い方」をご参照ください。

    1. 関連するクラスターごとにGitOpsアプリケーションを作成します。 この例では、web-demo-cluster1およびweb-demo-cluster2アプリケーションが作成されます。

    2. ソース:

      • リポジトリURLhttps://github.com/AliyunContainerService/gitops-demo.git に設定します。

      • [Revision][HEAD] に設定します。

      • Pathmanifests/helm/web-demoに設定します。

    3. 関連付けられているクラスターをDESTINATIONに指定し、namespaceweb-demoに設定します。

    4. Helm Values Filesの環境変数の名前はenvNameで、valuescluster1cluster2です。

    次のコードブロックは、デプロイメントとサービスのYAMLコンテンツを示しています。

    展開とサービスのYAMLコンテンツの表示

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: web-demo
        app.kubernetes.io/instance: web-demo-cluster1
      name: web-demo
      namespace: web-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web-demo
      template:
        metadata:
          labels:
            app: web-demo
        spec:
          containers:
          - name: web-demo
            image: acr-multiple-clusters-registry.cn-hangzhou.cr.aliyuncs.com/ack-multiple-clusters/web-demo:0.4.0
            env:
            - name: ENV_NAME
              value: cluster1
    ---
    apiVersion: v1       
    kind: Service
    metadata:
      name: service1
      namespace: web-demo
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: web-demo
      sessionAffinity: None
      type: ClusterIP

ステップ4: MSE Ingressを作成して、関連するクラスターのトラフィックを管理する

IngressのIngressClassをMSE Ingressに設定してMSE Ingressを作成し、異なるアノテーションでトラフィック管理機能を使用できます。 MSE IngressはNGINX Ingressのアノテーションをサポートしています。 MSE Ingressは、NGINX Ingressでサポートされていないトラフィックガバナンス機能を使用できるように、追加のアノテーションも提供します。 MSE Ingressでサポートされているアノテーションの詳細については、「MSE Ingressゲートウェイでサポートされているアノテーション」をご参照ください。 次の例では、マルチクラスタトラフィック管理の使用シナリオについて説明します。

重要

サンプルアプリケーションのDeploymentのIngressオブジェクトとServiceオブジェクトは、同じ名前空間に属している必要があります。

例1: 負荷分散を使用して、デフォルトですべてのバックエンドポッドにトラフィックを分散する

ACK One FleetインスタンスにIngressオブジェクトを作成して、関連付けられたクラスターの名前と同じ名前のバックエンドポッドにトラフィックを分散します。 トラフィック比率を、クラスター1のポッドとクラスター2のポッドの比率に設定します。 たとえば、クラスター1のポッドとクラスター2のポッドの比率が9:1の場合、トラフィック比率を9:1に設定します。 この例では、クラスター1のポッドとクラスター2のポッドの比率は1:1です。 次の図は、トポロジを示しています。image.png

  1. ingress-demo.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    次のIngressオブジェクトのYAMLファイルで、ドメイン名example.comの下にある /svc1を使用して、バックエンドのサービスservice1を公開します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: web-demo
      namespace: web-demo
    spec:
      ingressClassName: mse
      rules:
      - host: example.com
        http:
          paths:
          - path: /svc1
            pathType: Exact
            backend:
              service:
                name: service1
                port: 
                  number: 80
  2. 次のコマンドを実行して、ACK OneフリートインスタンスにIngressをデプロイします。

    kubectl apply -f ingress-demo.yaml
  3. 次のコマンドを実行して、マルチクラスタゲートウェイのパブリックIPアドレスを照会します。

    kubectl get ingress web-demo -nargocd -ojsonpath="{.status.loadBalancer}"
  4. 次のコマンドを実行して、トラフィックルーティング情報を照会します。

    XX.XX.XX.XXを、前の手順で取得したマルチクラスタゲートウェイのパブリックIPアドレスに置き換えます。

    for i in {1..50}; do curl -H "host: example.com" XX.XX.XX.XX/svc1; sleep 1;  done

    期待される出力:

    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 

    出力は、トラフィックが両方のクラスターに分散されることを示します。

例2: 指定されたクラスターのみにトラフィックを分配する

ACK OneフリートインスタンスにIngressオブジェクトを作成して、クラスター1のバックエンドポッドにのみトラフィックを分散します。 次の図は、トポロジを示しています。image.png

  1. ingress-demo-cluster-one.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    mse.ingress.kubernetes.io/service-subsetおよびmse.ingress.kubernetes.io/subset-labelsアノテーションをIngressオブジェクトのYAMLファイルに追加し、バックエンドのService service1を公開するためにexample.comされるドメイン名の下に /service1を使用します。 MSE Ingressでサポートされているアノテーションの詳細については、「MSE Ingressゲートウェイでサポートされているアノテーション」をご参照ください。

    • mse.ingress.kubernetes.io/service-subset: サービスのサブセットの名前。 クラスターに関連する名前を使用することを推奨します。

    • mse.ingress.kubernetes.io/subset-labels: 関連付けられているクラスターのID。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          mse.ingress.kubernetes.io/service-subset: cluster-demo-1
          mse.ingress.kubernetes.io/subset-labels: |
            topology.istio.io/cluster ${cluster1-id}
        name: web-demo-cluster-one
        namespace: web-demo
      spec:
        ingressClassName: mse
        rules:
        - host: example.com
          http:
            paths:
            - path: /service1
              pathType: Exact
              backend:
                service:
                  name: service1
                  port: 
                    number: 80
  2. 次のコマンドを実行して、ACK OneフリートインスタンスにIngressをデプロイします。

    kubectl apply -f ingress-demo-cluster-one.yaml
  3. 次のコマンドを実行して、マルチクラスタゲートウェイのパブリックIPアドレスを照会します。

    kubectl get ingress web-demo -nargocd -ojsonpath="{.status.loadBalancer}"
  4. 次のコマンドを実行して、トラフィックルーティング情報を照会します。

    XX.XX.XX.XXを、前の手順で取得したマルチクラスタゲートウェイのパブリックIPアドレスに置き換えます。

    for i in {1..50}; do curl -H "host: example.com" XX.XX.XX.XX/service1; sleep 1;  done

    期待される出力:

    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    ...

    出力は、トラフィックがクラスタ1に分散されることを示します。

例3: ヘッダーに一致するトラフィックを指定されたクラスターに配布する

ヘッダーと一致するトラフィックを指定されたクラスターのバックエンドポッドに分散するには、ACK OneフリートインスタンスにExample 1またはExample 2という名前のIngressオブジェクトを作成する必要があります。 次に、次のIngressオブジェクトを作成します。 Ingressオブジェクトを個別に使用することはできません。 次の図は、トポロジを示しています。

重要

ヘッダーベースのトラフィックスケジューリングを設定するときは、カナリア注釈とヘッダー一致ポリシーで設定されたIngressを作成し、カナリア注釈なしで別のIngressを作成する必要があります。 両方のIngressは、同じホストとパスで構成されています。 このように、カナリア注釈のないIngressは、トラフィックを別のクラスターのサービスにルーティングできます。 これは、ヘッダーベースのトラフィックスケジューリングを使用するIngressを個別に使用できないためです。 一致しないトラフィックを別のクラスターにルーティングできるように、ヘッダーベースのトラフィックスケジューリングを使用しないIngressと一緒に使用する必要があります。

image.png

  1. ingress-demo-header.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    次のIngressオブジェクトのYAMLファイルで、ドメイン名example.comの下にある /service1を使用して、バックエンドのサービスservice1を公開します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        mse.ingress.kubernetes.io/service-subset: cluster-demo-2
        mse.ingress.kubernetes.io/subset-labels: |
          topology.istio.io/cluster c15d48ca9d1fd43f9bbb89c56a474843c
        nginx.ingress.kubernetes.io/canary: "true"
        nginx.ingress.kubernetes.io/canary-by-header: "stage"
        nginx.ingress.kubernetes.io/canary-by-header-value: "gray"
      name: web-demo-cluster-second
      namespace: web-demo
    spec:
      ingressClassName: mse
      rules:
      - host: example.com
        http:
          paths:
          - path: /service1
            pathType: Exact
            backend:
              service:
                name: service1
                port: 
                  number: 80
  2. 次のコマンドを実行して、ACK OneフリートインスタンスにIngressをデプロイします。

    kubectl apply -f ingress-demo-header.yaml
  3. 次のコマンドを実行して、マルチクラスタゲートウェイのパブリックIPアドレスを照会します。

    kubectl get ingress web-demo -nargocd -ojsonpath="{.status.loadBalancer}"
  4. 次のコマンドを実行して、トラフィックルーティング情報を照会します。

    XX.XX.XX.XXを、前の手順で取得したマルチクラスターゲートウェイのパブリックIPアドレスに置き換えます。

    for i in {1..50}; do curl -H "host: example.com" -H "stage: gray" xx.xx.xx.xx/service1; sleep 1;  done

    期待される出力:

    This is env cluster2 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster2 !
    Config file is 
    ...

    出力は、stage: grayヘッダーを持つトラフィックがクラスター2に分散されることを示します。

例4: マルチクラスタアプリケーションでのクラスター間ディザスタリカバリの使用

マルチクラスタゲートウェイは、マルチクラスタアプリケーションにクロスクラスタディザスタリカバリ機能を提供します。 この機能は、設定なしで直接使用できます。 たとえば、前述のマルチクラスタゲートウェイは、2つの関連するクラスタのトラフィックを管理します。 いずれかのクラスターのサービスがダウンまたは削除された場合、トラフィックは自動的に他のクラスターにフェールオーバーされます。 例1例2、および例3では、クラスターの一方のサービスがダウンしている場合、トラフィックはもう一方のクラスターにフェールオーバーします。

次のセクションでは、ディザスタリカバリの実装方法を示すために例3を使用します。 stage: grayヘッダーを運ぶトラフィックは、クラスター2にルーティングされます。 クラスター2のデプロイによって作成されたポッドの数が0にスケーリングされると、トラフィックはクラスター1にフェールオーバーされます。 次の図は、トポロジを示しています。image.png

  1. 次のコマンドを実行して、マルチクラスタゲートウェイのパブリックIPアドレスを照会します。

    kubectl get ingress web-demo -nargocd -ojsonpath="{.status.loadBalancer}"
  2. 次のコマンドを実行して、トラフィックルーティング情報を照会します。

    XX.XX.XX.XXを、前の手順で取得したマルチクラスタゲートウェイのパブリックIPアドレスに置き換えます。

    for i in {1..50}; do curl -H "host: example.com" -H "stage: gray" XX.XX.XX.XX/service1; sleep 1;  done

    期待される出力:

    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    ...

    出力は、トラフィックが自動的にクラスタ1にフェールオーバーされることを示します。

例5: 重みに基づくトラフィックの分配

例1では、ポッド比率を変更して、各クラスターに分散されるトラフィックの割合を調整できます。 この例では、アノテーションを使用して、重みに基づいてトラフィックを異なるクラスターに分散する方法を示します。 この方法を使用してカナリアリリースを実行できます。 ACK One Fleetインスタンスに次のIngressオブジェクトを作成します。 次の図は、トポロジを示しています。

重要

重みベースのトラフィックスケジューリングを設定するときは、カナリア注釈とヘッダー一致ポリシーで設定されたIngressを作成し、カナリア注釈なしで別のIngressを作成する必要があります。 両方のIngressは、同じホストとパスで構成されています。 このように、カナリア注釈のないIngressは、トラフィックを別のクラスターのサービスにルーティングできます。 これは、重みベースのトラフィックスケジューリングを使用するIngressを個別に使用できないためです。 トラフィックを別のクラスターにルーティングできるように、重みベースのトラフィックスケジューリングを使用しないIngressと一緒に使用する必要があります。

image.png

  1. ingress-weight.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    次のIngressオブジェクトのYAMLファイルで、${cluster1-id} を関連するクラスターのIDに置き換えます。 バックエンドサービスservice1を公開するためにexample.comされるドメイン名の下に /svc1-wを使用する注釈を追加します。

    • mse.ingress.kubernetes.io/service-subset: サービスのサブセットの名前。 クラスターに関連する名前を使用することを推奨します。

    • mse.ingress.kubernetes.io/subset-labels: 関連付けられているクラスターのIDを指定します。

    • nginx.ingress.kubernetes.io/canary: カナリアリリースを有効にするには、値を "true" に設定します。

    • nginx.ingress.kubernetes.io/canary-weight: クラスターに配信されるトラフィックの割合を0 ~ 100の範囲で指定します。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          mse.ingress.kubernetes.io/service-subset: cluster-demo-1
          mse.ingress.kubernetes.io/subset-labels: |
            topology.istio.io/cluster ${cluster1-id}
        name: web-demo-weight
        namespace: web-demo
      spec:
        ingressClassName: mse
        rules:
        - host: example.com
          http:
            paths:
            - path: /svc1-w
              pathType: Exact
              backend:
                service:
                  name: service1
                  port: 
                    number: 80
      ---
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          mse.ingress.kubernetes.io/service-subset: cluster-demo-2
          mse.ingress.kubernetes.io/subset-labels: |
            topology.istio.io/cluster ${cluster2-id}
          nginx.ingress.kubernetes.io/canary: "true"
          nginx.ingress.kubernetes.io/canary-weight: "10"
        name: web-demo-weight-canary
        namespace: web-demo
      spec:
        ingressClassName: mse
        rules:
        - host: example.com
          http:
            paths:
            - path: /svc1-w
              pathType: Exact
              backend:
                service:
                  name: service1
                  port: 
                    number: 80
  2. 次のコマンドを実行して、ACK OneフリートインスタンスにIngressをデプロイします。

    kubectl apply -f ingress-weight.yaml -nargocd
  3. 次のコマンドを実行して、マルチクラスタゲートウェイのパブリックIPアドレスを照会します。

    kubectl get ingress web-demo -nargocd -ojsonpath="{.status.loadBalancer}"
  4. 次のコマンドを実行して、トラフィックルーティング情報を照会します。

    XX.XX.XX.XXを、前の手順で取得したマルチクラスターゲートウェイのパブリックIPアドレスに置き換えます。

    for i in {1..50}; do curl -H "host: example.com" XX.XX.XX.XX/svc1-w; sleep 1;  done

    期待される出力:

    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster1 !
    Config file is 
    This is env cluster2 !
    Config file is 
    This is env cluster1 !
    Config file is 
    ...

    出力は、90% トラフィックがクラスター1に分散され、10% トラフィックがクラスター2に分散されることを示します。