一、概要

部署load balancer负载平衡器的两个主要驱动因素是扩展设备(通过将工作负载分布在多个服务器上),同时改进其高可用性特性。

NSX通过NSX Edge services gateway(ESG)提供基本形式的负载平衡。NSX Edge负载平衡器可跨多台服务器分发网络流量,以实现最佳资源利用率。

二、NSX LB部署

2.1、部署方式

The NSX Edge services gateway 支持2类Load balancer部署:

1)One-armed mode (单臂模式or proxy mode): 代理模式下, the load balancer使用自己独立ip作为请求的源地址发给后端backend server。后端服务器将所有通信视为从负载平衡器发送,并直接响应负载平衡器。在代理模式下部署LB时会发生以下事件:

1)用户连接到ESG上配置的VIP地址(LB地址)。
2)ESG执行目标NAT,用配置池中的一台服务器替换VIP。
3)ESG执行源NAT,用自己的IP地址(VIP)替换用户IP地址。
4)ESG将请求从池转发到后端服务器之一。
5)服务器回复ESG而不是回复用户请求,因为用户IP地址已被ESG VIP替换。
6)ESG将服务器响应转发给用户。

esxi 设置vt esxi 设置均衡模式_服务器


单臂模式部署非常简单,但缺点是每个网段都需要一个负载平衡器,因为Edge路由器需要与内部服务器位于同一网段上。此外,由于流量是“代理的”,因此它会使流量分析更加困难。2)Inline mode内联模式(transparent mode或透明模式):内联负载平衡器通过两个网络接口(外+内)连接到网络。在这种情况下,负载平衡器有一个外部网络和一个不能直接从外部网络访问的内部网络。内联负载平衡器充当内部网络上虚拟机的NAT网关。流量如下图:

esxi 设置vt esxi 设置均衡模式_SSL_02

1)用户连接到ESG上配置的VIP地址(LB地址)。
2)ESG执行DNAT,用池中一台服务器的IP地址替换VIP。
3)ESG将请求转发到后端服务器。
4)服务器从ESG接收以用户IP为源的请求,并直接回复用户
5)当服务器回复用户时,响应将通过web服务器的默认网关,即ESG。
6)ESG更新负载平衡服务并将响应转发给上行链路。

三、NSX edg上配置LB

1)自定义创建一个SSL certificate:可以导入CA certificates或手动创建一个自签名证书文件。

定位到NSX的Manage > Settings > Certificates:

esxi 设置vt esxi 设置均衡模式_网络_03


CSR是Certificate Signing Request的英文缩写,即证书签名请求文件。是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。CSR是以-----BEGIN CERTIFICATE REQUEST-----开头,-----END CERTIFICATE REQUEST-----为结尾的base64格式的编码的文本文件。CSR生成工具非常多,如openssl工具,keystore explore,XCA等,在线工具:https://myssl.com/csr_create.html

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_04


esxi 设置vt esxi 设置均衡模式_网络_05

esxi 设置vt esxi 设置均衡模式_服务器_06


2)完成后,将证书申请编码填入,申请自签名证书:

esxi 设置vt esxi 设置均衡模式_网络_07


esxi 设置vt esxi 设置均衡模式_esxi 设置vt_08


esxi 设置vt esxi 设置均衡模式_SSL_09


2)配置启用LB:Manage > Load Balancer

esxi 设置vt esxi 设置均衡模式_服务器_10

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_11


esxi 设置vt esxi 设置均衡模式_SSL_12


3)创建Application profile(应用程序配置文件):

esxi 设置vt esxi 设置均衡模式_SSL_13


esxi 设置vt esxi 设置均衡模式_SSL_14


如上图所示:

1>填入配置文件的名称,选中流量的类别;

2>Persistence(会话持久性): 用于指定跟踪和存储网络流量会话数据, 比如:指定响应用户客户端请求的特定后端池的成员.,这将保证同一客户端在整个或后续会话生命期内请求总是指向同一个后端池对象。

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_15

3>Enable SSL Passthrough(SSL直通): 启用该功能后,NSX edge不会在edge上终止客户端HTTPS(SSL会话),而是直接在edge负责负载平衡流量的服务器上终止客户端。
4>Insert X-Forwarded-For HTTP header(插入 X-Forwarded-For HTTP 标头): 用于标识通过负载平衡器连接到web服务器的客户端的原始IP地址。如果在应用程序配置文件中启用了【enabled pool side SSL:启用池端SSL】选项,则所选池由HTTPS服务器组成。

此处以走https流量为例:enabled pool side certificates和enabled service certificate under “Virtual Server Certificates

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_16


在Pool Certificate下,选中相同的证书:

esxi 设置vt esxi 设置均衡模式_网络_17


4)创建一个后端 Server Pool

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_18


esxi 设置vt esxi 设置均衡模式_负载均衡_19


esxi 设置vt esxi 设置均衡模式_esxi 设置vt_20

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_21


esxi 设置vt esxi 设置均衡模式_SSL_22


esxi 设置vt esxi 设置均衡模式_服务器_23


esxi 设置vt esxi 设置均衡模式_服务器_24


注意:透传(Transparent)选项指示了:客户端IP地址对后端服务器是否可见。

如果未选择透明,后端服务器会将流量中的负载平衡器内部IP视为源IP。
如果选择“透明”,则源IP是真实的客户端IP,并且必须将NSX Edge设置为默认网关,以确保返回的数据包通过NSX Edge设备。

5)创建Virtual Servers (VIP)

esxi 设置vt esxi 设置均衡模式_网络_25


esxi 设置vt esxi 设置均衡模式_SSL_26


注意:上图中的ip地址是用于负载均衡监听的IP地址,也是ESG上绑定vNic的地址;

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_27


esxi 设置vt esxi 设置均衡模式_服务器_28


6)验证:

分别访问两个uag地址和VIP验证。本例在红,可分别在浏览器访问web_server 的地址,然后再访问LB 的VIP验证。

7)其他
看额登陆ESG设备,执行:show service loadbalancer pool,查看LB状态。

Site-A-ESG01-0> show service loadbalancer pool
-----------------------------------------------------------------------
Loadbalancer Pool Statistics:
POOL WEB-SRV-Pool
| LB METHOD round-robin
| LB PROTOCOL L7
| Transparent disabled
| SESSION (cur, max, total) = (0, 2, 96)
| BYTES in = (38579), out = (69366)
+->POOL MEMBER: WEB-SRV-Pool/WEB-SRV01, STATUS: UP
| | HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
| | | LAST STATE CHANGE: 2018-05-26 15:30:43
| | SESSION (cur, max, total) = (0, 1, 45)
| | BYTES in = (18403), out = (32361)
+->POOL MEMBER: WEB-SRV-Pool/WEB-SRV02, STATUS: UP
| | HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
| | | LAST STATE CHANGE: 2018-05-26 15:30:43
| | SESSION (cur, max, total) = (0, 1, 51)
| | BYTES in = (20176), out = (37005)

SSL off-loading:允许ESG负载平衡器在将流量传递到后端服务器池之前处理SSL解密/加密。这将从后端服务器卸载加密/解密任务。通过SSL卸载(即到LB就已经完成了SSL解密/加密),外部客户端和LB(边缘)之间的通信量是HTTPS,而NSXEdge和后端服务器之间的通信量是HTTP。配置SSL卸载,需要注意的是要为Edge LB生成证书。

SSL代理:该代理在LB处终止SSL,但将流量作为HTTPS传递到后端服务器;它支持SSL Passthrough,该代理将HTTPS流量通过LB传递到后端服务器,以执行SSL终止。

服务监控:服务监视器定义了如何监视正在进行负载平衡的服务器是否处于活动状态以及是否应该接收用户请求。可以通过HTTP或HTTPS请求、TCP或UDP端口和/或ICMP ping检查服务器的有效性。

当使用HTTP(s)请求时,可以定义轮询间隔、HTTP请求的类型(GET、OPTIONS或POST)、要测试的URL以及定义测试成功时应接收回的字符串。如果请求的响应不是所期望的,可以将服务器从池中取出,这样它就不会收到任何新的请求。

esxi 设置vt esxi 设置均衡模式_esxi 设置vt_29

输入服务监视器的名称。
输入测试服务器的时间间隔(以秒为单位)。间隔是监视器向后端服务器发送请求的时间段(以秒为单位)。
超时值是必须从服务器接收响应的最长时间(以秒为单位)。
从下拉菜单中选择向服务器发送健康检查请求的方式。支持五种类型的监视器—ICMP、TCP、UDP、HTTP和HTTPS。

一个服务器池管理着后端服务器,以便能够高效地共同承担工作负载。服务器池管理着负载平衡器的分发方法,并使用服务器监视器进行运行状况检查。NSX支持以下列出的平衡算法:

IP_HASH: 根据每个数据包的源和目标IP地址的hash值来选择后端服务器。
最少连接:根据服务器上已有的连接数将客户端请求分发到多个服务器。将新连接发送到连接数最少的服务器。
轮循:每个服务器根据分配给它的权重依次处理请求流量。当服务器的处理时间保持均匀分布时,这是最平滑、最公平的算法。
URI:URI的左边部分(问号之前)被hash并除以正在运行的服务器的总权重,得到的结果来判断将接收请求的服务器。这确保了只要没有服务器启动或关闭,URI总是指向同一个服务器。

esxi 设置vt esxi 设置均衡模式_SSL_30


应用程序配置文件增强了对网络流量的控制,使流量管理变得简单高效。应用程序配置文件定义了特定类型网络流量的处理行为。

应用程序规则:它是一种基于特定触发器操纵应用程序流量的方法。应用程序规则用于创建高级负载平衡规则,这些规则可能不适用于ESG上本机可用的应用程序配置文件或服务。创建后,可将该规则关联到虚拟服务器上使用。