全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Skenario pemulihan bencana untuk beberapa kluster ACK di VPC berbeda (berdasarkan CEN untuk konektivitas jaringan VPC)

更新时间:Jul 06, 2025

Service Mesh ASM menyediakan kemampuan distribusi trafik lintas wilayah dan gagalover lintas wilayah untuk layanan aplikasi. Fitur distribusi trafik lintas wilayah mengarahkan trafik ke beberapa kluster sesuai dengan bobot yang ditentukan, mencapai load balancing multi-wilayah. Fitur gagalover lintas wilayah memindahkan trafik dari satu wilayah ke wilayah lain ketika layanan di wilayah tersebut gagal, menerapkan pemulihan bencana lintas wilayah. Topik ini menggunakan aplikasi Bookinfo untuk menunjukkan cara mengimplementasikan pemulihan bencana lintas wilayah dan load balancing trafik menggunakan kemampuan gagalover lintas wilayah dan distribusi trafik.

Konfigurasi jaringan

Konfigurasikan blok CIDR, nama, dan informasi lainnya untuk vSwitches, VPCs, dan kluster. Lihat Rencanakan blok CIDR untuk beberapa kluster pada data plane untuk informasi lebih lanjut. Berikut adalah contoh konfigurasi jaringan.

  • Konfigurasi jaringan vSwitches dan VPCs

    • VPC

      Objek

      Nama VPC

      Wilayah

      Blok CIDR IPv4

      Kluster

      vpc-hangzhou

      cn-hangzhou

      20.0.0.0/8

      vpc-shanghai

      cn-shanghai

      21.0.0.0/8

      Service Mesh

      vpc-hangzhou2

      cn-hangzhou

      192.168.0.0/16

    • vSwitch

      Penting

      Untuk menghindari konflik rute saat menghubungkan jaringan VPC menggunakan CEN, dua vSwitch tidak dapat menggunakan blok CIDR yang sama.

      Objek

      Nama vSwitch

      VPC

      Blok CIDR IPv4

      Kluster

      vpc-hangzhou-switch-1

      vpc-hangzhou

      20.0.0.0/16

      vpc-shanghai-switch-1

      vpc-shanghai

      21.0.0.0/16

      Service Mesh

      vpc-hangzhou-switch-2

      vpc-hangzhou2

      192.168.0.0/24

  • Konfigurasi jaringan Pod dan Service untuk kluster

    Nama kluster

    Wilayah

    VPC

    Pod CIDR

    CIDR Service

    ack-hangzhou

    cn-hangzhou

    vpc-hangzhou

    10.0.0.0/16

    172.16.0.0/16

    ack-shanghai

    cn-shanghai

    vpc-shanghai

    10.1.0.0/16

    172.17.0.0/16

Langkah 1: Buat kluster di wilayah berbeda

  1. Buat VPC dan vSwitch di wilayah Hangzhou dan Shanghai sesuai dengan konfigurasi di atas. Untuk informasi lebih lanjut, lihat Buat vSwitch dan Buat VPC dan vSwitch.

  2. Gunakan VPC yang Anda buat untuk membuat kluster di wilayah Hangzhou dan Shanghai. Untuk informasi lebih lanjut, lihat Buat kluster terkelola ACK.

  3. Buat instance ASM di wilayah Hangzhou sesuai dengan konfigurasi di atas. Untuk informasi lebih lanjut, lihat Buat instance ASM.

Langkah 2: Gunakan CEN untuk mengimplementasikan konektivitas jaringan VPC lintas wilayah

Gunakan CEN untuk menghubungkan jaringan VPC antar kluster, bersama dengan jaringan VPC antara kluster dan Service Mesh.

  1. Masuk ke Konsol Cloud Enterprise Network (CEN), dan buat instance CEN. Untuk informasi lebih lanjut, lihat Buat instance CEN.

  2. Buat transit router.

    1. Pada halaman CEN Instances, klik nama instance CEN yang dibuat di Langkah 1, lalu di bawah tab Basic Information, klik Create Transit Router.

    2. Pilih Region, masukkan Name, lalu klik OK.

    Dalam contoh ini, dua transit router dikonfigurasi:

    • Region: China (Shanghai); Name: shanghai-router.

    • Region: China (Hangzhou); Name: hangzhou-router.

  3. Tambahkan VPC ke kedua transit router dengan mengulangi langkah-langkah berikut:

    1. Klik ID transit router.

    2. Pilih tab Intra-region Connections, lalu klik Create Connection.

    3. Untuk Instance Type, pilih Virtual Private Cloud (VPC), dan untuk Network Instance, pilih instance VPC yang sesuai dengan wilayah.

    4. Biarkan opsi lainnya sebagai default, lalu klik OK.

  4. Konfigurasikan bandwidth untuk komunikasi lintas wilayah.

    1. Klik nama transit router yang Anda buat di Langkah 2, lalu klik Create Connection di sebelah kanan halaman.

    2. Di kotak dialog Connection With Peer Network Instance, konfigurasikan parameter terkait, lalu klik OK.

      Gambar berikut menunjukkan contoh koneksi dari Hangzhou ke Shanghai. Region mewakili wilayah transit router, dan Peer Region mewakili wilayah tujuan. Untuk informasi tentang item konfigurasi, lihat koneksi lintas wilayah.2023-09-27_15-11-25.png

      Setelah pembuatan selesai, Anda dapat melihat instance pada tab Inter-region Connections.

  5. Tambahkan aturan grup keamanan.

    Contoh berikut menggunakan plugin jaringan Flannel untuk menambahkan CIDR jaringan Pod kluster peer ke grup keamanan setiap kluster.

    Catatan

    Untuk plugin jaringan Terway, gunakan CIDR kluster vSwitch. Anda dapat masuk ke Konsol VPC, dan mendapatkan CIDR vSwitch dari kolom IPv4 CIDR Block pada halaman VSwitch.

    1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

    2. Dapatkan CIDR jaringan Pod.

      1. Pada halaman Clusters, pilih wilayah Shanghai, klik nama kluster ack-shanghai, lalu pada halaman Cluster Information, klik tab Basic Information untuk melihat blok CIDR Pod kluster ack-shanghai.

      2. Kembali ke halaman Clusters, pilih wilayah Hangzhou, klik nama kluster ack-hangzhou, lalu pada halaman Cluster Information, klik tab Basic Information untuk mendapatkan blok CIDR Pod kluster ack-hangzhou.

    3. Konfigurasikan grup keamanan.

      1. Pada halaman Cluster Information setiap kluster, klik tab Basic Information, lalu klik ID grup keamanan di sebelah kanan Control Plane Security Group.

      2. Klik Add Rule di bawah tab Inbound.

      3. Atur Protocol Type ke All, Source ke blok CIDR Pod kluster peer, biarkan nilai default lainnya, lalu klik Save di kolom Actions.

    4. Masuk ke node kedua kluster dan gunakan perintah ping untuk menguji apakah jaringan terhubung ke kluster lain. Untuk informasi lebih lanjut, lihat Masuk ke node.

Langkah 3: Tambahkan kluster ke instance ASM dan buat gateway ingress terkelola

  1. Tambahkan kluster dari wilayah Hangzhou dan Shanghai ke instance ASM. Untuk informasi lebih lanjut, lihat Tambahkan kluster ke instance ASM.

  2. Buat gateway ingress.

    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

Langkah 4: Sebarkan aplikasi demo Bookinfo

Penting

Langkah-langkah berikut melibatkan penggantian kubeconfig beberapa kali. Kami sarankan Anda mengonfigurasi kubeconfig kedua kluster dalam file config yang sama dan menggunakan kubectl config use-context untuk beralih di antara mereka. Anda juga dapat menggunakan kubecm atau kubectx untuk mengelola kubeconfig untuk beberapa kluster.

  1. Sebarkan aplikasi Bookinfo di kluster ack-hangzhou dan ack-shanghai.

    kubectl apply -f bookinfo.yaml
  2. Gunakan kubectl untuk terhubung ke instance ASM dan buat aturan routing.

    1. Buat asm.yaml dengan konten berikut.

      Perluas untuk melihat konten YAML

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: bookinfo-gateway
      spec:
        selector:
          istio: ingressgateway # gunakan controller default istio
        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. Buat aturan routing.

      kubectl apply -f asm.yaml
  3. Verifikasi bahwa aplikasi Bookinfo berhasil diterapkan.

    1. Dapatkan alamat gateway ingress.

    2. Di bilah alamat browser Anda, masukkan http://{Alamat IP gateway ingress}/productpage dan segarkan halaman 10 kali untuk mengakses aplikasi Bookinfo.

      Aplikasi Bookinfo mengakses versi v1, v2, dan v3 layanan reviews. Anda dapat melihat bahwa rasio permintaan ke tiga versi layanan reviews mendekati 1:1:1.

      yuque_diagram

Langkah 5: Gunakan gagalover lintas wilayah dan distribusi trafik lintas wilayah

Konfigurasikan gagalover lintas wilayah

  1. Nonaktifkan layanan review di kluster ack-hangzhou.

    1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

    2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih Workloads > Deployments.

    3. Pada halaman Deployments, atur Namespace ke default, dan klik Scale di kolom Actions.

    4. Atur Desired Number Of Pods ke 0, lalu klik OK.

  2. Konfigurasikan aturan tujuan.

    Konfigurasikan aturan tujuan sehingga ketika layanan review tidak dapat diakses dalam 1 detik, itu akan dieject selama 1 menit.

    1. Pada halaman detail instance ASM, pilih Traffic Management Center > DestinationRule di panel navigasi sebelah kiri.

    2. Klik Edit YAML di kolom Actions dari reviews.

    3. Tambahkan konten berikut, lalu klik OK.

      spec:
        ......
        trafficPolicy:
          connectionPool:
            http:
              maxRequestsPerConnection: 1
          outlierDetection:
            baseEjectionTime: 1m
            consecutive5xxErrors: 1
            interval: 1s
      • maxRequestsPerConnection: jumlah maksimum koneksi.

      • baseEjectionTime: durasi eject minimum.

      • consecutive5xxErrors: jumlah kesalahan berturut-turut.

      • interval: interval waktu untuk deteksi eject.

  3. Aktifkan gagalover lintas wilayah.

    1. Pada halaman detail instance ASM, pilih ASM Instance > Base Information di panel navigasi sebelah kiri.

    2. Untuk versi instance ASM di bawah 1.22.6.66

      1. Pada halaman Base Information, klik Configure a Geolocation-based Load Balancing di sebelah kanan Geolocation-based Load Balancing.

      2. Di kotak dialog Geolocation-based Failover, atur Failover to cn-hangzhou ketika Policy berasal dari cn-shanghai, dan atur Failover to cn-shanghai ketika Policy berasal dari cn-hangzhou, lalu klik Confirm.

      Untuk versi instance ASM 1.22.6.66 dan di atasnya

      1. Pada halaman Base Information, klik Configure a Geolocation-based Load Balancing di sebelah kanan Geolocation-based Load Balancing.

      2. Klik Specify priority rules for regions. Atur Region in which the failure occurs ke cn-shanghai, dan The region to which the traffic is preferentially routed ke cn-hangzhou.

      3. Klik Add, lalu atur Region in which the failure occurs ke cn-hangzhou, The region to which the traffic is preferentially routed ke cn-shanghai, dan klik Save Configuration.

  4. Jalankan perintah berikut untuk meminta aplikasi Bookinfo 10 kali dan hitung jumlah hasil yang dirutekan ke versi v2 layanan reviews.

    for ((i=1;i<=10;i++));do curl http://<Port 80 dari Alamat IP gateway ingress di kluster ack-hangzhou>/productpage 2>&1|grep full.stars;done|wc -l

    Output yang diharapkan:

    20

    Output menunjukkan bahwa 10 permintaan akses dibuat dan 20 baris hasil dikembalikan (setiap kali permintaan dirutekan ke versi v2 layanan reviews, dua baris yang berisi full stars dikembalikan). Ini menunjukkan bahwa semua 10 permintaan dirutekan ke versi v2 layanan reviews di kluster ack-shanghai, dan gagalover lintas wilayah berhasil.

Konfigurasikan distribusi trafik lintas wilayah

Penting

Kemampuan distribusi trafik lintas wilayah hanya didukung untuk instance dengan versi ≥1.22.6.66.

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih ASM Instance > Base Information.

  3. Pada halaman Base Information, klik Configure a Geolocation-based Load Balancing di sebelah kanan Geolocation-based Load Balancing.

  4. Klik Congifure a traffic distribution rule, atur Source ke cn-hangzhou, Destination ke cn-shanghai, Traffic Percentage ke 10%, dan klik Save Configuration.

    Catatan

    Load balancing berbasis lokasi geografis diaktifkan dalam mode gagalover secara default. Anda perlu klik Disable di pojok kanan atas halaman sebelum Anda dapat memilih ulang dan mengaktifkan mode distribusi trafik.

  5. Jalankan perintah berikut untuk meminta aplikasi Bookinfo 10 kali untuk memverifikasi apakah distribusi trafik lintas wilayah berhasil.

    for ((i=1;i<=10;i++));do curl http://<Port 80 dari Alamat IP gateway ingress di kluster ack-hangzhou>/productpage 2>&1|grep full.stars;done

    Output yang diharapkan:

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

    Output menunjukkan bahwa setelah 10 akses, 2 baris full stars ditampilkan, menunjukkan bahwa dari 10 permintaan, 9 dirutekan ke versi v1 layanan reviews di kluster ack-hangzhou, dan 1 dirutekan ke versi v2 layanan reviews di kluster ack-shanghai. Ini mengonfirmasi bahwa trafik berhasil dirutekan ke beberapa kluster sesuai dengan bobot yang dikonfigurasi.

FAQ

Mengapa penambahan kluster Kubernetes ke ASM gagal meskipun saya telah menghubungkan jaringan VPC kluster melalui CEN?

Ketika kluster Anda berada di wilayah berbeda, jika Anda belum membeli paket transfer data lintas wilayah atau belum mengonfigurasi trafik lintas wilayah dengan benar saat menghubungkan jaringan VPC kluster, control plane ASM tidak akan dapat terhubung ke kluster data plane, mengakibatkan kegagalan menambahkan kluster ke ASM.

Untuk menyelesaikan masalah ini, Anda perlu mengonfigurasi ulang pengaturan trafik lintas wilayah di Cloud Enterprise Network (CEN) untuk menghubungkan jaringan VPC kluster. Untuk informasi lebih lanjut, lihat Langkah 2: Gunakan CEN untuk mengimplementasikan komunikasi VPC lintas wilayah.