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

Server Load Balancer:ALB マルチクラスターゲートウェイを使用したハイブリッド災害対策の実装

最終更新日:Sep 14, 2026

ワークロードがオンプレミスデータセンターまたはサードパーティのパブリッククラウド Kubernetes クラスターで実行されている場合、ACK One のマルチクラスターゲートウェイを使用して、自動でスムーズなフェイルオーバーが可能なハイブリッドまたはクロスクラウドの災害対策システムを構築できます。このトピックでは、ACK One を使用して同一都市アクティブ/アクティブ構成のハイブリッド災害対策システムを迅速に構築する方法について説明します。

アーキテクチャ

コアコンポーネントは、フリートインスタンス (オプションの GitOps を含む) 、クラウド上の ACK クラスター、およびオンプレミス環境に接続された登録済みクラスターの 3 つです。

image

コンポーネントの接続方法:

  1. すべての Alibaba Cloud リソースは単一の VPC を共有します。ACK クラスターはアベイラビリティーゾーン (AZ) 1 で実行され、登録済みクラスターは AZ 2 に配置されています。

  2. オンプレミスクラスター (またはサードパーティプラットフォームのクラスター) は、データセンターと VPC 間の専用線を経由して登録済みクラスターに接続します。

  3. 両方のクラスターはフリートインスタンスに関連付けられています。ACK One GitOps は、アプリケーションを両方のクラスターに配布します。

  4. フリートインスタンス上で、AlbConfig が ALB マルチクラスターゲートウェイを作成します。フリートレベルの Ingress は、ノースサウストラフィックとゾーンディザスタリカバリのルーティングルールを定義します。

前提条件

開始する前に、次の条件を満たしていることを確認してください:

  • フリートインスタンス、ACK クラスター、登録済みクラスターが 同一の VPC 内、かつ 異なるアベイラビリティーゾーン に存在すること

  • ACK クラスターとオンプレミス Kubernetes クラスター間で、ノードと Pod の CIDR ブロックが重複していないこと (フリート管理のためのネットワーク設計)

  • オンプレミスデータセンターと VPC を接続する専用線があること

  • オンプレミスクラスターのコンテナネットワークタイプ (アンダーレイ または オーバーレイ) が決定されていること — これは必須の Service タイプに影響します

ネットワークタイプ 必須の Service タイプ 使用するケース
アンダーレイ ClusterIP Pod IP がオンプレミスネットワークから直接ルーティング可能な場合
オーバーレイ NodePort Pod IP がルーティング不可能で、トラフィックがノードポートを経由する必要がある場合

ネットワークの設計とクラスターの作成

  1. 同一の VPC 内、かつ異なるアベイラビリティーゾーンに、フリートインスタンス、ACK クラスター、登録済みクラスターを作成します。

  2. ACK クラスターとオンプレミス Kubernetes クラスター間で、ノードと Pod の CIDR ブロックが重複していないことを確認してください。

Alibaba Cloud への接続

  1. オンプレミス Kubernetes クラスターを登録済みクラスターに接続します (登録済みクラスターの作成)。

    伸縮性のあるリソースを使用してワークロードを Alibaba Cloud に移行するには、「ハイブリッドクラウドクラスターの構築とクラスターへの ECS インスタンスの追加」および「仮想ノードとしてデプロイされた Elastic Container Instance への Pod のスケジューリング」をご参照ください。トラフィックスパイクに対する可用性を向上させるには、「ゾーンをまたいだ ECI の作成」をご参照ください。
  2. オンプレミスネットワークを VPC に接続します。詳細については、「ネットワーク接続」および「ハイブリッドネットワークの概要」をご参照ください。

  3. 登録済みクラスターと ACK クラスターをフリートインスタンスに関連付けます (関連付けられたクラスターの管理)。

複数クラスターへのアプリケーションの配布

これらの ApplicationSet の例では、web-demo アプリを使用します。高度なオプションについては、「マルチクラスターアプリケーションの作成」をご参照ください。

アンダーレイネットワーク

すべてのクラスターは ClusterIP Service を使用します。次の ApplicationSet を適用します:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: appset-web-demo-underlay
  namespace: argocd
spec:
  template:
    metadata:
      name: '{{.metadata.annotations.cluster_id}}-web-demo'
      namespace: argocd
    spec:
      destination:
        name: '{{.name}}'
        namespace: gateway-demo
      project: default
      source:
        repoURL: https://github.com/AliyunContainerService/gitops-demo.git
        path: manifests/helm/web-demo
        targetRevision: main
        helm:
          valueFiles:
            - values.yaml
          parameters:
            - name: envCluster
              value: '{{.metadata.annotations.cluster_name}}'
      syncPolicy:
        automated: {}
        syncOptions:
          - CreateNamespace=true
  generators:
    - clusters:
        selector:
          matchExpressions:
            - values:
                - cluster
              key: argocd.argoproj.io/secret-type
              operator: In
            - values:
                - in-cluster
              key: name
              operator: NotIn
  goTemplateOptions:
    - missingkey=error
  syncPolicy:
    preserveResourcesOnDeletion: false
  goTemplate: true

オーバーレイネットワーク

オンプレミスクラスターは NodePort Service を使用し、ACK クラスターは ClusterIP Service を使用します。ApplicationSet を適用する前に、各クラスターにラベルを付けます。

  1. Argo CD で、[設定] > [クラスター] に移動して、以下のラベルを追加します。

    • オンプレミス クラスター: cluster: idc

    • ACK クラスター: cluster: ack

  2. 次の ApplicationSet を適用します:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: appset-web-demo-overlay
  namespace: argocd
spec:
  template:
    metadata:
      name: '{{.metadata.annotations.cluster_id}}-web-demo-overlay'
      namespace: argocd
    spec:
      destination:
        name: '{{.name}}'
        namespace: gateway-demo
      project: default
      source:
        repoURL: https://github.com/AliyunContainerService/gitops-demo.git
        path: manifests/helm/web-demo
        targetRevision: main
        helm:
          valueFiles:
            - values.yaml
          parameters:
            - name: isNodePort
              value: "{{.values.isNodePort}}"
            - name: envCluster
              value: '{{.metadata.annotations.cluster_name}}'
      syncPolicy:
        automated: {}
        syncOptions:
          - CreateNamespace=true
  generators:
    - clusters:
        selector:
          matchLabels:
            cluster: 'idc'
        # 任意のパラメーター用のキーと値のマップ
        values:
          isNodePort: "true"
    - clusters:
        selector:
          matchLabels:
            cluster: 'ack'
        values:
          isNodePort: "false"
  goTemplateOptions:
    - missingkey=error
  syncPolicy:
    preserveResourcesOnDeletion: false
  goTemplate: true

ALB マルチクラスターゲートウェイの設定

両方のクラスターにアプリケーションをデプロイした後:

  1. フリートインスタンス上で AlbConfig を作成し、ALB マルチクラスターゲートウェイをプロビジョニングして、両方のクラスターをゲートウェイに追加します。

  2. フリートインスタンス上でルーティングルールと Ingress を作成し、アクティブなゾーン冗長を構成します。

設定の完全なウォークスルーについては、「ゾーンディザスタリカバリシステムの構築」をご参照ください。

次のステップ