為了保障業務穩定性,通常採用多個ACK叢集對等部署的方式來實現高可用。雲原生網關支援多ACK叢集接入,通過一個網關執行個體同時關聯多個叢集,將同名服務合并,在多個服務端點之間做負載平衡。搭配網關的健康檢測功能,自動探測服務可用性,實現更高效的故障自動切流。本文以兩個ACK叢集為例,介紹如何通過雲原生網關管理多個ACK叢集。
前提條件
建立兩個ACK叢集。具體操作,請參見建立ACK託管叢集。
在兩個叢集中配置同名的服務。以
httpbin服務為例,樣本配置如下所示。
背景資訊
在生產實踐中,若對業務穩定性要求非常高,通常會採用多ACK叢集對等部署的方式來保障高可用。例如,叢集A部署在可用性區域A,叢集B部署在可用性區域B,A與B兩個叢集部署的服務一致,當其中一個叢集故障時可以快速切換流量。
雲原生網關為了支援業務的高可用部署訴求,提供了多ACK叢集接入功能。即用一個雲原生網關執行個體同時關聯A、B兩個叢集,網關會將兩個叢集的同名服務進行合并,合并後的服務名稱與原來保持一致,但是服務的IP地址清單會同時包含兩個服務的所有IP地址。如果A或者B叢集故障,利用雲原生網關的路由能力會自動將流量分發到正常叢集。推薦搭配網關的主動健康檢測功能一起使用,由網關主動探測服務的IP地址可用性,從而帶來更高效的故障自動切流。
如下圖所示,雲原生網關管理著來自兩個ACK叢集的A、B兩個服務。當ACK叢集B發生crash時,仍然能夠通過網關訪問到叢集A的A、B兩個服務,且該切流動作自動發生,無需人工幹涉。

步驟一:在雲原生網關中添加Container Service來源
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。
在左側導覽列,選擇路由管理,然後選擇來源頁簽。
單擊创建来源。在创建来源面板,配置相關參數,然後單擊确定。具體操作,請參見建立服務來源。

步驟二:在雲原生網關中分別添加服務A與B
在左側導覽列,選擇路由管理,然後選擇服務頁簽。
單擊创建服务。在创建服务面板,佈建服務相關參數,然後單擊确定。具體操作,請參見建立服務

步驟三:在雲原生網關中為目標服務添加路由配置
在左側導覽列,單擊路由管理,然後選擇路由頁簽。
單擊创建路由。在创建路由頁面,配置相關參數,然後單擊保存并上线。具體操作,請參見建立路由。

結果驗證
當叢集A、B正常時
在服务列表頁面查看服務地址。
可觀察到服務地址中有兩條記錄。

多次訪問網關,創造訪問日誌。具體代碼如下所示。
while :; do curl http://<網關SLB地址>/test ; done在網關日誌中進行查詢分析。
登入MSE網關管理主控台。
在左側導覽列,選擇云原生网关 > 网关列表,並在頂部功能表列選擇地區。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊观测分析 > 日志中心。在頁面右上方,選擇SLSLog Service。

通過分組查詢可以查看upstream_host對應ACK叢集上的服務地址。此時,upstream_host取值有兩個,兩個ACK叢集均分了訪問該服務的流量。

當叢集A異常時
在叢集A中刪除httpbin服務。
此時,服務地址只有一條記錄。

多次訪問網關,建立訪問日誌。具體代碼如下所示。
while :; do curl http://<網關SLB地址>/test ; done在網關日誌中進行查詢分析。
登入MSE網關管理主控台。
在左側導覽列,選擇云原生网关 > 网关列表,並在頂部功能表列選擇地區。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊观测分析 > 日志中心。在頁面右上方,選擇SLSLog Service。

通過分組查詢可以觀察到此時upstream_host取值僅有一個,是叢集B的服務地址。該現象表明網關將全部流量切到了叢集B上。
