通过NLB 实现多服务端口映射

一、引言

在多云和全球化线上业务背景下,为统一业务入口、同时减少对现有业务环境的侵入性,我们建议采用单NLB多端口的方式实现。配置简单,低成本、高可用,非常适合对内业务系统的架构部署。

二、技术架构

通过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 上会提供不同的对外服务。

通过NLB 实现多服务端口映射

5.2 创建Instance Group(类型为UMIG,非托管实例组),将GCE 与UMIG进行绑定,并完成基于不同端口的服务Port Mapping(端口映射)

通过NLB 实现多服务端口映射

(1)UMIG “admas-us1a”配置示例,“admas-us1c”配置一样。

通过NLB 实现多服务端口映射
通过NLB 实现多服务端口映射

5.3 创建用于服务的健康检查规则,并注意检查网络防火墙规则对于HC(Heath Check)端口的放行。

通过NLB 实现多服务端口映射

说明:一个Load Banlance后端服务只能创建一个健康检查

5.4 创建基于不同服务的对外服务静态IP 地址

通过NLB 实现多服务端口映射

说明:提前保留的Static IP Address 35.226.123.74

六、实施步骤

  1. 创建TCP NLB-选择负载均衡器
通过NLB 实现多服务端口映射
通过NLB 实现多服务端口映射

说明:NLB仅支持Region级别,若选择Multiple Regions则会创建TCP Proxy Load Balancer。而TCP Proxy Load Balancing 有前端固定端口限制。

  1. 配置后端服务-Instance Group
通过NLB 实现多服务端口映射

说明:(1)定义NLB名称;(2)选择NLB作用的Region;(3)选择预先创建好的UMIG。

此处分别创建2个同步可用区的UMIG主要是实现同一服务分布在不同Zone,实现业务高可用性。

  1. 配置后端服务-会话保持
通过NLB 实现多服务端口映射

说明:(1)选择预先创建好的Health Check服务;(2)设置会话亲和性为Client IP;(3)设置连接排空时间为300s。

  • 客户端 IP、目的地 IP (CLIENT_IP),来源 IP 地址和目的地 IP 地址的 2 元组哈希
  • Connection-draining-timeout,连接排空过程旨在确保在从实例组中移除虚拟机或从区域 NEG 中移除端点时,为进行中的现有请求留出一定的时间,让这些请求可以完成。超时持续时间必须介于 0 到 3600 秒之间(含边界值)
  1. 配置前端服务-外部IP和Port
通过NLB 实现多服务端口映射

说明:(1)网络层级建议选择“Premium”;(2)选择IP地址为预留的静态IP或新建静态IP;(3)选择端口为“Multiple”;(4)设置多端口,80,8080,22。

  1. 检查NLB状态及是否正确配置
通过NLB 实现多服务端口映射

(1)检查NLB服务是否正常

通过NLB 实现多服务端口映射

(2)检查后端服务健康检查是否正常。

七、验证

验证NLB 访问,通过NLB 的外部IP 访问后端服务

(1)验证22端口访问

通过NLB 实现多服务端口映射

(2)验证80端口访问

通过NLB 实现多服务端口映射

(3)验证8080端口访问

通过NLB 实现多服务端口映射
通过NLB 实现多服务端口映射

八、参考链接

【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

发表评论

您的电子邮箱地址不会被公开。