作者:MeshCloud脉时云公有云架构师 邓军
在多云和全球化线上业务背景下,为统一业务入口、同时减少对现有业务环境的侵入性,我们建议采用单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
说明:NLB仅支持Region级别,若选择Multiple Regions则会创建TCP Proxy Load Balancer。而TCP Proxy Load Balancing 有前端固定端口限制。
说明:(1)定义NLB名称;(2)选择NLB作用的Region;(3)选择预先创建好的UMIG。
此处分别创建2个同步可用区的UMIG主要是实现同一服务分布在不同Zone,实现业务高可用性。
说明:(1)选择预先创建好的Health Check服务;(2)设置会话亲和性为Client IP;(3)设置连接排空时间为300s。
说明:(1)网络层级建议选择“Premium”;(2)选择IP地址为预留的静态IP或新建静态IP;(3)选择端口为“Multiple”;(4)设置多端口,80,8080,22。
(1)检查NLB服务是否正常
(2)检查后端服务健康检查是否正常。
验证NLB 访问,通过NLB 的外部IP 访问后端服务
(1)验证22端口访问
(2)验证80端口访问
(3)验证8080端口访问
【1】Cloud Load Balancing 后端服务概览
https://cloud.google.com/load-balancing/docs/backend-service
【2】基于后端服务的外部 TCP/UDP 网络负载平衡概览
https://cloud.google.com/load-balancing/docs/network/networklb-backend-service
【3】健康检查-SSL 和 TCP 成功标准
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】防火墙规则
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