全部產品
Search
文件中心

Alibaba Cloud Service Mesh:在ASM入口網關中使用網路型負載平衡NLB

更新時間:Jun 30, 2024

網路型負載平衡NLB(Network Load Balancer)是阿里雲面向萬物互聯時代推出的新一代四層負載平衡,支援超高效能和自動彈效能力,具有更高的可用性,能夠進一步提升網關流量的穩定性。ASM網關支援使用NLB。配置ASM網關的ServiceType為LoadBalancer時,預設會關聯一個CLB作為網關Service的負載平衡器。本文介紹如何關聯一個NLB作為ASM網關的負載平衡器。

前提條件

已添加Kubernetes叢集到ASM執行個體,且滿足以下條件:

  • Kubernetes叢集版本為v1.24及以上且CCM版本為v2.5.0及以上。

  • ASM執行個體版本為1.18及以上。

操作步驟

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 入口網關頁面,單擊使用YAML建立,配置網關名稱為ingressgateway-nlb-test,選擇命名空間istio-system,配置如下YAML。

    YAML中需要配置loadBalancerClassalibabacloud.com/nlb。NLB不需要指定規格,但是需要指定至少兩個可用性區域。

    展開查看YAML

    apiVersion: istio.alibabacloud.com/v1
    kind: IstioGateway
    metadata:
      name: ingressgateway-nlb-test
      namespace: istio-system
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: istio
                  operator: In
                  values:
                  - ingressgateway
              topologyKey: kubernetes.io/hostname
            weight: 1
      autoCreateGatewayYaml: false
      clusterIds:
      - ${當前網格中已添加的叢集ID}
      disableContainerPortExposed: true
      dnsPolicy: ClusterFirst
      externalTrafficPolicy: Local
      gatewayType: ingress
      hostNetwork: false
      ports:
      - name: http-0
        port: 80
        protocol: HTTP
        targetPort: 80
      - name: https-1
        port: 443
        protocol: HTTPS
        targetPort: 443
      replicaCount: 2
      resources:
        limits:
          cpu: "2"
          memory: 4G
        requests:
          cpu: 200m
          memory: 256Mi
      rollingMaxSurge: 25%
      rollingMaxUnavailable: 25%
      runAsRoot: true
      serviceAnnotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "10"
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: ${可用性區域ID}:${該可用性區域下的一個VSwitch ID},${另一個可用性區域ID}:${該可用性區域下的一個VSwitch ID}	# 例如cn-hangzhou-g:vsw-bp1xxxxxxxxxx,cn-hangzhou-j:vsw-bp1xxxxxxxxxx
      serviceType: LoadBalancer
      loadBalancerClass: alibabacloud.com/nlb

    建立完成後,介面顯示如下。使用CLB的網關,服務地址顯示為一個IP地址;使用NLB的網關,服務地址顯示為一個網域名稱。如果您建立入口網關時指定了兩個可用性區域,則該網域名稱後面會綁定兩個IP地址。

    nlb.png

    您可以登入NLB控制台,查看當前NLB的狀態。關於NLB的更多資訊,請參見通過Annotation配置網路型負載平衡NLBNLB產品計費