日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

边开飞机边换引擎?我们造了个新功能保障业务流量无损迁移

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 边开飞机边换引擎?我们造了个新功能保障业务流量无损迁移 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 |?顧靜(子白)
來源 | 阿里巴巴云原生公眾號

容器化部署應用可以降低企業成本,提升研發效率,解放運維人員。據 Gartner 預計,到 2022 年,將有 75% 的企業將在生產中運行容器化應用程序。Kubernetes 是企業部署容器化應用的首選框架。由于 Kubernetes 部署及運維的復雜性,越來越多的客戶選擇將業務從 ECS 或者自建的 Kubernetes 遷移到阿里云托管版 Kubernetes —— ACK 中。但是,如何保證業務流量的平滑遷移成為一大挑戰。

Cloud Controller Manager(CCM)是 ACK 的一個系統核心組件,負責對接 Kubernetes 與云上基礎產品如 CLB、VPC、DNS 等。當 Service 的類型設置為 Type=LoadBalancer 時,CCM 會為該 Service 創建或配置阿里云負載均衡 CLB。當 Service 對應的后端 Endpoint 或者集群節點發生變化時,CCM 會自動更新 CLB 的后端虛擬服務器組。此外,CCM 還提供了許多阿里云注解,支持豐富的負載均衡能力。

近期 CCM 發布了一個新特性——支持在同一個 CLB 后端掛載集群內節點和集群外 ECS,借助這一特性可以解決業務容器化過程中流量平滑遷移的難題

場景一:應用容器化改造(流量平滑遷移)

對于一個 CLB,支持將流量轉發至集群內及集群外節點

1)操作步驟

  • 登錄?CLB 控制臺創建 CLB,記錄 CLB ID (“lb-xxxxx”)
  • 創建 Service

設置 service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners 為 false,不管理監聽信息。

CCM 會自動創建對應的虛擬服務器組。

cat <<EOF |kubectl apply -f - apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxx"service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "false"labels:app: nignxname: my-nginx-svcnamespace: default spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: nginxtype: LoadBalancer EOF
  • 登錄 CLB 控制臺,創建監聽并關聯虛擬服務器組
  • 登錄 CLB 控制臺,手動在虛擬服務器組中添加集群外 ECS 并設置權重

2)預期結果

配置完成后,在 CLB 的虛擬服務組里既可以看到集群內的節點,也可以看到集群外的 ECS。集群內應用進行擴縮容時,集群外的 ECS 節點不受影響。

場景二:金絲雀發布

支持金絲雀發布,將流量按比例轉發至集群內及集群外節點

遷移過程中,往往需要逐步將流量從存量 ECS 遷往 Kubernetes 集群中。CCM 支持通過 annotationservice.beta.kubernetes.io/alicloud-loadbalancer-weight為 Kubernetes 集群配置權重,從而實現流量的逐步遷移。

1)注意事項

  • 不能跨 CLB 復用虛擬服務器組
  • 一個虛擬服務器組只能與一個端口關聯
  • 集群內節點權重由 CCM 組件設置,集群外 ECS 權重需要用戶手動設置

2)操作步驟

  • 登錄?CLB 控制臺創建 CLB、監聽及虛擬服務器組,記錄 CLB ID (“lb-xxxx”) 及虛擬服務器組 Id (“rsp-xxx”)
  • 手動在虛擬服務器組中添加集群外 ECS 并設置權重
  • 創建 Service
apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx"service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx"# 集群內部權重為20%service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20"name: nginx-svcnamespace: default spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: nginxsessionAffinity: Nonetype: LoadBalancer

3)預期結果

配置完成后,在 CLB 的虛擬服務組里既可以看到集群內的節點,也可以看到集群外的 ECS,集群節點的權重按照 annotation 配置。集群內應用進行擴縮容時,集群外的 ECS 節點不受影響。

場景三:多集群業務流量多活與災備

對于一個 CLB,支持將流量轉發至多個 Kubernetes 集群內

企業用戶會采取多種措施以保障應用的高可用性,如創建多個集群進行備份、容災等。這要求業務流量可以通過一個 CLB 接入多個 Kubernetes 集群中,并且支持為 Kubernetes 集群設置不同的權重,如下圖所示。

1)注意事項

  • 不能跨 CLB 復用虛擬服務器組
  • 一個虛擬服務器組只能與一個端口關聯
  • 兩個集群均已配置 Cluster Id,否則兩個集群中的 service 需要不同名稱

2)操作步驟

  • 登錄?CLB 控制臺創建 CLB、監聽及虛擬服務器組,記錄 CLB ID (“lb-xxxx”)? 及虛擬服務器組 Id (“rsp-xxx”)
  • 集群 A 中創建 Serivce-A,權重設置為 20%
apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-id: "lb-xxxxx"service.beta.kubernetes.io/alicloud-loadbalancer-vgroup-ids: "80:rsp-xxx"service.beta.kubernetes.io/alicloud-loadbalancer-weight: "20"name: service-Anamespace: default spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: nginxsessionAffinity: Nonetype: LoadBalancer

3)預期結果

配置完成后,在 clb 的虛擬服務組里既可以看到集群 A 內的節點,也可以看到集群 B 的節點。集群節點的權重按照 annotation 自動設置。集群內應用進行擴縮容時,CLB 后端虛擬服務器組會自動更新。

總結

出于降本增效的考慮,越來越多的企業采用容器化方式部署應用。在業務遷移過程中,如何保障業務流量不受損成為一大難題。對于電商類應用而言,業務流量下跌往往會導致交易量下跌,造成重大損失。游戲類應用對業務流量也十分敏感,短暫的流量中斷都會明顯地影響游戲用戶體驗;交通類應用的流量下跌會影響交通流量管制、交通故障排險效率。保障業務流量不受損是保障用戶業務正常運轉的底線。

CCM 發布的支持在同一個 CLB 后端掛載集群內節點和集群外 ECS 的功能,可以一舉解決遷移過程中流量中斷的難題。同時,還支持將業務流量轉發至多個 Kubernetes 集群內,支撐備份、容災等需求,保障業務高可用。

總結

以上是生活随笔為你收集整理的边开飞机边换引擎?我们造了个新功能保障业务流量无损迁移的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。