NGFW-服务器负载均衡
一,原理
1.1相关概念
实服务器:处理业务流量的实体服务器,客户端发送的服务请求最终是由实服务器处理的。
实服务器组:由多个实服务器组成的集群,对外提供特定的一种服务。
虚服务器:实服务器组对外呈现的逻辑形态,客户端实际访问的是虚拟服务器。
HTTP调度策略:FW分配业务流量给实服务器组时依据的规则,不同的调度策略得到不同的分配结果。仅适用于HTTP和HTTPS(HTTPS配置SSL卸载)协议。
负载均衡算法:FW分配业务流量给实服务器时依据的算法,不同的算法可能得到不同的分配结果。
会话保持:FW将同一客户端一段时间内的流量分配给同一个实服务器。
服务健康检查:FW检查服务器状态是否正常的过程,可以增强为用户提供服务的稳定性。
1.2实现机制
服务器负载均衡是按照逐流的方式进行流量分配的,每一条流到达FW后都会进行一次负载均衡处理。这里的“一条流”可以理解为FW上建立的一条会话或一个连接,”逐流“就是将属于同一条流的报文都分配给同一个服务器来处理。当会话老化,及时流量的源目IP等参数都没改变,也是新的流量。
当PC发出的服务请求经过FW负载均衡处理后,转发到访问的虚服务器对应的实服务器组中的一台服务器上。请求最终是由一台实服务器处理的。为了保证安全和便于管理,实服务器逻辑为一台高性能的虚拟服务器。对于客户端来说访问的是虚拟服务器,实际处理业务的是实服务器。
1.3转发流程
当PC访问虚拟服务器Vserver时,FW通过负载均衡功能选择实服务器Rserver1来处理流量,并替换报文的目的IP和端口。当响应报文到达FW再次替换报文的源IP地址和端口。
如图所示,服务器负载均衡生成的目的NAT转换发生在域间安全策略之后,所以安全策略放行的是转换前的地址。
1.4负载均衡
选择负载均衡算法时需要考虑两个主要因素:
服务器的性能:根据服务器的性能差异来分配业务,可以保证设备得到充分利用,提高服务的稳定性。当各个服务器的性能不同且成一定比例关系时,可通过设置权重来实现负载均衡:性能高的服务器权重值大,分配到较多的业务;性能低的服务器权重值小,分配到较少的业务。
服务器的服务类型:服务器的服务类型不同,则会话连接的时长或服务请求的次数可能会有差异。如果用户请求的服务需要长时间保持会话连接,那么必须考虑服务器并发处理的连接数。
1.简单轮询
2.
二,服务器负载均衡配置
2.1简单轮询
2.1.1拓扑图
Cloud8桥接了两台linux服务器,配置的简单的http服务。
2.1.2配置
1.配置实服务器
[FW1]slb enable 启用服务器负载均衡 [FW1]slb 进入负载均衡配置视图 [FW1-slb]group 0 RServer 创建实服务器组 [FW1-slb-group-0]metric roundrobin 定义负载均衡算法 [FW1-slb-group-0]health-check type icmp tx-interval 3 times 2 配置健康检查 [FW1-slb-group-0]rserver 0 rip 192.168.1.1 port 80 max-connection 2 配置实服务器 [FW1-slb-group-0]rserver 1 rip 192.168.1.2 port 80 max-connection 2 配置实服务器 [FW1-slb-group-0]action optimize 繁忙策略为重新调度
2.配置虚服务器
[FW1-slb]vserver 0 VServer 创建虚服务器 [FW1-slb-vserver-0]vip 0 202.100.1.100 配置虚拟服务器IP [FW1-slb-vserver-0]protocol http 指定协议 [FW1-slb-vserver-0]vport 80 指定端口 [FW1-slb-vserver-0]group RServer 调用实服务器组 [FW1-slb-vserver-0]max-connection 4 指定最大连接数
3.安全策略
[FW1]security-policy [FW1-policy-security]rule name slb [FW1-policy-security-rule-slb]source-zone untrust [FW1-policy-security-rule-slb]destination-zone dmz [FW1-policy-security-rule-slb]destination-address 202.100.1.100 32 [FW1-policy-security-rule-slb]action permit
2.1.3测试现象
1.适用测试PC访问http://202.100.1.100
2.查看会话表
http VPN: public --> public ID: c487f4ee48713981444633d4d37 Zone: untrust --> dmz TTL: 00:00:10 Left: 00:00:09 Recv Interface: GigabitEthernet1/0/0 Interface: GigabitEthernet1/0/1 NextHop: 192.168.1.2 MAC: 000c-292e-e310 <--packets: 4 bytes: 597 --> packets: 6 bytes: 543 202.100.2.253:49162 --> 202.100.1.100:80[192.168.1.2:80] PolicyName: slb TCP State: close http VPN: public --> public ID: c487f4ee48712801a76633d4d37 Zone: untrust --> dmz TTL: 00:20:00 Left: 00:19:56 Recv Interface: GigabitEthernet1/0/0 Interface: GigabitEthernet1/0/1 NextHop: 192.168.1.1 MAC: 000c-29a5-f96a <--packets: 13 bytes: 2,492 --> packets: 16 bytes: 4,554 202.100.2.253:49161 --> 202.100.1.100:80[192.168.1.1:80] PolicyName: slb TCP State: established
3.查看Server-map表项
[FW1]display firewall server-map 2022-10-05 09:26:55.090 Current Total Server-map : 1 Type: SLB, ANY -> 202.100.1.100:80[VServer/0], Zone:---, protocol:tcp Vpn: public -> public
4.启用源NAT后查看现象,命令:[FW1-slb-group-0]source-nat interface-address。此处的源NAT并非是让服务器能够转换源地址访问公网,而是使访问服务器的源地址进行转换。优点是可以设置和服务器同一网段,这样服务器可以不配置网关。适用于不固定网关地址的场景。
http VPN: public --> public ID: c487f4ee48719101ba5633d4e3c Zone: untrust --> dmz TTL: 00:20:00 Left: 00:19:57 Recv Interface: GigabitEthernet1/0/0 Interface: GigabitEthernet1/0/1 NextHop: 192.168.1.1 MAC: 000c-29a5-f96a <--packets: 3 bytes: 446 --> packets: 4 bytes: 581 202.100.2.253:49167[192.168.1.10:2049] --> 202.100.1.100:80[192.168.1.1:80] PolicyName: slb TCP State: established http VPN: public --> public ID: c487f4ee4871a283463633d4e3d Zone: untrust --> dmz TTL: 00:20:00 Left: 00:19:58 Recv Interface: GigabitEthernet1/0/0 Interface: GigabitEthernet1/0/1 NextHop: 192.168.1.2 MAC: 000c-292e-e310 <--packets: 3 bytes: 446 --> packets: 4 bytes: 561 202.100.2.253:49168[192.168.1.10:2049] --> 202.100.1.100:80[192.168.1.2:80] PolicyName: slb TCP State: established
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?