方案概述
分佈在同城多個機房內的應用同時對外提供服務。同城機房物理距離較小,一般小於 50 公里。同城多活架構的難點有三個:
- 當某機房出現故障,能不能做到機房級的快速切換?
- 如何實現非對等部署下的全局的流量負載均衡?
- 對流量的精細化管控?
常見的同城多活實現方式(如下圖),在這個架構裏。DNS 本身存在緩存,DNS 的域名是映射到機房的網關 IP,網關又是每個機房一個局部的。很難做到機房級故障的秒級自動轉移和非對等狀態下的全局負載均衡。如果兩個機房的微服務應用如果共用一套註冊中心,就沒辦法保證微服務調用單元內閉環。
應用場景
藉助雲原生微服務引擎 MSE 產品,配置註冊中心的同城容災多活微服務應用。提供一個經典微服務場景在雲上實現同城容災的步驟,通過雲原生相關產品在用戶應用上雲時解決高可用,同城容災,多活等需求。主要步驟:
-
通過 CADT 快速完成應用環境部署;
-
同城雙 MSE 註冊中心接入;
-
MSE 網關接入。
方案適合場景和優勢
-
MSE 雲原生網關
雲原生網關默認雙可用區部署,既使一個可用區的節點都掛了,另一個可用區的節點依舊可以正常工作。
-
MSE 註冊中心
MSE 註冊中心默認三可用區部署,即使兩個可用區的節點都掛了依然不會影響業務。
-
機房級故障的秒級自動轉移
雲原生網關對於關聯服務的每個節點都建立了主動健康檢查的機制,默認是 2 秒(也可以自己調整)。主動健康檢查發現節點不健康,則會自動剔除,健康檢查除了 TCP 的端口探測外,也支持 HTTP 的探測,通過健康檢查機制,可以實現機房級故障的秒級自動轉移。
-
非對等部署狀態下的全局流量負載均衡
雲原生網關會把兩個集羣的同名服務進行合併,然後在合併後的節點數量的基礎上實現多種負載均衡策略,通過這種方式可以很好的實現兩個機房在非對等部署狀態下的負載均衡,例如:兩個機房的同應用各部署了 5 個節點,這個時候雲原生網關會把兩個機房的同名服務的節點進行合併,變成 10 個。然後雲原生網關在這 10 箇中實現輪詢等負載均衡策略,假設機房 1 的節點掛了 4 個,還剩一個。那這時分配給機房 1 的流量會自動的從 50% 降到 10%,分配給機房 2 的流量會自動的從 50% 提升到 90%。
-
流量的精細化管控
每個集羣一套註冊中心,應用啓動的時候只像本可用區的註冊中心註冊。這樣可以保證微服務調用在可用區內閉環。微服務調用可用區閉環以後,可以配合雲原生網關的多種流量路由能力實現藍綠和灰度等發佈策略。
部署架構
架構說明
2 個 MSE 註冊配置中心, 2 個 ACK 集羣,1 個高可用 MSE 雲原生網關。
- 每個可用區的微服務只註冊到本 AZ 的 MSE 註冊配置中心,實現閉環調用。
- 兩個 AZ 共享 1 個 NAT 網關,用於容器節點拉取鏡像。
產品介紹
專有網絡 VPC(Virtual Private Cloud): 是用戶基於阿里雲創建的自定義私有網絡, 不同的專有網絡之間二層邏輯隔離,用戶可以在自己創建的專有網絡內創建和管理雲產品實例,比如 ECS、負載均衡、RDS 等。
容器服務 Kubernetes 版 ACK: 容器服務 Kubernetes 版(簡稱 ACK)提供高性能且可伸縮的容器應用管理能力,支持企業級容器化應用的全生命週期管理。在 2021 年,ACK 成爲國內唯一連續三年入選 Gartner 公共雲容器報告的產品,同時在 2022 年成爲國內唯一進入 Forrester 領導者象限的產品。ACK 整合了阿里雲的虛擬化、存儲、網絡和安全能力,助力企業高效運行雲端 Kubernetes 容器化應用。
微服務引擎 MSE: 微服務引擎 MSE 面向業界主流開源微服務項目, 提供註冊配置中心和分佈式協調(原生支持 Nacos/ZooKeeper/Eureka )、雲原生網關(原生支持 Higress/Nginx/Envoy,遵循 Ingress 標準)、微服務治理和分佈式任務調度能力(兼容開源 XXL-JOB/ElasticJob/K8s Job/Spring Schedule)。
雲速搭 CADT(Cloud Architect Design Tools): 是一款爲上雲應用提供自助式雲架構管理的產品,顯著地降低應用雲上管理的難度和時間成本。本產品提供豐富的預製應用架構模板,同時也支持自助拖拽方式定義應用雲上架構;支持較多阿里雲服務的配置和管理。用戶可以方便的對雲上架構方案的成本、部署、運維、回收進行全生命週期的管理。
NAT 網關: 阿里雲 NAT 網關(NAT Gateway,簡稱 NAT)提供公網 NAT 和私網 NAT 兩種功能。公網 NAT 網關通過自定義 SNAT、DNAT 規則可爲雲上服務器提供對外公網服務、及主動訪問公網能力;私網 NAT 網關(也即 VPC NAT 網關)可使 VPC 內的 ECS 實例通過私網地址轉換服務,實現 VPC 與 VPC 之間、及 VPC 與線下 IDC 互訪能力。
彈性公網 IP: 彈性公網 IP 是獨立的公網 IP 資源,可與阿里雲專有網絡 VPC 類型的雲服務器 ECS、NAT 網關、ENI 網卡、私網負載均衡 SLB 綁定,並可以動態解綁滿足靈活管理的要求。彈性公網 IP 可爲您在雲上部署的網站提供 Internet 訪問服務。
前置條件
在進行本文操作之前,您需要完成以下準備工作:
1)註冊阿里雲賬號,並完成實名認證。您可以登錄阿里雲控制檯,並前往實名認證頁面 (https://account.console.aliyun.com/v2/#/authc/home) 查看是否完成實名認證。
2)購買按量付費資源,阿里雲賬戶餘額需要大於 100 元。考慮到部署後每小時會產生費用,建議賬號內餘額或者代金卷金額大於 200 元。您可以登錄阿里雲控制檯,前往賬戶總覽頁面 (https://usercenter2.aliyun.com/home) 查看賬戶餘額。
操作步驟
-
基礎環境搭建
-
在 ACK 集羣中部署 Demo 應用
2.1. 打開部署好的應用2.2. 獲取 J 和 K 區 MSE 註冊中心地址
-
配置 MSE 網關及路由
3.1. 配置 MSE 網關
-
多活場景驗證
4.1. 通過雲原生網關進行路由調試
4.2. 多活驗證
4.3. 切流驗證
4.4. PTS 壓測驗證(可選)
-
一鍵釋放資源
最佳實踐全部內容,請點擊此處查看。對方案和產品感興趣的朋友,可以加入釘釘羣交流(羣號:31852400)。
往期文章: