作者:MeshCloud脈時(shí)云公有云架構(gòu)師 鄧軍
一、引言
在多云和全球化線上業(yè)務(wù)背景下,為統(tǒng)一業(yè)務(wù)入口、同時(shí)減少對(duì)現(xiàn)有業(yè)務(wù)環(huán)境的侵入性,我們建議采用單NLB多端口的方式實(shí)現(xiàn)。配置簡(jiǎn)單,低成本、高可用,非常適合對(duì)內(nèi)業(yè)務(wù)系統(tǒng)的架構(gòu)部署。
二、技術(shù)架構(gòu)
三、技術(shù)簡(jiǎn)介
本方案主要解決同一個(gè)VM 對(duì)外提供多種對(duì)外應(yīng)用服務(wù),前端采用Network Load Balancing(Region后端服務(wù))+ UMIG+GCE(多可用區(qū)) 實(shí)現(xiàn),特定業(yè)務(wù)系統(tǒng)采用靜態(tài)IP對(duì)外提供服務(wù)。其中主要涉及幾個(gè)方面的概念:
(1)Network Load Balance與TCP Proxy Load Balance的區(qū)別;
(2)UMIG非托管實(shí)例組的prot mApping的使用;
(3) Backend Service會(huì)話親和性的設(shè)置;
(4)后端服務(wù)
Connection-draining-timeout,連接排空時(shí)間的設(shè)置。
四、目標(biāo)
成功訪問(wèn)NLB同一個(gè)靜態(tài)IP對(duì)應(yīng)不同的后端服務(wù),主要是解決無(wú)狀態(tài)服務(wù)的跨zone可用性問(wèn)題。
五、準(zhǔn)備工作
5.1 在同VPC 下的同Region不同Zone 建立相同后端服務(wù)的GCE實(shí)例,GCE 上會(huì)提供不同的對(duì)外服務(wù)。
5.2 創(chuàng)建Instance Group(類型為UMIG,非托管實(shí)例組),將GCE 與UMIG進(jìn)行綁定,并完成基于不同端口的服務(wù)Port Mapping(端口映射)
(1)UMIG “admas-us1a”配置示例,“admas-us1c”配置一樣。
5.3 創(chuàng)建用于服務(wù)的健康檢查規(guī)則,并注意檢查網(wǎng)絡(luò)防火墻規(guī)則對(duì)于HC(Heath Check)端口的放行。
說(shuō)明:一個(gè)Load Banlance后端服務(wù)只能創(chuàng)建一個(gè)健康檢查
5.4 創(chuàng)建基于不同服務(wù)的對(duì)外服務(wù)靜態(tài)IP 地址
說(shuō)明:提前保留的Static IP Address 35.226.123.74
六、實(shí)施步驟
- 創(chuàng)建TCP NLB-選擇負(fù)載均衡器
說(shuō)明:NLB僅支持Region級(jí)別,若選擇Multiple Regions則會(huì)創(chuàng)建TCP Proxy Load Balancer。而TCP Proxy Load Balancing 有前端固定端口限制。
- 配置后端服務(wù)-Instance Group
說(shuō)明:(1)定義NLB名稱;(2)選擇NLB作用的Region;(3)選擇預(yù)先創(chuàng)建好的UMIG。
此處分別創(chuàng)建2個(gè)同步可用區(qū)的UMIG主要是實(shí)現(xiàn)同一服務(wù)分布在不同Zone,實(shí)現(xiàn)業(yè)務(wù)高可用性。
- 配置后端服務(wù)-會(huì)話保持
說(shuō)明:(1)選擇預(yù)先創(chuàng)建好的Health Check服務(wù);(2)設(shè)置會(huì)話親和性為Client IP;(3)設(shè)置連接排空時(shí)間為300s。
- 客戶端 IP、目的地 IP (CLIENT_IP),來(lái)源 IP 地址和目的地 IP 地址的 2 元組哈希
- Connection-draining-timeout,連接排空過(guò)程旨在確保在從實(shí)例組中移除虛擬機(jī)或從區(qū)域 NEG 中移除端點(diǎn)時(shí),為進(jìn)行中的現(xiàn)有請(qǐng)求留出一定的時(shí)間,讓這些請(qǐng)求可以完成。超時(shí)持續(xù)時(shí)間必須介于 0 到 3600 秒之間(含邊界值)
- 配置前端服務(wù)-外部IP和Port
說(shuō)明:(1)網(wǎng)絡(luò)層級(jí)建議選擇“Premium”;(2)選擇IP地址為預(yù)留的靜態(tài)IP或新建靜態(tài)IP;(3)選擇端口為“Multiple”;(4)設(shè)置多端口,80,8080,22。
- 檢查NLB狀態(tài)及是否正確配置
(1)檢查NLB服務(wù)是否正常
(2)檢查后端服務(wù)健康檢查是否正常。
七、驗(yàn)證
驗(yàn)證NLB 訪問(wèn),通過(guò)NLB 的外部IP 訪問(wèn)后端服務(wù)
(1)驗(yàn)證22端口訪問(wèn)
(2)驗(yàn)證80端口訪問(wèn)
(3)驗(yàn)證8080端口訪問(wèn)
八、參考鏈接
【1】Cloud Load Balancing 后端服務(wù)概覽
https://cloud.google.com/load-balancing/docs/backend-service
【2】基于后端服務(wù)的外部 TCP/UDP 網(wǎng)絡(luò)負(fù)載平衡概覽
https://cloud.google.com/load-balancing/docs/network/networklb-backend-service
【3】健康檢查-SSL 和 TCP 成功標(biāo)準(zhǔn)
https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp
【4】啟用連接排空
https://cloud.google.com/load-balancing/docs/enabling-connection-draining
【5】防火墻規(guī)則
https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#firewall_rules
【6】Multiple port numbers for a named port
https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-unmanaged-instances#multiple_port_numbers_for_a_named_port






