1.服务器负载均衡概述

负载均衡基本概念

  • 实服务器:处理业务流量的实体服务器,客户端发送的服务请求最终是由实服务器处理的。

  • 实服务器组:由多个实服务器组成的集群,对外提供特定的一种服务。

  • 虚拟服务器:实服务器组对外呈现的逻辑形态,客户端实际访问的是虚拟服务器。

  • 负载均衡算法:FW分配业务流量给实服务器时依据的算法,不同的算法可能得到不同的分配结果。

  • 服务健康检查:FW检查服务器状态是否正常的过程,可以增强为用户提供服务的稳定性。

负载均衡转发流程

客户端访问虚拟服务器vserver 1时,FW通过负载均衡功能选择实服务器rserver 1来处理业务流量,并转换报文的目的IP地址和端口号。当实服务器的响应报文到达FW时,FW会再次转换报文的源IP地址和端口号。

服务器负载均衡功能利用Server-map表会话表完成虚拟服务器实服务器的映射。配置服务器负载均衡功能后,FW会生成SLB类型的静态Server-map表,该表项在关闭服务器负载均衡功能时立即老化。

2.服务器负载均衡实现原理

负载均衡算法

服务器负载均衡是按照逐流方式进行流量分配的,每一条流到达FW后都会进行一次负载均衡处理。这里的“一条流”可以理解为FW上建立的一条会话一个连接,所谓“逐流”就是将属于同一条流的报文都分配同一个服务器来处理。当会话老化后,即使流量的源IP、目的IP网络参数都没有改变,也会视新建的会话为一条新流。

  • 简单轮询算法:适用场景为服务器的性能相近,服务类型比较简单,且每条流对服务器造成的业务负载大致相等。

  • 加权轮询算法:适用场景为服务器的性能不同,服务类型比较简单,且每条流对服务器造成的业务负载大致相等

  • 最小连接算法:适用场景为服务器的性能相近,每条流对服务器造成的业务负载大致相等,但是每条流的会话存活时间不同

  • 加权最小连接算法:适用场景为服务器的性能不同,每一条流对服务器造成的业务负载大致相等,但是每一条流的会话存活时间不同。

  • 源IP hash算法(会话保持算法):源IP Hash算法是将客户端的IP地址进行Hash运算,得到Hash Index值。FW根据Hash Index值与Hash列表中服务器的对应关系,分配流量至服务器。应用场景为当各个服务器性能差别不大

  • 加权源IP hash算法:应用场景为各个服务器的性能有一定的差异

选择负载均衡算法

  • 服务器的性能

    • 根据服务器的性能差异来分配业务,可以保证设备得到充分利用,提高服务的稳定性。当各个服务器的性能不同且成一定比例关系时,可通过设置权重来实现负载均衡:性能高的服务器权重值大,分配到较多的业务;性能低的服务器权重值小,分配到较少的业务。
  • 服务器的服务

    • 类型服务器的服务类型不同,则会话连接的时长或服务请求的次数可能会有差异。如果用户请求的服务需要长时间保持会话连接,那么必须考虑服务器并发处理的连接数。

服务健康检查

服务器负载均衡虽然可以提升服务的质量和可靠性,但是也引入了一系列问题:

  • 多个服务器中的一个服务器发生故障时,FW如何感知到这个变化,并作出流量分配上的调整?

  • FW收到信息显示服务器故障时,如何确保消息的可信性,即是否有一定的机制保证不会发生误判?

  • 当发生故障的服务器恢复正常时,FW如何让其尽快地重新参与到负载均衡计算中?

FW通过向服务器定期发送探测报文来及时了解服务器的状态,根据服务类型的不同,使用不同协议类型的探测报文。FW支持的探测报文协议类型包括TCPICMPHTTPDNSRADIUS,如果服务器提供的服务类型不包含在这5种协议中,建议使用ICMP协议报文检查服务器的可达性。

每个探测报文都会返回一个检查结果,显示服务器是否处在正常的工作状态,FW提供了结果确认机制来保证不会发生误判。如果有一个检查结果显示服务器故障,则FW在继续发送探测报文的同时,开始统计连续故障次数。当连续次数达到预设值时,FW才认定此服务器真的发生了故障。检查结果反馈给负载均衡算法后,改变了负载均衡的结果,该服务器不再参与流量分配。

会话保持

会话保持是将同一客户端一定时间内的业务流量分配到同一台实服务器上。

适用场景:

1.客户端需要与服务器进行多次交互,才能完成一次特定操作

2.服务器上保存了用户的相关业务信息,为了方便用户本次或下次使用,可以令此服务器处理该用户的所有请求

FW支持的会话保持方法有:

源IP会话保持、SSL会话ID(Session ID)会话保持、HTTP Cookie会话保持。其中HTTP Cookie会话保持方法又可以分为:Cookie插入、Cookie被动、Cookie重写

源IP会话保持(默认情况下使用)

基于源IP的会话保持,是指FW根据访问请求的源地址作进行负载均衡,对来自同一IP地址的所有访问请求进行负载均衡时都会被保持到一台服务器上去。源IP会话保持表中记录客户端源地址值和实服务器的对应关系。如果会话保持表项老化时间到期或者实服务器故障,会话保持表项会被删除。客户端再次访问服务器时,FW将重新根据负载均衡算法分发连接并重新建立会话保持表项。

HTTP Cookie会话保持

FW根据会话中的Cookie进行负载均衡,对携带同一Cookie的所有访问请求进行负载均衡时都会被保持到一台服务器上去。

Cookie插入方式

在这里插入图片描述

Cookie被动方式

Cookie被动算法,在httpd.conf文件中加入以下条目:Header add Set-Cookie:“SLBServerpool=base64(IP:PORT); expires=Sat, 19-Aug-201619:35:45 GMT; path=/”。

FW解析客户端的HTTP请求,检查是否携带自己插入的Cookie。如果未携带,则根据负载均衡算法分发HTTP请求。实服务器回复请求报文并插入服务器自己的Cookie。插入的Cookie中会包含分发的实服务器的IP地址。FW再次收到客户端的HTTP请求时,就能从报文携带的Cookie中获取到上一次请求所分发的实服务器IP地址,将本次的请求也分发到同一个实服务器。
在这里插入图片描述

Cookie重写方式

选择Cookie重写算法,在httpd.conf文件中加入以下条目: Header add Set-Cookie:“SLBServerpool=0000000; expires=Sat, 19-Aug-201619:35:45 GMT; path=/”;

FW解析客户端的HTTP请求,检查是否携带自己插入的Cookie。如果未携带,则根据负载均衡算法分发HTTP请求。服务器回复请求报文并插入空白Cookie。FW接受到服务器回复的报文时,重写插入的Cookie中会包含分发的实服务器的IP地址。FW再次收到客户端的HTTP请求时,就能从报文携带的Cookie中获取到上一次请求所分发的实服务器IP地址,将本次的请求也分发到同一个实服务器。

在这里插入图片描述

SSL会话ID会话保持

FW根据会话中的Session ID进行负载均衡,对携带同一Session ID的所有访问请求进行负载均衡时都会被保持到一台服务器上去。
在这里插入图片描述

配置流程

在这里插入图片描述

在这里插入图片描述

1.基础配置,划分区域

firewall zone dmz
 add interface GigabitEthernet1/0/1
firewall zone untrust
 add interface GigabitEthernet1/0/0
int g1/0/0
 ip add 201.100.1.1 30
int g1/0/1
 ip add 172.16.1.254 24

2.配置默认路由

FW
	ip route-static 0.0.0.0 0 201.100.1.2

R1 
	ip route-static 200.1.1.1 32 201.100.1.1

3.配置服务器负载均衡功能

#开启服务器负载均衡功能。
slb enable

#配置负载均衡算法。
slb
  group 1 http_server
   metric weight-roundrobin
#配置实服务器Server1、Server2,服务器的权重值依次为1、2。
   rserver 0 rip 172.16.1.1 port 80 weight 1 description server1
   rserver 1 rip 172.16.1.2 port 80 weight 2 description server2

# 配置虚拟服务器的协议类型
 vserver 0 http_server
	protocol http
# 配置虚拟服务器的IP地址和端口号。
	vip 0 200.1.1.1
	vport 8080
#关联虚拟服务器和实服务器组。
    group http_server


4.安全策略放行

security-policy
 rule name untrust_dmz
	source-zone untrust
	destination-zone dmz
	destination-address 200.1.1.1 32
	action permit

5.验证

#在FW上查看静态Server-map表,存在相应表项证明服务器负载均衡功能配置成功。
display firewall server-map static

#当服务器请求流量较大时,经过一段时间后,在FW上查看虚拟服务器的运行情况,2个实服务器的累积会话数比约为2:1。
display slb vserver http_server verbose


display slb group http_server verbose

6.配置健康检查

slb
  group 1 http_server
 1 http_server
   health-check type icmp 
		#默认间隔时间为5s,允许的最大故障数3


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐