【组网需求】

如下图所示,公司网络调整前Server2对外提供HTTP业务,Server3对外提供FTP业务。这时如果Server2故障,则所有HTTP业务中断;如果HTTP业务很多,而FTP业务很少,则会造成Server2拥塞,Server3闲置。 所以公司希望利用USG9000的负载均衡功能对网络进行调整。

公司希望网络调整后Server2Server3能够同时对外提供HTTPFTP业务,而且HTTP业务能够被平均分配到Server2Server3上, FTP业务也能够被平均分配到Server2Server3上。这样如果Server2故障,Server3依旧能够对外提供HTTPFTP业务;而且无论HTTP业务和FTP业务多少,Server2Server3处理的业务流数都相同,不会造成一台服务器拥塞而另外一台闲置的情况。另外公司还希望服务器能够主动访问Internet

showp_w_picpath-10092053-10118533-c16b9643fdd5

【强叔规划】

看完公司的组网需求后,强叔先带大家来分析下网络调整前后的业务流处理方式。

如下图所示,网络调整前,外网用户访问公司的HTTP业务流(访问53.111.31.36)会被转发到Server2IP地址是10.10.10.36)上;外网用户访问公司的FTP业务流(访问53.111.31.37)会被转发到Server3IP地址是10.10.10.136)上。这里的公网地址和私网地址的转换是通过在网关上配置NAT Server功能来实现的。

showp_w_picpath-10092057-10118533-122a14d0aaf5

网络调整前的地址对应关系如下表所示:

业务       公网IP             Server 2 IP          Server 3 IP

HTTP     53.111.31.36    10.10.10.36         -

FTP      53.111.31.37    -                   10.10.10.136

如下图所示,网络调整后,Server2Server3分别虚拟成了两个虚拟机,一个提供HTTP业务,一个提供FTP业务。而且由于在USG上配置了服务器负载均衡功能,使外网用户访问公司的HTTP业务流(访问53.111.31.36)会被平均分到Server2Server3HTTP虚拟机上,外网用户访问公司的FTP业务流(访问53.111.31.37)会被平均分到Server2Server3FTP虚拟机上。

showp_w_picpath-10092059-10118533-5cc3806cf694

网络调整后的地址对应关系如下表所示:

业务       公网IP             Server 2 IP          Server 3 IP

HTTP     53.111.31.36    10.10.10.36          10.10.10.136

FTP      53.111.31.37    10.10.10.37          10.10.10.136

【配置步骤】

1、  配置服务器负载均衡功能。

配置服务器负载均衡功能前,应首先完成网络基础配置,并全开包过滤(因为网络出口处部署了友商的安全网关,所以这里就包过滤全开了)。

1)      选择“网络>服务器负载均衡>服务器负载均衡”。

2)      单击“新建”,按如下参数配置HTTP业务的服务器负载均衡。

“虚拟服务器地址”是HTTP业务的公网地址,“实服务器地址”是Server2Server3的私网地址。由于公司希望HTTP业务流平均分配到Server2Server3上,因此“负载均衡算法”这里选择“简单轮询”。


showp_w_picpath-10092063-10118533-523cd2ae6b51

3)参考上述步骤,按如下参数配置FTP业务的服务器负载均衡。

“虚拟服务器地址”是FTP业务的公网地址,“实服务器地址”是Server2Server3的另一组私网地址。由于公司希望FTP业务流平均分配到Server2Server3上,因此“负载均衡算法”这里选择“简单轮询”。

showp_w_picpath-10092065-10118533-ee9b6e0d1405

【强叔点评】

负载均衡算法是服务器负载均衡的核心技术,本案例使用的是简单轮询算法。

所谓简单轮询算法是指将客户端的业务流依次分配到各个服务器上。如下图所示,USG9000将客户端的业务流依次分配给4个服务器,当每个服务器都分配到一条流后,再从服务器S1开始重新依次分配。当业务流量较大时,经过一段时间后,各服务器的累积的流数大致相等。这里的“一条流”可以理解为USG9000上建立的一条会话或一个连接,所谓“逐流”就是将属于同一条流的报文都分配给同一个服务器来处理。当会话老化后,即使流量的源IP、目的IP等网络参数都没有改变,也会视新建的会话为一条新流。

加权轮询算法是将客户端的业务流按照一定权重比依次分配到各个服务器上,是在简单轮询算法上的一种增强。


showp_w_picpath-10092067-10118533-27f3635b3e55

USG9000还支持(加权)最小连接算法和(加权)会话保持算法。

最小连接算法是将客户端的业务流分配到并发连接数最小的服务器上。并发连接数是指服务器的实时连接数,即当前存在的连接数。如下图所示,客户端Client 1Client 2发出的请求到达USG9000后,USG9000会统计4个服务器上的并发连接数。因为服务器S1上的并发连接数最小,所以两条流都被分配给服务器S1

最小连接算法解决了轮询算法存在的问题,即轮询算法在分配业务流时并不考虑每个服务器上的实际负载量,而最小连接算法会统计各个服务器上的实际存在的连接数,保证业务流量分配到负载最小的服务器上。

加权最小连接算法是将客户端的业务流量分配到加权并发连接数最小的服务器上。

showp_w_picpath-10092069-10118533-93a893b9375d

会话保持算法是将同一客户端的业务流全部分配到同一台服务器上,通过基于源IPHASH计算实现此目的。如下图所示,Client 1Client 2是两个拥有固定IP地址的客户端,经过会话保持算法计算后,USG9000将客户端Client 1的业务流都分配给服务器S1,客户端Client 2的业务流都分配给服务器S4。只要客户端的IP地址不改变,即使客户端下线后再次登录,USG9000仍可保证将该客户端的业务流量分配到同一台服务器上。

会话保持算法的一个典型应用就是校园网的在线培训或考试系统:当用户开始进行在线操作时,需要保证此过程的连续性,所以应当由固定的服务器来处理该用户的所有请求。加权会话保持算法是将同一客户端的业务流全部分配到同一台服务器上,权重比高的服务器将分配到更多的业务流。


showp_w_picpath-10092071-10118533-6fe9f5bf4e47

看完各种负载均衡算法的介绍后,小伙们也许会问道:“为什么这个局点采用的是最简单的简单轮询算法呢?

其实原因有三:一是局点的流量不大,不需要考虑当前服务器的实际流量,因此不使用最小连接算法;二是两台服务器性能相近,不需要使用加权算法;三是后续跟客户约定如果局点上线考试系统,则再部署会话保持算法。所以目前使用的是最简单的简单轮询算法。

2、  配置源NAT功能,使服务器能够主动访问Internet

这里需要为每个虚拟服务器分别创建NAT策略,NAT策略的转换前的源地址为实服务器地址,地址池中的地址为虚拟服务器的地址。

【强叔验证】

USG9000成功上线运行五分钟后,可以看到服务器健康状态正常,会话按照简单轮询算法正确均分。


showp_w_picpath-10092073-10118533-564f0e7b998f

这时细心的小伙伴们也许会问“为什么是会话数均分而不是流量均分呢”?

因为简单轮询算法是将业务流平均分配到各个实服务器上,而“一条流”代表着USG9000上建立的一条会话(连接),所以上图中会话数近似相等,是符合算法预期结果的。但是对于每条流来说,包含的“流量”可能不等,几K或几M都有可能。所以即使会话数近似相等,流量占比也可能不等,甚至相差较多。

【拍案惊奇】

1、  此案例的惊奇之处在于这是一个经典的服务器负载均衡的网络调整案例,将普通的NAT Server功能调整成服务器负载均衡功能。

2、 此案例的另一惊奇之处在于介绍了服务器负载均衡的各种算法,小伙伴们可以根据实际需要选择。

【强叔问答】

为什么配置NAT Server功能时,不需要配置源NAT就可以使内网服务器访问公网?而配置了服务器负载均衡功能后,则需要配置源NAT才能使内网服务器能够访问公网?