一、引言
在多云和全球化线上业务背景下,为统一业务入口、同时减少对现有业务环境的侵入性,我们建议采用单NLB多端口的方式实现。配置简单,低成本、高可用,非常适合对内业务系统的架构部署。
二、技术架构
三、技术简介
本方案主要解决同一个VM 对外提供多种对外应用服务,前端采用Network Load Balancing(Region后端服务)+ UMIG+GCE(多可用区) 实现,特定业务系统采用静态IP对外提供服务。其中主要涉及几个方面的概念:
(1)Network Load Balance与TCP Proxy Load Balance的区别;
(2)UMIG非托管实例组的prot mapping的使用;
(3) Backend Service会话亲和性的设置;
(4)后端服务
Connection-draining-timeout,连接排空时间的设置。
四、目标
成功访问NLB同一个静态IP对应不同的后端服务,主要是解决无状态服务的跨zone可用性问题。
五、准备工作
5.1 在同VPC 下的同Region不同Zone 建立相同后端服务的GCE实例,GCE 上会提供不同的对外服务。
5.2 创建Instance Group(类型为UMIG,非托管实例组),将GCE 与UMIG进行绑定,并完成基于不同端口的服务Port Mapping(端口映射)
(1)UMIG “admas-us1a”配置示例,“admas-us1c”配置一样。
5.3 创建用于服务的健康检查规则,并注意检查网络防火墙规则对于HC(Heath Check)端口的放行。
说明:一个Load Banlance后端服务只能创建一个健康检查
5.4 创建基于不同服务的对外服务静态IP 地址
说明:提前保留的Static IP Address 35.226.123.74
六、实施步骤
- 创建TCP NLB-选择负载均衡器
说明:NLB仅支持Region级别,若选择Multiple Regions则会创建TCP Proxy Load Balancer。而TCP Proxy Load Balancing 有前端固定端口限制。
- 配置后端服务-Instance Group
说明:(1)定义NLB名称;(2)选择NLB作用的Region;(3)选择预先创建好的UMIG。
此处分别创建2个同步可用区的UMIG主要是实现同一服务分布在不同Zone,实现业务高可用性。
- 配置后端服务-会话保持
说明:(1)选择预先创建好的Health Check服务;(2)设置会话亲和性为Client IP;(3)设置连接排空时间为300s。
- 客户端 IP、目的地 IP (CLIENT_IP),来源 IP 地址和目的地 IP 地址的 2 元组哈希
- Connection-draining-timeout,连接排空过程旨在确保在从实例组中移除虚拟机或从区域 NEG 中移除端点时,为进行中的现有请求留出一定的时间,让这些请求可以完成。超时持续时间必须介于 0 到 3600 秒之间(含边界值)
- 配置前端服务-外部IP和Port
说明:(1)网络层级建议选择“Premium”;(2)选择IP地址为预留的静态IP或新建静态IP;(3)选择端口为“Multiple”;(4)设置多端口,80,8080,22。
- 检查NLB状态及是否正确配置
(1)检查NLB服务是否正常
(2)检查后端服务健康检查是否正常。
七、验证
验证NLB 访问,通过NLB 的外部IP 访问后端服务
(1)验证22端口访问
(2)验证80端口访问
(3)验证8080端口访问
八、参考链接
【1】Cloud Load Balancing 后端服务概览
【2】基于后端服务的外部 TCP/UDP 网络负载平衡概览
【3】健康检查-SSL 和 TCP 成功标准
【4】启用连接排空
【5】防火墙规则
【6】Multiple port numbers for a named port