LVS的DR模型实战应用

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 一、ipvsadm 命令二、LVS三、实验:多个集群服务在一个 VLAN 上调度四、实验:实现单网络的 DR 的 LVS 五、总结六、RS 和 VS 的配置脚本

LVSDR模型实战应用

 

内容介绍:

一、ipvsadm 命令

二、LVS

三、实验:多个集群服务在一个 VLAN 上调度

四、实验:实现单网络的 DR LVS  

五、总结

六、RS VS 的配置脚本

 

 

一、ipvsadm命令


定义的调度算法 DH ,总往一个服务器调度,因为底层原理不同,ipvs 基于四成,内核级的识别不了 http 协议,而 url 是基于应用成的。


所以目标哈希基于访问目标地址,并不关心访问的是那个 url 路径,实际上 hash hash的是 vip 路径,并不是期望 hash url 路径,像希望实现为hash(http://vip/test1.html),而实际hash(vip)要想实现 hash(url) 功能。

 

要实现应用层代理功能,指的是lvs,则此处lvs功能未实现,lvs 实现的是传输层以下的反向代理,调度功能,所以要使用nginx或则 haproxy 应用级高级反向代理服务器实现,可识别应用层协议及以下。

 

如集群LVS基于传输层(通用),而应用层(专用)是针对特定协议,自定义的请求模型分类,ipvs工具的使用,http包含nginxhttpdhaproxy没有提到LVS,因为LVS属于传输层以下,nginxhaproxy也属于传输层以下,但功能更强大,可以做到识别应用层协议。

 

工具的使用:


  • 清空定义的所有内容: ipvsadm -C,清除策略,如:

[root@centos7 ~]#ipvsadm -C

[ root@centos7 ~] #ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096 )

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn


  • 清空计数器: ipvsadm -Z [-t|u|f service-address],清空计数器重新0开始,如:

[ root@centos7 ~]#ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes

-> RemoteAddress:Port

TCP 172.20.0.200:80   11770 70652 47106 4822599 5525034

-> 192.168.30.17 : 8080  0     0    0      0        0

-> 192.168.30.27: 80   11770 70652 47106 4822599 5525034

[ root@centos7 ~ ] #ipvsadm -Z

[ root@centos7 ~]#ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Conns InPkts 0utPkts InBytes OutBytes

-> RemoteAddress:Port

TCP 172.20.0.200: 80    0     0    0      0        0

-> 192.168.30.17 : 8080  0     0    0      0        0

-> 192.168.30.27 :80    0     0    0      0        0


  • 查看: ipvsadm -L[|I [options]

 

-- numeric, -n :以数字形式不解析输出地址和端口号,如下8080端口解析成webcache, 认为应该webcache用逗号。

 

遇到这种情况最好不要解析,解析出名字可能不正确:

[ root@centos7 ~ ] #ipvsadm -L

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port    Forward Weight ActiveConn InActConn

TCP centos7. localdomain:http dh

-> 192. 168.30.17 :webcache Masq  1   0   0

-> 192.168.30.27:http Masq  1 0 0

[ root@centos7 ~] #ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.20.0.200:80 dh

-> 192. 168.30.17 : 8080  Masq    1      0           0

-> 192. 168.30.27: 80     Masq    1      0           0

--exact :扩展信息,精确值,当达到一定量后会以兆,k显示

--connection , -c:当前IPVS连接输出情况,客户端地址,VIP,被调度到那个服务器上,如,

[ root@centos7 -]#ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096 )

Prot LocalAddress :Port  Conns InPkts 0utPkts InBytes OutBytes

-> RemoteAddress:Port

TCP 172.20.0.200: 80     11764 70594 47075 4812063 5520344

-> 192. 168.30.17 :8080   0     0      0     0        0

-> 192.168.30.27:80    11764  70594 47075 4812063 5520344

 

--stats :统计信息,连接数Conns,传入数据包InPkts,输出数据报文OutPkts以包的个数为单位,以字节为单位输入输出InBytes outBytes,如:

 

[ root@centos7 ~]#ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Conns InPkts OutPkts InBytes outBytes

-> RemoteAddress:Port

TCP 172.20.0.200:80  11764 70594 47075 4812063 5520344

-> 192.168.30.17 : 8080  0     0     0      0        0

 

-> 192.168.30.27 :80  11764 70594 47075 4812063 5520344

--rate : 输出速率信息。

每秒传入,传出数据包文个数InPPS OutPPS ,每秒传入,传出字节个数InBPSOutBPS,如:

 

[ root@centos7 -]#ipvsadm -Ln -- rate

IP Virtual Server version 1.2.1 (size=4096 )

Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS

-> RemoteAddress: Port

TCP 172.20.0.200: 80   0   2    1      432   186

-> 192.168.30.17: 8080  0   0    0       0     0

-> 192.168.30.27:80     0   2    1     432   186

 

  • ipvs规则:

/proc/net/ip_vs,也是存放在内存中的,C0A81E1B:0050为十六进制地址,为用户看起更方便统一以十六进制显示,

 

[ root@centos7 -]#cat /proc/net/1p_vs

IP Virtual Server version 1.2.1 (Size=4096)

Prot LocalAddress:Port Scheduler Flags

> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP AC1400C8 :0050 dh

-> C0A81E1B:0050     Masq     1       0        211

-> C0A81E11: 1F90     Masq     1      0          0

 

  • ipvs连接: /proc/net/ip_ vs_conn


  • 保存:

建议保存至/etc/sysconfig/ipvsadm,首先通过wlc变相定义http协议80端口,默认就是wlc,可以不写,带权重的最小连接。

 

[ root@centos7 ~]#ipvsadm -A -t 172.20.0.200:80

[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.17:8080 -m -w 3

[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.27 -m

 

[root@centos7 ~]#ipvsadm -Ln

IP Virtual Server version 1.2.1 (size= =4096 )

Prot LocalAddress:Port Scheduler Flags

->RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.20.0.206:80 wlc

-> 192. 168. 30.17 : 8080 Masq   3        0         0

-> 192.168.30.27:80     Masq   1       0         0

要想存住上面的策略,可以用ipvsadm-save,实际上命令本身只是显示出策略,并不是真正的保存,

如:

[ root@centos7 ~]#ipvsadm-save > /etc/sysconfig/ipvsadm

因为S后没加n阻止反向解析会报错,所以要加上n阻止反向解析,

 

如:

[ root@centos7 ~]#ipvsadm -C

[root@centos7 ~] #ipvsadm -A -t 172.20.0.200:80

[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.17 :8080 -m -w 3

[root@centos7~]#ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.27 -m

[ root@centos7 ~ ]#ipvsadm - Sn

-A -t 172.20.0.200:80 -s wlc

-a -t 172.20.0.200:80 -r 192.168.30.17:8080 -m -w 3

-a -t 172.20.0.200:80 -r 192.168.30.27:80 -m -w 1

[ root@centos7 ~ ]#ipvsadm -Sn > /etc/sysconfig/ipvsadm

 

当这一步执行#systemct stop ipvsadm.service服务停止后文件才开始自动保存到路径

systemct| enable ipvsadm //重启机器后开机自动加载策略

 

  • 重载:

ipvsadm-restore < /PATH/FROM/IPVSADM_FILE

ipvsadm -R < /PATH/FROM/IPVSADM_ FILE

systemct| restart ipvsadm.service

 

 

二、LVS


  • 负载均衡集群设计时要注意的问题

(1)是否需要会话保持

(2)是否需要共享存储

共享存储:NASSANDS(分布式存储)

数据同步:


  • lvs-nat ;

 

设计要点:

(1) RIP DIP 在同一 IP 网络, 但不必须,RIP 的网关要指向 DIP

(2)支持端口映射

(3) Director 要打开核心转发功能

生产中即使用ngt模式也很少见,因为路由器的性能比不上交换机,非要使用路由器也没有必要,一般中间是交换机。

 

 

三、实验:多个集群服务在一个VLAN上调度


创建多个集群服务放在一个 lvs 上,进行统一调动两个集群服务,比如实现 https 功能。

 

相当于https https 是一个服务,https web 是一个服务,首先通过#make magedu.crt自签名证书,记不住后缀可#cat Makefile查看脚本,这里会提示输入口令,输入口令后会利用刚才生成的私钥去创建对应的证书时再次输入口令,接着添加信息,国家,省,城市,名字,组织,服务名,生成信息实现https服务,加密证书所在文件夹,可通过ll查看,如,

[root@centos6 certs]#ll

total 1904

-rw-------,1 root 1314 Jul 2 14.22 magedu.crt

-rw-------,1 root 1766 Jul 2 14.21 magedu.key

 

此处可以去掉口令,因为如果每次要用magedu.key的话,都会提醒输入口令,也可以不去,不去的话私钥是可以被看到的,通过#cat magedu.key,看到显示PRIVATE KEY,但是被加密了ENCRYPTED

这里可以看到私钥文件和证书是放在同一个文件夹的,然后再配合#yum install mod_ssl进行加密

 

#vim /etc/httpd/conf.d/ssl.conf 更改其中 sslfile sslkeyfile 文件路径再调用,

 

最好与http路径在一块,所以此处移动到

#mv magedu.*/etc/httpd/conf.d/

 

#service httpd restart 重启服务,输入口令,成功建立网站#echo centos6 > /var/www/html/index .html

 

重复如上操作第二个https。 调度服务器,如下图进行配置:

image.png

[root@centos7~]#ipvsadm -A -t 172.20.0.200:443 -s rr

[root@centos7~]#ipvsadm -a -t 172.20.0.200:443 -r 192.168.0.201 -m

[ root@centos7 ~ ] #ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.20.0.200:80 wlc

-> 192. 168.30.17 :8080  Masq    3      0         2

-> 192. 168.30.27 :80    Masq    1      0         1

TCP 172.20.0.200:443 rr

-> 192.168.0.201:443     Masq    1      1         2

 

此时看得出有两个集群服务,最后因为证书是加密的,所以先忽略下执行#curl -k https://172.20.0.200/测试,

 

结果:centos6,则调度服务测试成功。

 

如果再搭建一个集群服务https则会回旋。事实上httphttps经常是同一类型服务

 

 

四、实验:实现单网络的DRLVS


实现 DR 模型,LVSDR模型中配置特性是要有VIP,如果 RS1RS2LVS 都在同一网段,根据如图 top结构进行从左到右配置。

image.png

1、配置客户端机器:

#vie0 //更改IPADDR=172.20.0.222,增加网关GATEWAY=172.20.0.200

#hostname client //更改主机名

#service network restarts

 

2、配置路由器:

#vie0 //更改地址IPADDR=192.168.30.200

#cp ifcfg-eth0 ifcfg-eth1 //生成另外一个网卡

#vim ifcfg-eth1 //更改eth1eth2IPADDR=172.20.0.200PREFIX=16

#vim /etc/udev/rules.d/ 70- persistent-net. rules //删掉eth1的记录,将NAME=eth0改为eth1

 

3、配置 LVS 服务器:

#hostnamectl set-hostname lvs

#vie0 //添加GATEWAY=192.168.30.200,修改IPADDR=192.168.30.100

#service network restarts

#ip a //可看到以获取地址192.168.30.100

 

#ip a a 192.168.30.7/24 dev eh0:1 //在其上绑定 vip 地址

#ip a //可查看到inet 192.168.30.7/24

#ipvsadm -Ln //可查看到

 

4、增加路由

#vim/etc/sysctl.conf //改变为ip_forward=1

#sysctl -p //生效下

 

5、此时测试两台机器能否 ping 通:

由里向外

[root@lvs~]#ping 172.20.0.222

PING 172.20.0.222 (172.20.0.222) 56(84) bytes of data.

64 bytes from 172.20.0.222: icmp_seq=1 ttl=63 time=3.49 ms

64 bytes from 172.20.0.222: icmp_seq=2 ttl=63 time=1.07 ms

--- 172.20.0.222 ping statistics ---

 

2 packets transmitted, 2 received, 0% packet loss, time 1001ms

rtt min/avg/max/mdev = 1.076/2.287/3.498/1.211 ms

由外向里

[rootecentos6. Desktop]#ping 192 .168.30.7

PING 192.168.30.7 (192.168.30.7) 56(84) bytes of data.

64 bytes from 192.168.39.7: icmp_seq=1 ttl=63 tine=1.12 ms

64 bytes from 192.168.30.7: icmp_seq=2 ttl=63 time=1.03 ms

^C

--- 192.168.30.7 ping statistics ---

 

2 packets transmitted. 2 received, packet loss, time 1566ms

rtt min/avg/max/mdev = 1. 030/1.079/1.129/0.059 ms

测试互 ping 成功

两台机器 ip 地址配好了未配网关,192.168.30.17#vie0添加网关GATEWAY=192.168.30.200#service network restarts。同理192.168.30.27添加网关GATEWAY=192.168.30.200

此时172.20.0.222可成功ping.27.17,相互间网络联通。

 

6、解决 VIP 地址冲突

LVS-DR

  • DR模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:

(1)在前端网关做静态绑定

(2)在各 RS 使用  arptables

(3)在各 RS 修改内核参数,来限制arp 响应和通告的级别

 

  • 限制响应级别: arp_ignore

0 :默认值,表示可使用本地任意接口,上配置的任意地址进行响应

1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

 

  • 限制通告级别: arp_ announce

0 :默认值,把本机所有接口的所有信息向每个接 C 的网络进行通告

1 :尽量避免将接口信息向非直接连接网络进行通告

2 :必须避免将接口信息向非本网络进行通告

 

 

7、下面开始 RS 相关配置:

RSVIP 地址可以绑在网卡上,事实 VIP 一般不绑在物理网卡上而是回环网卡上,回环网卡意味着 lo 网卡,这个地址用于接收远程用户发请求,不会抛弃原拥有数据包,因此配置的时候比较特殊,

但是直接配VIP 可能与原来 VIP 产生冲突,为了避免冲突要改两个内核参数,可locate找到内核文件,

 

又因为内存文件放不进locate,所以可以find /proc/sys |grep arp_ignore查找annouce或者ignore路径, arp_ i gnore 配置成1只回答本地主机报文请求,

arp_ announce 配置成2不向外公布自身地址,如果是永久改还要写到conf文件里面,下面采用临时更改,

在回环网卡做IP地址配置,所以改lo,也可以为了更稳妥加个all,表示所有arp_ announce 都不对外公布自身地址,192.168.30.17配置如下:

 

#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ ignore

#echo 1 > /proc/sys/net/ ipv4/conf/all/arp_ ignore

#echo 2 > /proc/ sys/net /ipv4/conf/all/arp_ announce

#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_ announce

#ip a a 192.168.30.7/32 dev lo //32表示这个网络只有一台主机

#hostnamectl set-hostname RS1

 

虚拟VIP配置完成,192.168.30.27中重复上述操作。

安装http服务:

#yy httpd

#echo RS 1>/var /www/html /index . html

#systemctl start httpd //192.168.30.27中重复上述操作。

 

此时在远程主机172.20.0.222#curl 192.168.30.27#curl 192.168.30.17成功访问:RS1,RS2LVS访问不通RS1,2则不影响,因为真正中不可能在LVS中访问RS1,2,都是通过远程服务机上调度LVS进行访问RS1,RS2

 

 

8、在LVS服务器配置调度策略:

192.168.30.7中配置

#yum install ipvsadm //安装工具

[root@lvs ~]#ipvsadm -A -t 192.168.30.7:80 -s rr

[root@lvs ~]#ipvsadm -a -t 192.168.30.7:80 -r 192 .168.30.17

//17后不用再定义端口号80,因为DR模型不支持端口映射,不写则是默认DR模型,-g

[ root@lvs~]#ipvsadm -a -t 192.168.30.7:80 -r 192.168 .30.27

[root@lvs ~]#ipvsadm -Ln

IP virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:port Scheduler Flags

->RemoteAddress:port Forward Weight ActiveConn InActConn

TCP 192.168.30.7 :80 rr

-> 192.168.30.17 :80    Route     1       0        0

->192.168.30.27 :80   Route      1       0        0

172.20.0.222中测试成功如下:

[root@client ~]#cur1 192.168.30.7

RS1

[root@client ~]#cur1 192.168.30.7

RS2

 

 

9、模型中LVS的物理网关

router上请求报文到LVS,回来时不走再走这条路,所以理论上GATEWAY没有意义。

 

如果把lvs网关盖掉:[root@lvs ~]#route -n,然后[root@client ~]#cur1 192.168.30.7,则一直可以循环访问RS1RS2。再删掉[root@lvs ~]#route del default gw 192.168.30.200,则立即停止访问。所以需要配置网关,

 

新配置网关如下:

[ root@lvs ~]#route add default gw 192.168.30.111 //环境不干净,client任无法访问

[ root@lvs ~]#ipvsadm-save -n >f1 //save存盘到f1

[ root@lvs ~]#reboot

 

因为RS2还是之前的地址有冲突,放在eth0上,所以此时还未调用策略便已经对外发布出,开始只访问RS2,最好放在lo上。

[root@rs2 -]#ip ad del 192.168.30.7/24 dev eth0

[root@rs2 -]#ip ad add 192.168.30.7/32 dev lo

[ root@rs2 -]#ip a //可查看到成功加入inet 192.168.30.7/32

 

 

把规则重新加载到lvs

[ root@lvs ~]#ipvsadm -Ln

[ root@lvs ~]# ipvsadm -restore < f1

[ root@lvs ~]# ip a //因为机器重启所以没有vip地址

[ root@lvs ~]ip addr a 192.168.30.7/32 dev lo

[ root@lvs ~]#route del default gw 192.168.30.200 //删掉原来的路由

 

[ root@lvs ~]#route add default gw 192. 168.30.111 //增加新的路由

[ root@lvs ~]#vie0 //更改GATEWAY=192.168.30.111

[ root@lvs ~]#systemctl restart network

[ root@lvs ~]#ip addr a 192.168.30.7/32 dev lo

此时再次成功访问RS1RS2。得知LVS物理网关需要配,因为

clientcip远程主机ip,访问LVS时没有网关会认为无法通信,但可以随便配。

 

 

五、总结


关键配置,首先 LVS 服务器必须要有 VIPDIP必须配,DAREWAY

必须加,在一个网段随便配,接下来,在 2RS 服务器上要设置。

在一个网段下有一个缺点RipVip都是公网地址,对外用户不需要

访问公网地址,只要访问Vip不需要RipRip使用的共有地址就是

浪费,还存在外来直接访问RSip的风险,所以真正生产环境来讲

两个网段,就是说LVS是公网地址,RSip 以及 Dip都是私网地址,

这样才合理。

 

 

六、RS VS 的配置脚本

1RS 的配置脚本

#!/bin/bash

vip= 10.0.0.100

mask =’255.255.2551255 '

dev=lo;1

case$1 in

start)

echo 1 > /proc/sys/net/ipv4/confall/arp. ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp. ignore

echo2 > /proc/sys/net/ipv4/conf/all/arp. announce

echo2 > /proc/sys/net/ipv4/conf/lo/arp_ announce

ifconfig $dev $vip netmask $mask #broadcast $vip up

#route add -host $vip dev $dev

;;

stop)

ifconfig $dev down

echo0 > /proc/sys/net/ipv4/conf/all/arp. ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp. ignore

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ announce

echo 0 > /proc/sys/net/ipv4/conf/lo/arp. Announce

;;

*)

echo "Usage: $(basename $0) startlstop"

exit 1

;;

Esac

 

 

2VS的配置脚本

#!/bin/bash

vip='10.0.0.100'

iface='eth0:1'

mask=' 255.255.255.255'

port= '80'

rs1 ='192.168.0.101'

rs2='192.168.0.102'

scheduler-'wrr*

type='-9'

case$1 in .

 

start)

ifconfig $iface $vip netmask $mask #broadcast $vip up

iptables-F

ipvsadm -A -t ${vip};${port} -s $scheduler

ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -W 1

ipvsadm -a -t ${vip):${port} -r ${rs2} $type -W 1

;;

stop)

 

ipvsadm -C

ifconfig $iface down

;;

*)

 

echo "Usage $(basename $0) start|stop "

exit 1

esac

相关文章
|
8月前
|
运维 负载均衡 网络协议
LVS详解(六)——LVS DR模式实战
LVS详解(六)——LVS DR模式实战
178 5
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
187 0
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
228 0
|
8月前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
5月前
|
Kubernetes Linux API
在Linux中,LVS-DR模型的特性是什么?
在Linux中,LVS-DR模型的特性是什么?
|
5月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
8月前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
8月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
242 2
|
存储 负载均衡 网络协议
LVS负载均衡群集—DR直接路由
LVS负载均衡群集—DR直接路由
110 0
|
10天前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
109 4