通过防火墙给服务器做负载均衡; 华为防火墙负载均衡 = 流量分流器 + 健康监测器 + 会话管家,核心价值:提升吞吐量、消除单点、保障稳定。 可以理解成一个特殊的NAT ( 从外到内的场景可以看出);
如图所示 :(通常专业产品 – F5 bigip/ A10 / 服务器部署nginx软件实现)

涉及的技能点
负载均衡概念 负载均衡场景 负载均衡的基本组件 负载均衡转发流程 负载均衡算法 负载均衡的三大应用场景 负载均衡实验演示 (内部+外部的访问分别做负载均衡演示) SLB的健康检查 (实验环境中该选项是可选项,但是在实际的业务场景中为必配项;)
负载均衡概念
对流量做智能调度 + 健康检查 + 会话保持,让 “一群资源” 对外像 “一个资源”,同时保证不堵、不卡、不掉线
服务器负载均衡就是将本应由一个服务器处理的业务分发给多个服务器来处理,以此提高处理业务的效率和能力。处理业务的服务器组成服务器集群,对外体现为一台逻辑上的服务器,由FW决定如何分配流量给各个服务器。逻辑上的服务器; 华为防火墙负载均衡,就是把流量按照预设算法,合理分散到多个服务器 / 多条链路 / 多台防火墙,避免单点过载、提升整体吞吐与可靠性,是华为 USG 系列防火墙内置的核心功能(常称 SLB);

和 “服务器负载的区别”
服务器负载:单台服务器的 CPU / 内存 / IO 繁忙度(前面分享的服务器负载均衡) 华为防火墙负载均衡:防火墙的流量调度功能,用来降低后端服务器 / 链路 / 集群的负载
负载均衡的基本组件
主要组件
真实服务器 : 企业内的真正硬件服务器 | 每个真实服务器有一个真实IP; 真实服务器组 : 通过真实服务器构建的集群; 虚拟服务器 : 集群地址; 负载均衡算法: 用户访问集群地址,根据负载均衡算法可以将流量下发到真实服务器; 健康检查: 检查服务器状态是否健康。

核心组件联动逻辑
用户访问虚拟服务器 (VIP) → 流量进入SLB 模块 → 匹配绑定的实服务器组 → 按负载均衡算法分发到组内实服务器 → 全程由健康检查保活、会话保持粘住用户 → 靠源 NAT保障回包正常。

负载均衡转发流程
客户端访问虚拟服务器vserver 1时,FW通过负载均衡功能选择实服务器rserver 1来处理业务流量,并转换报文的目的IP地址和端口号。当实服务器的响应报文到达FW时,FW会再次转换报文的源IP地址和端口号。
rserver ip – 真实服务器 IP vserver ip - 虚拟服务器IP – 集群IP
在流量从外部发送到内部时,防火墙会把流量的目的地址, 从vserver ip - 虚拟服务器IP – 集群IP修改为 rserver ip – 真实服务器 IP。

负载均衡算法
虚拟IP地址 或者 vserver ip ,是 由防火墙提供。 用户在访问虚拟IP地址放到防火墙。 但是实际上服务器的服务(WEB/email),由真实服务器提供。 所以流量最终必须要发送到真实服务器。
当用户访问虚拟IP地址后,防火墙要把流量转发到真实服务,需要根据负载均衡算法决定,流量发送到哪台真实服务器,支持的算法具体分为。
轮询; 最小链接; 源IP哈希法; 加权算法-weight (设置权重 – 权重高的服务器地址,流量比重高)推荐使用;

负载均衡的三大应用场景
服务器负载均衡 (SLB,最常用)
场景:内网服务器集群(Web/APP/DB) 原理:客户端访问虚拟 IP(VIP),防火墙把请求分发到后端真实服务器(实服务器) 关键词:VIP、实服务器组、健康检查、会话保持;
防火墙集群负载均衡 (多出口 / 多 ISP)
场景:防火墙多根外网线路(电信 / 联通 / 移动) 原理:按带宽、质量、权重、优先级选路,避免某条链路拥塞 关键词:智能选路、带宽比例、链路质量、主备备份;
链路负载均衡; (多台 FW)
场景:高并发、高可用(如电商、政务网) 原理:多台防火墙组成集群,流量分担,一台故障自动切走 关键词:会话同步、故障转移、集群 HA

华为防火墙的负载均衡支持的算法
这 6 种是服务器组下通过metric命令配置的流量分发策略,分为轮询类、连接数类、源 IP 哈希类三大系列,带weighted-前缀的是对应基础算法的加权增强版。
基础轮询类
roundrobin(Round robin,简单轮询算法)
原理:把请求按顺序依次轮流分配给后端每一台服务器,不关心服务器当前连接数、性能差异。 适用场景:后端服务器硬件性能一致、请求处理时长接近的业务(比如静态 Web 页面)。 特点:实现最简单,不需要持续统计服务器运行状态。
weighted-roundrobin(Weighted round robin,加权轮询算法)
原理:给每台后端服务器配置权重值,权重越高,被分配请求的频次越高,轮询时按权重比例分配流量。 适用场景:后端服务器性能强弱不均(比如有的服务器 CPU、配置更高),让性能强的承担更多流量。 特点:兼顾轮询的简洁性,适配异构服务器集群。
最小连接类
least-connection(Least connection,最小连接算法)
原理:实时统计每台后端服务器当前活跃的连接数量,新请求会被分配给当前连接数最少的服务器。 适用场景:请求处理时长差异大的业务(比如文件上传、长连接业务),避免某台服务器被大量长连接占满资源。 特点:动态适配服务器负载波动,比简单轮询更贴合真实负载情况。
weighted-least-connection(Weighted least connection,加权最小连接算法)
原理:结合权重和当前连接数计算负载,公式参考:负载值=当前连接数÷权重,新请求分给负载值最小的服务器。 适用场景:服务器性能不同、同时业务长连接占比高的异构集群。 特点:既考虑服务器本身性能上限,又实时跟踪连接负载,适配性更强。
源 IP 哈希会话保持类
source-ip-hash(Source ip hash,源 IP 哈希算法)
原理:对客户端请求的源 IP 做哈希计算,同一个源 IP 的请求,会固定分配到同一台后端服务器。 适用场景:需要会话保持的业务(比如登录态存服务器本地、购物车会话绑定单台后端),保证同一用户全程访问同一台服务器。 特点:天然实现会话粘连;但后端服务器扩容 / 缩容时,会出现部分用户哈希落点变更、会话失效的情况。
weighted-source-ip-hash(Weighted source ip hash,加权源 IP 哈希算法)
原理:在源 IP 哈希的基础上引入服务器权重,哈希落点会根据权重比例调整,性能更强、权重更高的服务器,能承载更多不同源 IP 的客户端流量。 适用场景:既需要会话保持,后端服务器性能又不一致的业务。 特点:兼顾会话粘性与异构服务器的负载均衡。
快速选型小建议
服务器配置一致、短请求多 → roundrobin 服务器配置不一、短请求多 → weighted-roundrobin 服务器配置一致、长请求 / 长连接多 → least-connection 服务器配置不一、长请求 / 长连接多 → weighted-least-connection 需要会话保持、服务器配置一致 → source-ip-hash 需要会话保持、服务器配置不一 → weighted-source-ip-hash
[FW1-slb-group-1]metric ?
least-connection Least connection algorithm
roundrobin Round robin algorithm
source-ip-hash Source ip hash algorithm
weight-least-connection Weighted least connection algorithm
weight-roundrobin Weighted round robin algorithm
weight-source-ip-hash Weighted source ip hash algorithm
负载均衡实验演示
实验拓扑以及需求

企业内网的三台服务器处于DMZ区域; 互联网用户访问企业内部的三台业务;(web服务器) 三台承载业务的服务器,会有三个IP地址; 对于用户来说,三台业务服务器都是提供同一个业务,这就涉及到无论是内网用户到底访问那台,还是外网用户访问背后的资源浪费问题; 将多个服务器IP虚拟成一个,这就是负载均衡的一个雏形; 在防火墙中设置一个内网虚拟IP地址 10.0.1.100,该虚拟IP地址暴露给用户,让用户访问; 真实物理服务器地址: 10.0.1.5/10.0.1.6/10.0.1.7,不对用户暴露; 防火墙根据虚拟服务器IP地址,构建一个内网的真实服务器组(三台真实的物理服务器),形成映射,也就是反向代理; 使用防火墙充当流量代理 (负载均衡器)| 代理可以负责网络地址转换 (这种转换跟NAT技术是不太一样的);
最终验证: 内外网用户通过一个IP地址访问到多个服务器,让多个服务器相当于构建成了一个集群,虚拟服务器地址构建出集群IP地址。;
配置流程
如图所示: 灰色的选项为可选配置命令;

防火墙-服务器-负载均衡-LAB基础配置
//地址配置忽略.....(包含“中国联通设备”)
//出口默认路由
[FW1]ip route-static 0.0.0.0 0.0.0.0 130.0.13.1
//安全区域划分
[FW1]display zone
local
priority is 100
interface of the zone is (0):
trust
priority is 85
interface of the zone is (2):
GigabitEthernet0/0/0
GigabitEthernet1/0/2
untrust
priority is 5
interface of the zone is (1):
GigabitEthernet1/0/0
dmz
priority is 50
interface of the zone is (1):
GigabitEthernet1/0/1
//安全策略
//允许,trunst区域主机到unturst区域主机的访问
[FW1]security-policy
[FW1-policy-security]rule name t2d
[FW1-policy-security-rule-t2d]dis this
rule name t2d
source-zone trust
destination-zone dmz
source-address 10.0.2.0 mask 255.255.255.0
destination-address 10.0.1.0 mask 255.255.255.0 //真实服务器IP所在的地址网段
action permit
//最后把拓扑中的三台服务器HTTP服务打开即可
防火墙-服务器-负载均衡-LAB -内网访问配置


//开启服务器负载均衡,总开关
[FW1]slb enable
//配置服务器组 (内网服务器组)
[FW1]slb //进入到SLB中,配置服务器组
[FW1-slb]group ? //创建服务器组,这两个参数是用来创建 / 进入 SLB 实服务器组的二选一(或同时指定)标识:一个是数字 ID,一个是名字华为。
INTEGER<0-127> Specify the ID of the server group
STRING<1-32> Specify the name of the server group (starting with [a-z,
A-Z] and can not be 'all','vsys', or 'all-systems')
[FW1-slb]group 1 grp1 //可以这样命名,编号为1,组名为grp1
[FW1-slb-group-1]metric weight-roundrobin //指定负载均衡算法:带有权重的轮询算法
[FW1-slb-group-1]rserver ? //配置真实服务器,作用是把真实服务器加入 SLB 服务器组。
INTEGER<0-3> Specify the start real server ID //真实服务器的ID,最多4个
rip Indicate the real server IP address // 真实的服务器IP地址
[FW1-slb-group-1]dis this
group 1 grp1
metric weight-roundrobin
rserver 0 rip 10.0.1.5 weight 1 //配置三台真实服务器,权重都为1,你也可以按照服务器性能等因素调整权重;
rserver 1 rip 10.0.1.6 weight 1
rserver 2 rip 10.0.1.7 weight 1
action optimize //缺省配置,不用配置
//配置虚拟服务器(集群)IP
[FW1-slb]vserver ?
INTEGER<0-127> Specify the ID of the virtual server
STRING<1-32> Specify the name of the virtual server (starting with [a-z,
A-Z] and can not be 'all','vsys', or 'all-systems')
[FW1-slb]vserver 1 ?
STRING<1-32> Specify the name of the virtual server (starting with [a-z,
A-Z] and can not be 'all','vsys', or 'all-systems')
[FW1-slb]vserver 1 vip //创建虚拟服务器IP ,ID为1的,vip名称为服务器组
[FW1-slb-vserver-1]vip ?
INTEGER<0-7> Indicate the start virtual IP ID
X.X.X.X Specify the virtual IP address
[FW1-slb-vserver-1]vip 1 10.0.1.100 //创建一个虚拟IP地址
[FW1-slb-vserver-1]protocol ? //支持的负载均衡流量有哪些
any Indicate any protocol(default)
esp Indicate the ESP protocol
http Indicate the HTTP protocol
https Indicate the HTTPS protocol
ssl Indicate the SSL protocol
tcp Indicate the TCP protocol
udp Indicate the UDP protocol
[FW1-slb-vserver-1]protocol tcp //这里指定TCP ,内网端口是80 (要提供的是web服务)
[FW1-slb-vserver-1]vport ?
INTEGER<1-65535> Specify the virtual port //端口不能复用,只能提供一个,不然就选择any
any Indicate any port(default)
[FW1-slb-vserver-1]vport 80
[FW1-slb-vserver-1]display this
vserver 1 vip
vip 1 10.0.1.100
protocol tcp
vport 80 //内网端口是80
//还需要将虚拟服务器IP和真是服务器组关联在一起~~~,作用是用户访问虚拟IP的时候,防火墙设备会将流量交给到哪台集群设备中去
[FW1-slb-vserver-1]group grp1
//slb的汇总配置,看清配置结构
[FW1-slb-vserver-1]quit
[FW1-slb]dis this
slb
group 1 grp1
metric weight-roundrobin
rserver 0 rip 10.0.1.5 weight 1
rserver 1 rip 10.0.1.6 weight 1
rserver 2 rip 10.0.1.7 weight 1
action optimize
vserver 1 vip
vip 1 10.0.1.100
protocol tcp
vport 80
group grp1
为什么配置 SLB 会产生 Server-map 表?
Server-map 表是华为防火墙为了实现状态检测和业务识别而生成的一种动态 / 静态映射表,它的核心作用是:
解决 “反向流量” 的安全策略放行问题
当外网用户访问 SLB 的 VIP 10.0.1.100:80 时,防火墙会把请求转发给后端真实服务器(RServer)。 后端服务器回包时,源 IP 是自己的真实 IP,目的 IP 是用户的公网 IP。 如果没有 Server-map 表,防火墙的安全策略默认会拒绝这种 “从内网服务器主动发起的” 反向流量。 这条 SLB 类型的 Server-map 表,相当于给防火墙打了个 “标记”:“这是 SLB 业务的回包,是合法的,请放行”,避免你再单独配置复杂的安全策略。
让防火墙识别并跟踪 SLB 业务流
Server-map 表记录了 “VIP + 端口” 与 SLB 虚拟服务器的绑定关系。 防火墙收到访问 VIP 的请求时,会先查 Server-map 表,确认这是 SLB 业务,再把流量交给 SLB 模块处理,进行负载均衡转发。 它是 SLB 功能和防火墙安全检测模块之间的 “桥梁”。
这是 SLB 功能的必要产物,无法关闭
只要你在防火墙上配置了 SLB 虚拟服务器,系统就会自动生成对应的 Server-map 表项,这是华为防火墙 SLB 的工作机制决定的。 它不是错误,而是SLB 配置生效的标志,说明你的 VIP 已经被防火墙正确识别。

如图所示 可以看到虚拟服务器的具体信息;

能够看到三台真实服务器的权重信息等;

验证
如图所示 在交换机设备的三个接口上抓取报文,过滤出TCP或者icmp报文
先用内网客户端进行访问虚拟服务器IP


防火墙-服务器-负载均衡-LAB -外网访问配置:
既然是外部用户来访问内网地址,若是直接设置一个NATServer,将一个真实的IP地址映射到服务器集群,但是防火墙是不允许这样配置,因为这样的话,防火墙中既创建了SLB的server-map表,又创建SLB的所对应的虚拟服务器组表;其实可以用SLB技术直接用申请好的公网IP地址,直接转换成内部的服务器集群IP;
//在很多运营商的安全场景中,80。135等这种知名端口是不允许对外的,都会被屏蔽掉;
//增加虚拟服务器组2
[FW1]slb
[FW1-slb]vserver 2 vip02
[FW1-slb-vserver-2]dis this
vserver 2 vip02
vip 0 130.0.13.100
protocol tcp
vport 8080 //对外暴露的端口是8080
group grp1 //还是调用组1
//SLB的内,外访问的配置汇总
[FW1-slb]dis this
slb
group 1 grp1
metric weight-roundrobin
rserver 0 rip 10.0.1.5 weight 1
rserver 1 rip 10.0.1.6 weight 1
rserver 2 rip 10.0.1.7 weight 1
action optimize
vserver 1 vip
vip 1 10.0.1.100
protocol tcp
vport 80
group grp1
vserver 2 vip02
vip 1 130.0.13.100
protocol tcp
vport 8080
group grp1
//安全策略的规则新增,允许外部的流量进入到内部的dmz区域
[FW1]security-policy
[FW1-policy-security-rule-u2d]dis this
rule name u2d
source-zone untrust
destination-zone dmz
destination-address 130.0.13.100 mask 255.255.255.255 //策略中目的IP地址一定要写虚拟服务器IP的地址 (申请的真实的公有IP地址)
action permit
如图所示: 通过查看这两个表的信息,能够看出SLB也算是特殊的一种NAT;(可以将公网IP转换到服务器集群组IP)


截止到目前的配置,外部客户端是无法正常访问到内部的,原因在于外部访问的端口是8080.而内部的服务器IP端口并没有指定;

//因此,需要到SLB服务器组里,增加这么一条配置
[FW1-slb-group-1]dis this
group 1 grp1
metric weight-roundrobin
rserver 0 rip 10.0.1.5 port 80 weight 1 //指定内部服务器的端口,这样的话无论是外部访问的8080,还是内部访问的80,进入都被转换成80
rserver 1 rip 10.0.1.6 port 80 weight 1
rserver 2 rip 10.0.1.7 port 80 weight 1
action optimize
验证
外部互联网用户 访问


SLB的健康检查
健康检查是什么?有什么用?
健康检查(Health Check),是防火墙 SLB 模块用来持续探测后端真实服务器(RServer)是否存活、业务是否正常的机制。
它的核心目的是:
自动识别出故障的后端服务器 把流量不再转发给故障服务器,避免用户访问失败 当服务器恢复正常后,自动把它重新加回负载均衡池
简单说:就是给后端服务器做 “体检”,只让健康的服务器干活,保证业务稳定。
华为防火墙 SLB 常见的健康检查类型
华为防火墙 SLB 主要支持以下几种,不同业务场景用不同的类型:

关键参数详解(配置时必须搞懂)
不管哪种类型,健康检查都有几个核心参数,理解它们才能配好检查:
检查间隔(Interval)
含义:两次健康检查之间的时间间隔(单位:秒) 示例:interval 5 表示每 5 秒探测一次服务器 注意:间隔太短会增加防火墙和服务器的压力,太长则故障发现不及时
超时时间(Timeout)
含义:等待服务器回应的最大时间(单位:秒) 示例:timeout 3 表示发送探测包后,3 秒内没收到回应就判定本次探测失败 注意:超时时间必须小于检查间隔
失败次数(Retry/Max-fail)
含义:连续探测失败多少次,就把服务器标记为 “不健康(Down)” 示例:max-fail 3 表示连续 3 次探测失败,就把服务器踢出负载均衡池
恢复次数(Success-count)
含义:服务器被标记为 Down 后,需要连续探测成功多少次,才会重新标记为 “健康(Up)” 示例:success-count 2 表示连续 2 次探测成功,就把服务器重新加回负载均衡池
服务健康状态检查原理
FW通过向服务器定期发送探测报文来及时了解服务器的状态,根据服务类型的不同,使用不同协议类型的探测报文。FW支持的探测报文协 议类型包括TCP、ICMP、HTTP、DNS和RADIUS。

如图所示 :当有流量进入到虚拟IP时,会将流量按照配置的算法分到后端节点,当内部某个节点出现问题,对于防火墙来说,并不知情某台节点的服务器发生故障,将流量转发给故障节点,导致用户访问失败;

防火墙-服务器-负载均衡-LAB -健康状态检查配置
如果不设置健康状态检查,会导致防火墙负载均衡服务把流量发送到非健康状态的服务器。
[FW1-slb]slb
[FW1-slb]group grp1
[FW1-slb-group-1]health-check type ?
dns Indicate the DNS protocol
http Indicate the HTTP protocol
https Indicate the HTTPS protocol
icmp Indicate the ICMP protocol //常用的就是ICMP
radius Indicate the RADIUS protocol
tcp Indicate the TCP protocol
[FW1-slb-group-1]health-check type icmp tx-interval 3 times 3 //测试间隔,这里指的是每隔3秒发送3次
[FW1-slb-group-1]dis this
group 1 grp1
metric weight-roundrobin
health-check type icmp tx-interval 3 //测试间隔,这里指的是每隔3秒发送3次,默认time3,所以不显示
rserver 0 rip 10.0.1.5 port 80 weight 1
rserver 1 rip 10.0.1.6 port 80 weight 1
rserver 2 rip 10.0.1.7 port 80 weight 1
action optimize
配置完成后,日志会显示这三个节点的状态都是Up


验证
当某个节点出现故障,可以在日志中看到提示


//服务器所在的边缘端口建议打开,加快收敛,防止30秒阻塞
[Huawei]stp edged-port default //拓扑中所有端口

