集群:将很多个机器组织到一起,作为一个整体对外提供服务。集群在扩展性、性能方面都可以做到很灵活。集群的分类:负载均衡集群:Load Balance。高可用集群:High Available。高性能集群:High Performance Computing。
LVS(Linux Virtual Server):Linux虚拟服务器。实现负载均衡集群。
![79df78b1d3ea4fe8a6b1f8d1333f331c.png](https://img-blog.csdnimg.cn/direct/79df78b1d3ea4fe8a6b1f8d1333f331c.png)
LVS的工作模式:NAT:网络地址转换。DR:路由模式。TUN:隧道模式。
术语:调度器:LVS服务器。真实服务器Real Server:提供服务的服务器。VIP:虚拟地址,提供给用户访问的地址。DIP:指定地址,LVS服务器上与真实服务器通信的地址。RIP:真实地址,真实服务器的地址。
调度算法共10个,常见的有:轮询rr:Real Server轮流提供服务。加权轮询wrr:根据服务器性能设置权重,权重越大得到的请求越多。最少连接lc:根据Real Server的连接数分配请求。加权最少连接wlc:类似于wrr,根据权重分配请求。
配置LVS的NAT模式:配置4台虚拟机,
![01bfc6b0a07b42c782b959f5cffde3ee.png](https://img-blog.csdnimg.cn/direct/01bfc6b0a07b42c782b959f5cffde3ee.png)
![12d48a2e901d406683220a4463938506.png](https://img-blog.csdnimg.cn/direct/12d48a2e901d406683220a4463938506.png)
第一台为client1,eth0->192.168.88.10,网关为192.168.88.5
第二台为lvs1,eth0->192.168.88.5,eth1->192.168.99.5
第三台为web1,eth0->192.168.99.100,网关为192.168.99.5
第四台为web2,eth0->192.168.99.200,网关为192.168.99.5
关闭所有主机的防火墙
![0b5cdee3667b460a8714d70acab1fafe.png](https://img-blog.csdnimg.cn/direct/0b5cdee3667b460a8714d70acab1fafe.png)
查看双网卡机器lvs的内核参数ip_forward双网卡转发是否打开0表示不允许转发数据。sysctl -a:查看全部的内核参数
![1a75073d36294ab9b7a8c2dfe310629d.png](https://img-blog.csdnimg.cn/direct/1a75073d36294ab9b7a8c2dfe310629d.png)
打开允许转发数据
![4403d69150cf4b6a893b3c3f7d28f014.png](https://img-blog.csdnimg.cn/direct/4403d69150cf4b6a893b3c3f7d28f014.png)
![4b7e150c64854f4a991bd2c20f74877c.png](https://img-blog.csdnimg.cn/direct/4b7e150c64854f4a991bd2c20f74877c.png)
此时client1主机就能ping通192.168.99.100/200
![cf037c0499214b968884bf48f7a25f3b.png](https://img-blog.csdnimg.cn/direct/cf037c0499214b968884bf48f7a25f3b.png)
在web1和web2主机上安装http服务并开启该服务。systemctl enable httpd --now:开启服务并设置开机自启动。
![2188e963b99f4dcbaadb2041ce793420.png](https://img-blog.csdnimg.cn/direct/2188e963b99f4dcbaadb2041ce793420.png)
![6fd593a47cc643949ba4f4458dd89e07.png](https://img-blog.csdnimg.cn/direct/6fd593a47cc643949ba4f4458dd89e07.png)
访问^100^200表示把上面命令的100换成200
![378bc2a8522f46bd8bd11550e18daa00.png](https://img-blog.csdnimg.cn/direct/378bc2a8522f46bd8bd11550e18daa00.png)
![a554336ff9894e90b4d7ef94e4b86d96.png](https://img-blog.csdnimg.cn/direct/a554336ff9894e90b4d7ef94e4b86d96.png)
安装LVS的软件包ipvsadm
![f0bf94009af24eafbdc3ba2ccf74471c.png](https://img-blog.csdnimg.cn/direct/f0bf94009af24eafbdc3ba2ccf74471c.png)
ipvsadm命令:-A:添加虚拟服务器。-E:编辑虚拟服务器。-D:删除虚拟服务器。-t:添加tcp服务器。-u:添加udp服务器。-s:指定调度算法,如轮询rr/加权轮询wrr/最少连接lc/加权最少连接wlc。-a:添加虚拟服务器后向虚拟服务器中加入真实服务器。-r:指定真实服务器。-w:设置权重。-m:指定工作模式为NAT。-g:指定工作模式为DR。
添加一个tcp的192.168.88.5:80服务器指定rr调度算法。
![1a2afcbe713d4517a09021fe8f377029.png](https://img-blog.csdnimg.cn/direct/1a2afcbe713d4517a09021fe8f377029.png)
ipvsadm -Ln:查看添加的虚拟服务器
![85bcd9ad5d1042339c2272813b4eb52c.png](https://img-blog.csdnimg.cn/direct/85bcd9ad5d1042339c2272813b4eb52c.png)
向虚拟服务器中添加真实服务器,设置权重为1,200为2,工作模式为NAT
![87eda6abb19a4e919cd93200554505f8.png](https://img-blog.csdnimg.cn/direct/87eda6abb19a4e919cd93200554505f8.png)
查看服务器
![be9259f98fad4da6a87659363ef4c542.png](https://img-blog.csdnimg.cn/direct/be9259f98fad4da6a87659363ef4c542.png)
在客户端测试,因为设置虚拟服务的调度算法为轮询,所以权重没有起作用。
![f8bc373065994b6f9d384698821f052d.png](https://img-blog.csdnimg.cn/direct/f8bc373065994b6f9d384698821f052d.png)
修改虚拟服务器的算法为加权轮询。
![8017e6aec5aa46f9861829957469b54a.png](https://img-blog.csdnimg.cn/direct/8017e6aec5aa46f9861829957469b54a.png)
此时使用客户端访问就会出现1:2的比例。
![68fd909ac2ce42d59bc5169d33be2be9.png](https://img-blog.csdnimg.cn/direct/68fd909ac2ce42d59bc5169d33be2be9.png)
配置LVS的DR模式:当用户访问192.168.88.15时被调度器lvs的子接口接收到该访问,然后通过算法由本机网卡地址192.168.88.5向真实服务器的192.168.88.100/200发送命令,然后该服务器通过lo:0子接口192.168.88.15回答客户端的访问。
![e2af6aac9c024dfcb26984d0ef8bfb2d.png](https://img-blog.csdnimg.cn/direct/e2af6aac9c024dfcb26984d0ef8bfb2d.png)
![b1a7db6873604cbe8f37085309558e25.png](https://img-blog.csdnimg.cn/direct/b1a7db6873604cbe8f37085309558e25.png)
LVS主机和web服务器都是单网卡:
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5,删除eth1的IP
![b33e430bab9c4b7895f70b252e83a6e4.png](https://img-blog.csdnimg.cn/direct/b33e430bab9c4b7895f70b252e83a6e4.png)
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
删除lvs虚拟服务器的配置
![cecf9e100b1640d5b5336fb6a7eba7a8.png](https://img-blog.csdnimg.cn/direct/cecf9e100b1640d5b5336fb6a7eba7a8.png)
在lvs主机添加192.168.88.15的VIP地址
vim /etc/sysconfg/network-scripts/ifcfg-eth0:0
![2d18f7dc8075482baf6088a0ef45c9ce.png](https://img-blog.csdnimg.cn/direct/2d18f7dc8075482baf6088a0ef45c9ce.png)
修改web1的配置,配置eth0的地址为192.168.88.100
![2bd9c4bf01e34c8687f73786cd8e45e4.png](https://img-blog.csdnimg.cn/direct/2bd9c4bf01e34c8687f73786cd8e45e4.png)
![63a3a62feadd432fbdaea0e61d60868f.png](https://img-blog.csdnimg.cn/direct/63a3a62feadd432fbdaea0e61d60868f.png)
修改web2的网卡
![64dffed70fb24057b20e35ec51625ba9.png](https://img-blog.csdnimg.cn/direct/64dffed70fb24057b20e35ec51625ba9.png)
配置web1的loopback网卡的子接口lo:0,虚拟网卡只有它自己所有掩码为32位。
192.168.88.15表示为自己的地址不和其他主机冲突。
![95f9fc0bc17e42bea933c6ddce05cf65.png](https://img-blog.csdnimg.cn/direct/95f9fc0bc17e42bea933c6ddce05cf65.png)
![800bd871c4484daab810ad087f7c27a2.png](https://img-blog.csdnimg.cn/direct/800bd871c4484daab810ad087f7c27a2.png)
然后配置web2
![7f0c758221414803a1646fc05f73528f.png](https://img-blog.csdnimg.cn/direct/7f0c758221414803a1646fc05f73528f.png)
在2台web服务器上配置内核参数,使他们不响应对客户端的请求192.168.88.15(由LVS调度)。
sysctl -a
![319c5705551845de87b98dac766e08b3.png](https://img-blog.csdnimg.cn/direct/319c5705551845de87b98dac766e08b3.png)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
![ca8a71fe986b42789bf1508098832a4e.png](https://img-blog.csdnimg.cn/direct/ca8a71fe986b42789bf1508098832a4e.png)
![094a8446870a4d94967e23b25bf041a9.png](https://img-blog.csdnimg.cn/direct/094a8446870a4d94967e23b25bf041a9.png)
![e6c357bbfc3f493da2ab17cc53a6fe40.png](https://img-blog.csdnimg.cn/direct/e6c357bbfc3f493da2ab17cc53a6fe40.png)
在lvs主机添加虚拟服务器
![abadf86b5c914d4b9fe283fbf3f7ed6c.png](https://img-blog.csdnimg.cn/direct/abadf86b5c914d4b9fe283fbf3f7ed6c.png)
按ctrl+r进入搜索命令模式,输入for,按左右键
![989e8e53c18542b6aed8d03eeb733b46.png](https://img-blog.csdnimg.cn/direct/989e8e53c18542b6aed8d03eeb733b46.png)
此时client主机访问192.168.88.15
![01f4f44e83954ae6bead0d9c4d1b06b7.png](https://img-blog.csdnimg.cn/direct/01f4f44e83954ae6bead0d9c4d1b06b7.png)
当web1主机出现错误
![22bf13f5d3cb468ea6845ad3ea51de85.png](https://img-blog.csdnimg.cn/direct/22bf13f5d3cb468ea6845ad3ea51de85.png)
![8696d80f72f3466b94c87c41067d7717.png](https://img-blog.csdnimg.cn/direct/8696d80f72f3466b94c87c41067d7717.png)
删除该服务器
![2d1e537dfb09410b891896cee106053d.png](https://img-blog.csdnimg.cn/direct/2d1e537dfb09410b891896cee106053d.png)
此时只有web2在服务
![30b019e20b224b05a07b853998b0227c.png](https://img-blog.csdnimg.cn/direct/30b019e20b224b05a07b853998b0227c.png)
使用ansible命令来配置LVS服务
在192.168.88.240主机上安装ansible软件包
![aeaca8f7865f4e9bb947ffcbed39a800.png](https://img-blog.csdnimg.cn/direct/aeaca8f7865f4e9bb947ffcbed39a800.png)
创建工作目录,创建ansible.cfg和inventory主机清单
![399b11a54b394043b482efb312472b27.png](https://img-blog.csdnimg.cn/direct/399b11a54b394043b482efb312472b27.png)
![57c69814e119440f8d4ba2329867e1ee.png](https://img-blog.csdnimg.cn/direct/57c69814e119440f8d4ba2329867e1ee.png)
配置主机清单
![6fe94e008f4f49178d29483d712b1c5a.png](https://img-blog.csdnimg.cn/direct/6fe94e008f4f49178d29483d712b1c5a.png)
因为有主机密钥检查所以连接失败
![5117fc7ec7404dd99d81709916e32d96.png](https://img-blog.csdnimg.cn/direct/5117fc7ec7404dd99d81709916e32d96.png)
不检查主机密钥
![39642b3ac3c94e9c866bb7241dcbefb3.png](https://img-blog.csdnimg.cn/direct/39642b3ac3c94e9c866bb7241dcbefb3.png)
此时就能ping通了
![d42c3ccc9c594675bc372bab4a447ded.png](https://img-blog.csdnimg.cn/direct/d42c3ccc9c594675bc372bab4a447ded.png)
配置vim。~/.vimrc
![342cf7d990b14d5eba2accefca8faebc.png](https://img-blog.csdnimg.cn/direct/342cf7d990b14d5eba2accefca8faebc.png)
配置web主机上的服务
创建index.html文件
![c6e27df938da4ee0b07fd5cb11fef6d9.png](https://img-blog.csdnimg.cn/direct/c6e27df938da4ee0b07fd5cb11fef6d9.png)
![8a76d0d1c4fd40e2a5b7ab8e0ac28674.png](https://img-blog.csdnimg.cn/direct/8a76d0d1c4fd40e2a5b7ab8e0ac28674.png)
![f60b82bdc7ff42a1a33bb80bc8fe0855.png](https://img-blog.csdnimg.cn/direct/f60b82bdc7ff42a1a33bb80bc8fe0855.png)
![ac4672ca48a1442fabced57d9310635a.png](https://img-blog.csdnimg.cn/direct/ac4672ca48a1442fabced57d9310635a.png)
此时修改index.html文件成功
![d5e5962991db4580b312ea51677370bb.png](https://img-blog.csdnimg.cn/direct/d5e5962991db4580b312ea51677370bb.png)
网卡eth0:0可以拷贝到一个文件中需要时直接拷贝过去
使用sysctl模块修改内核参数
![51fa2b6613d045fb9a22079b959cd9b1.png](https://img-blog.csdnimg.cn/direct/51fa2b6613d045fb9a22079b959cd9b1.png)
![a58c884ed9dc4285864d0000dedd5d6b.png](https://img-blog.csdnimg.cn/direct/a58c884ed9dc4285864d0000dedd5d6b.png)
KeepAlived高可用集群:工作原理就是VRRP(虚拟冗余路由协议)。
![a9dbffc8413144bc94d7aa5408eeaacc.png](https://img-blog.csdnimg.cn/direct/a9dbffc8413144bc94d7aa5408eeaacc.png)
有两个真实服务器一个虚拟服务器,用户服务器访问 虚拟服务器,虚拟服务器把数据转发给其中一个真实服务器,当该服务器出现故障时,虚拟服务器就会把数据转发给另一台完好的服务器。
配置web:web1:eth0->192.168.88.100;web2:eth0->192.168.88.200
配置keepalived在两台web服务器安装keepalived: yum -y install keepalived httpd
![1e260a2d88474c2a8d2b24f71872b8f9.png](https://img-blog.csdnimg.cn/direct/1e260a2d88474c2a8d2b24f71872b8f9.png)
修改配置文件:/etc/keepalived/keepalived.conf
![6de813dbe83545d39d1ab907336da7c8.png](https://img-blog.csdnimg.cn/direct/6de813dbe83545d39d1ab907336da7c8.png)
router_id:设置本机在集群中的唯一标识符。
vrrp_iptables:自动配置iptables放行规则
![6572be154b884902a978c1b03f231e10.png](https://img-blog.csdnimg.cn/direct/6572be154b884902a978c1b03f231e10.png)
state:状态主为MASTER备用BACKUP
interface:网卡
virtual_router_id:虚拟路由器地址
priority:优先级
advert_int:发送心跳消息的间隔
auth_type:认证类型为共享密码
auth_pss:集群中的机器密码相同才能成为集群
192.168.88.80/24:VIP地址。
![8e8f305ec96e4e32b826f6fc0339ffef.png](https://img-blog.csdnimg.cn/direct/8e8f305ec96e4e32b826f6fc0339ffef.png)
启动服务
![b4c6228ea01b4b7296689d530c75c69f.png](https://img-blog.csdnimg.cn/direct/b4c6228ea01b4b7296689d530c75c69f.png)
![b8edfdea1af745e8a5a20d0b2c080b8f.png](https://img-blog.csdnimg.cn/direct/b8edfdea1af745e8a5a20d0b2c080b8f.png)
当访问192.168.88.80其实就是访问的web1主机
![99f760fe3039443ab07898e3d22c948b.png](https://img-blog.csdnimg.cn/direct/99f760fe3039443ab07898e3d22c948b.png)
配置web2
![1ea0e37762e84c20a81421b80efb8185.png](https://img-blog.csdnimg.cn/direct/1ea0e37762e84c20a81421b80efb8185.png)
修改标识符web2、状态为BACKUP、优先级为80
![d44b9ff76d8d46189ed5bfae142a937c.png](https://img-blog.csdnimg.cn/direct/d44b9ff76d8d46189ed5bfae142a937c.png)
![4c2c5610a74f4db498ec3e15320dcb4a.png](https://img-blog.csdnimg.cn/direct/4c2c5610a74f4db498ec3e15320dcb4a.png)
重启
![524d897ee9a442048181f5656f429f31.png](https://img-blog.csdnimg.cn/direct/524d897ee9a442048181f5656f429f31.png)
因为该设备为备用设备,虚拟IP活跃在主设备中,所以没有192.168.88.80的VIP。
![c6b14a5a640e4802b97f707065fd7924.png](https://img-blog.csdnimg.cn/direct/c6b14a5a640e4802b97f707065fd7924.png)
搭建高可用、负载均衡的web集群:
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5
lvs2:eth0->192.168.88.6
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
关闭web服务器的keepalived
![4127d095ba7d4f959b4449e7732a31d3.png](https://img-blog.csdnimg.cn/direct/4127d095ba7d4f959b4449e7732a31d3.png)
![c395774005d040f69a4d50982a58f027.png](https://img-blog.csdnimg.cn/direct/c395774005d040f69a4d50982a58f027.png)
在两台web服务器的lo上配置VIP
![63a39ce64091497fa4106394570cd69b.png](https://img-blog.csdnimg.cn/direct/63a39ce64091497fa4106394570cd69b.png)
![7835260f3dd9431fac58a94a76c8d9de.png](https://img-blog.csdnimg.cn/direct/7835260f3dd9431fac58a94a76c8d9de.png)
在两台web服务器上配置内核参数
![97ca80c34b2948c885fb41d043630ff6.png](https://img-blog.csdnimg.cn/direct/97ca80c34b2948c885fb41d043630ff6.png)
![4a10dde800fb493783b1e73cf34533c2.png](https://img-blog.csdnimg.cn/direct/4a10dde800fb493783b1e73cf34533c2.png)
删除lvs1的eth0:0,VIP由keepalived接管。
![a605d8acc04c4f538fbff8dd55f32063.png](https://img-blog.csdnimg.cn/direct/a605d8acc04c4f538fbff8dd55f32063.png)
删除lvs1的LVS规则。LVS规则由keepalived创建
![b29612de77884803b2ab130f5cff267d.png](https://img-blog.csdnimg.cn/direct/b29612de77884803b2ab130f5cff267d.png)
在两台lvs服务器上安装keepalived和ipvsadm
![43ecfada77de49cd88f3f5f2e006a701.png](https://img-blog.csdnimg.cn/direct/43ecfada77de49cd88f3f5f2e006a701.png)
![3ac70fcc18d14f39aacaa3c2da9c98ca.png](https://img-blog.csdnimg.cn/direct/3ac70fcc18d14f39aacaa3c2da9c98ca.png)
配置lvs服务器的keepalived
![ef77f95b53bb4fc3912391a082c262e9.png](https://img-blog.csdnimg.cn/direct/ef77f95b53bb4fc3912391a082c262e9.png)
![d99e71f0ea7b49b7ab2a0b73c6534133.png](https://img-blog.csdnimg.cn/direct/d99e71f0ea7b49b7ab2a0b73c6534133.png)
配置LVS规则
virtual_server 192.168.88.16 80:声明虚拟服务器地址和端口号
delay_loop 6:健康检查延迟6秒开始
lb_algo wrr:调度算法为wrr
lb_kind DR:工作模式为DR
persistence_timeout 50:50秒内相同客户端调度到相同服务器
protocol TCP:协议为TCP
real_server 192.168.88.100 80:声明真实服务器
weight 1:权重
TCP_CHECK:通过TCP协议对真实服务器做健康检查
connect_timeout 3:连续超时时间为3秒
nb_get_retry 3:3次访问失败则认为真实服务器故障
delay_before_retry 3:两次检查时间间隔为3秒
![32c27ccdc7964799af7cd09b53bba488.png](https://img-blog.csdnimg.cn/direct/32c27ccdc7964799af7cd09b53bba488.png)
此时还没有LVS规则
![71dd737d196847e2ab71984561cb30d9.png](https://img-blog.csdnimg.cn/direct/71dd737d196847e2ab71984561cb30d9.png)
开启服务
![683e5c42c9864072bc5a1a9115ec266c.png](https://img-blog.csdnimg.cn/direct/683e5c42c9864072bc5a1a9115ec266c.png)
此时就显示LVS规则
![f68c1274fa0b4fcc99b59897d4ff49fe.png](https://img-blog.csdnimg.cn/direct/f68c1274fa0b4fcc99b59897d4ff49fe.png)
此时client访问192.168.88.16就能轮询web服务器
![0c12075ab1cf4c26a2348a7b613b12aa.png](https://img-blog.csdnimg.cn/direct/0c12075ab1cf4c26a2348a7b613b12aa.png)
因为设置了persistence_timeout 50:在50秒内访问同一服务器,所以会一直访问web2
![43deed49689e4105808aa80bff0602c6.png](https://img-blog.csdnimg.cn/direct/43deed49689e4105808aa80bff0602c6.png)
![df81e26a10554dec892f25e8eab1b7db.png](https://img-blog.csdnimg.cn/direct/df81e26a10554dec892f25e8eab1b7db.png)
注释该行重启服务,此时就能以权重响应web服务器
![11f51fffa5c34e31b7d5bdd397ae4588.png](https://img-blog.csdnimg.cn/direct/11f51fffa5c34e31b7d5bdd397ae4588.png)
![e408cd6a1b0043e5afb1e02b71414836.png](https://img-blog.csdnimg.cn/direct/e408cd6a1b0043e5afb1e02b71414836.png)
![7c00ad49b40942c196fdccf74fe4ca22.png](https://img-blog.csdnimg.cn/direct/7c00ad49b40942c196fdccf74fe4ca22.png)
当关闭web1的http服务
![69ff2d5e5403437c8455ee10959d3954.png](https://img-blog.csdnimg.cn/direct/69ff2d5e5403437c8455ee10959d3954.png)
此时客户端访问就只有web2在响应了
![d2c5b0aee9c647dcac64bfbf37fe8176.png](https://img-blog.csdnimg.cn/direct/d2c5b0aee9c647dcac64bfbf37fe8176.png)
LVS规则自动更新,把出故障的服务器暂时从LVS规则中去掉。
![3011cedcd07e42f4bd8840298649b9c8.png](https://img-blog.csdnimg.cn/direct/3011cedcd07e42f4bd8840298649b9c8.png)
当开启web1服务
![9f6524463e814c85b49d4291d552d8ab.png](https://img-blog.csdnimg.cn/direct/9f6524463e814c85b49d4291d552d8ab.png)
客户端访问会重新加入web1服务
![82a65042cd254c67a62c4b2a2869cfeb.png](https://img-blog.csdnimg.cn/direct/82a65042cd254c67a62c4b2a2869cfeb.png)
LVS规则也会自动更新
![de3149508f05418c8c8cd98dbd5e612a.png](https://img-blog.csdnimg.cn/direct/de3149508f05418c8c8cd98dbd5e612a.png)
修改lvs2主机的keepalived配置
![97e6168075694bd29b26f77a757b966d.png](https://img-blog.csdnimg.cn/direct/97e6168075694bd29b26f77a757b966d.png)
![26eb589edff947fbb75649876b8e0684.png](https://img-blog.csdnimg.cn/direct/26eb589edff947fbb75649876b8e0684.png)
![ae64e23d9a0747e2a8ce1ee837dc6d3a.png](https://img-blog.csdnimg.cn/direct/ae64e23d9a0747e2a8ce1ee837dc6d3a.png)
重启服务,
![70bcf0c7107043e18bbb41795bc92f98.png](https://img-blog.csdnimg.cn/direct/70bcf0c7107043e18bbb41795bc92f98.png)
当关闭lvs1的keepalived服务
![021b8743548f4a51b76f95b2b02cb86c.png](https://img-blog.csdnimg.cn/direct/021b8743548f4a51b76f95b2b02cb86c.png)
此时lvs2的VIP就会自动开启
![a0f803ccc70142769f0226c35f2c5d0d.png](https://img-blog.csdnimg.cn/direct/a0f803ccc70142769f0226c35f2c5d0d.png)
此时客户端也能正常访问
![afc80a517e6e49d5baf2f4851dad652a.png](https://img-blog.csdnimg.cn/direct/afc80a517e6e49d5baf2f4851dad652a.png)
开启lvs1的keepalived时lvs2的VIP会自动隐藏不启用。
![3d412c6bbd7f455096724206f966d0e1.png](https://img-blog.csdnimg.cn/direct/3d412c6bbd7f455096724206f966d0e1.png)
HAProxy:也是一款实现负载均衡的调度器。适用与负载特别大的web站点。(所有web服务器都需要经过haproxy调度服务器)
HAProxy工作模式:
mode http:只适用于web服务
mode tcp:适用与各种服务
mode health:仅做健康检查,很少使用
![a325faa85ed147ecbcec4ef25331bc90.png](https://img-blog.csdnimg.cn/direct/a325faa85ed147ecbcec4ef25331bc90.png)
环境准备:不需要VIP
client1:eth0->192.168.88.10
HAProxy:eth0->192.168.88.5
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
把lvs1的keepalived和ipvsadm卸载,修改主机名为HAProxy
![dbad58d4ced0450f8a921e4e920f5eba.png](https://img-blog.csdnimg.cn/direct/dbad58d4ced0450f8a921e4e920f5eba.png)
![a1461b7542224a8aba37b7fa6740f682.png](https://img-blog.csdnimg.cn/direct/a1461b7542224a8aba37b7fa6740f682.png)
安装haproxy软件包
![72d86f8502694ab3bcdab2a651d66f9f.png](https://img-blog.csdnimg.cn/direct/72d86f8502694ab3bcdab2a651d66f9f.png)
修改haproxy配置文件
![da86eebfc25d4efdbc457e1ab98c01e3.png](https://img-blog.csdnimg.cn/direct/da86eebfc25d4efdbc457e1ab98c01e3.png)
配置文件中global是全局配置,default是缺省配置,如果后续有和default相同的配置,default配置会被覆盖。
![27506a8c59ce497491de7631c757bc13.png](https://img-blog.csdnimg.cn/direct/27506a8c59ce497491de7631c757bc13.png)
![5a436ae5c2d8497081380259c5ba928c.png](https://img-blog.csdnimg.cn/direct/5a436ae5c2d8497081380259c5ba928c.png)
配置文件中,frontend描述haproxy怎么和用户交互,backend描述haproxy怎么和后台应用服务器交互,这两个选项一般不单独使用,而是合并到一起,名为listen。
![eb6426c7be3c4557995d8c75ab7bfcff.png](https://img-blog.csdnimg.cn/direct/eb6426c7be3c4557995d8c75ab7bfcff.png)
将63以下全部删除,添加listen
listen myweb 0.0.0.0:80:定义虚拟服务器,监听在所有可用地址的80端口
balance roundrobin:定义轮询调度算法
server web1 192.168.88.100 check inter 2000 rise 2 fall 5:对web服务器做健康检查,2秒检查一次,如果连续两次检查成功,认为服务器是健康的,如果连续5次检查失败则认为服务器坏了。
![9fcf932402c44034a43a7072c1305cb5.png](https://img-blog.csdnimg.cn/direct/9fcf932402c44034a43a7072c1305cb5.png)
开启haproxy服务
![c6569546dcd445ea95e812eb62a1d06b.png](https://img-blog.csdnimg.cn/direct/c6569546dcd445ea95e812eb62a1d06b.png)
查看haproxy的状态
![dd9b576d7cf643c7b2ab028605722133.png](https://img-blog.csdnimg.cn/direct/dd9b576d7cf643c7b2ab028605722133.png)
![40ecc7ab5bcc4ab1949229130caf98e6.png](https://img-blog.csdnimg.cn/direct/40ecc7ab5bcc4ab1949229130caf98e6.png)
重新启动服务,此时就能轮询访问web服务器了
![6b5bb59fd5334a59a3dce4cc650b03fc.png](https://img-blog.csdnimg.cn/direct/6b5bb59fd5334a59a3dce4cc650b03fc.png)
配置虚拟服务器监听1080端口用来监控haproxy
stats refresh 30s:设置监控页面自动刷新时间为30秒
stats uri /stats:定义监控地址为/stats
stats auth admin:admin:监控页面的用户名和密码都是admin
![103ead0256d949d8905504023e87728f.png](https://img-blog.csdnimg.cn/direct/103ead0256d949d8905504023e87728f.png)
重启服务
![fe9b4f60b80a4ea5a875b578438a8a99.png](https://img-blog.csdnimg.cn/direct/fe9b4f60b80a4ea5a875b578438a8a99.png)
此时就能访问监控页面,需要登录用户
![d2c89cdae1c94ebb819c03ca7af2416b.png](https://img-blog.csdnimg.cn/direct/d2c89cdae1c94ebb819c03ca7af2416b.png)
![9b34858f5a774ecbb9288e01ff5f9389.png](https://img-blog.csdnimg.cn/direct/9b34858f5a774ecbb9288e01ff5f9389.png)
web服务器的背景代表着不同的状态
![16b989d9b9034c0d8da35e110449ec67.png](https://img-blog.csdnimg.cn/direct/16b989d9b9034c0d8da35e110449ec67.png)
Queue:队列长度。Cur当前队列长度;Max最大队列长度;Limit限制长度
Session rate:会话率,每秒钟的会话数
Session:会话数
Bytes:字节数。ln收到的字节数,Out发出的字节数
Denied:拒绝。Req请求,Resp响应
Errors:错误
Warring:警告
Status:状态
LastChk:上一次检查。L4Ok第四层tcp检查通过
Wght:权重
在客户端下载httpd-tools软件包,使用ab命令访问调度器查看其负载状况
![268d7abebcb04e079aa3dda825673a49.png](https://img-blog.csdnimg.cn/direct/268d7abebcb04e079aa3dda825673a49.png)
![0d656ebeba444a4d98710584b38c96fc.png](https://img-blog.csdnimg.cn/direct/0d656ebeba444a4d98710584b38c96fc.png)
![3313a6d143bd4fbd87afd132b45223eb.png](https://img-blog.csdnimg.cn/direct/3313a6d143bd4fbd87afd132b45223eb.png)
使用ansible自动化来搭建HAproxy+keepalived集群
修改主机清单
![ccc693add4764f4b97d428ebb6e54687.png](https://img-blog.csdnimg.cn/direct/ccc693add4764f4b97d428ebb6e54687.png)
![d54aa31d63e045ac9c712a7c6ee0f11a.png](https://img-blog.csdnimg.cn/direct/d54aa31d63e045ac9c712a7c6ee0f11a.png)
卸载keepalived和ipvsadm软件包
![2cfd562648074c34b02559de4d0aaaff.png](https://img-blog.csdnimg.cn/direct/2cfd562648074c34b02559de4d0aaaff.png)
编辑config-haproxy.yml,安装HAProxy软件包
![c747f487763d4f19a83c9c79607e0ce1.png](https://img-blog.csdnimg.cn/direct/c747f487763d4f19a83c9c79607e0ce1.png)
将haproxy1的haproxy配置文件拷贝到file目录中
![070b4930553e48a89963cf69602e7c79.png](https://img-blog.csdnimg.cn/direct/070b4930553e48a89963cf69602e7c79.png)
![5923d80ab57a496e923725d50e7dcd8c.png](https://img-blog.csdnimg.cn/direct/5923d80ab57a496e923725d50e7dcd8c.png)
拷贝haproxy配置文件开启服务
![6921a574be2248cda512818710a63f3f.png](https://img-blog.csdnimg.cn/direct/6921a574be2248cda512818710a63f3f.png)
![7b08cb346c40499bb9cd10011e6eeb35.png](https://img-blog.csdnimg.cn/direct/7b08cb346c40499bb9cd10011e6eeb35.png)
查看lvs2
![1cd67f5db0714cf3a319b3d2388cfbf5.png](https://img-blog.csdnimg.cn/direct/1cd67f5db0714cf3a319b3d2388cfbf5.png)
此时lvs2调度服务器了
![56b0cdb2cd784f2294ce14a11c21f578.png](https://img-blog.csdnimg.cn/direct/56b0cdb2cd784f2294ce14a11c21f578.png)
使用ansible配置keepalived的服务
把/etc/keepalived/keepalived.cfg文件拷贝到file目录下面
![cd64327a7a1a4afaa66a530c058f1044.png](https://img-blog.csdnimg.cn/direct/cd64327a7a1a4afaa66a530c058f1044.png)
编辑keepalived.cfg,其余的删除
![9bb374fcad27425abc49c4dbd1c05909.png](https://img-blog.csdnimg.cn/direct/9bb374fcad27425abc49c4dbd1c05909.png)
在主机清单中定义变量
![ae4123c3ef834aa8905d85acfc88f22f.png](https://img-blog.csdnimg.cn/direct/ae4123c3ef834aa8905d85acfc88f22f.png)
![6c9ef40eb9f34767a40b24d3cff297dd.png](https://img-blog.csdnimg.cn/direct/6c9ef40eb9f34767a40b24d3cff297dd.png)
运行该剧本
![69743c42605d4978baf9edaee02161b8.png](https://img-blog.csdnimg.cn/direct/69743c42605d4978baf9edaee02161b8.png)
此时haproxy1就成为了mater主设备,lvs2成为了从设备
![09553501520f4eeaa8f8051e62abc889.png](https://img-blog.csdnimg.cn/direct/09553501520f4eeaa8f8051e62abc889.png)
![86024445c8704a8585b0e519da8e2137.png](https://img-blog.csdnimg.cn/direct/86024445c8704a8585b0e519da8e2137.png)
![57cfc21833f8458e9984f6601081c54d.png](https://img-blog.csdnimg.cn/direct/57cfc21833f8458e9984f6601081c54d.png)
负载均衡调度器比较:LVS适用于需要高并发和稳定性的场景;Nginx适用于静态文件服务和反向代理、应用层负载均衡等场景;HAProxy则具备较为丰富的功能和灵活性,适用于多种负载场景。
LVS:
优点:
高性能:LVS使用Linux内核中的IP负载均衡技术,能够实现非常高的并发处理能力。
稳定性:LVS经过长时间的实践应用,成熟稳定被广泛使用。
可用性:支持高可用的配置,可以实现故障自动切换,提供无中断服务。
灵活性:可根据需要采用多种负载均衡算法,如轮询、加强轮询、哈希等。
缺点:
配置复杂:相对于其他两个技术,LVS的配置相对较为复杂,需要更深入的了解和配置
功能相对局限:LVS主要是一种传输层负载均衡技术,无法像Nginx和HAProxy那样对应用层协议进行处理。
Nginx:
优点:
高性能:Nginx采用了基于事件驱动和异步非阻塞架构,能够处理大量并发连接。
负载均衡:Nginx具备内置的负载均衡功能,可以根据配置进行请求的转发。
丰富的功能:Nginx支持反向代理、静态文件服务、缓存、SSL等,在web服务器领域有很广泛的应用。
缺点:
功能相对较少:相对LVS和HAProxy,Nginx在负载均衡算法和健康检查等方面的功能相对较少。
限制于应用层协议:Nginx只能对HTTP和HTTPS等应用层协议进行处理,无法处理其他协议。
HAProxy:
优点:
灵活性:HAProxy支持丰富的负载均衡算法和会话保存方式,可以根据需求进行灵活配置。
完整的功能:HAProxy支持高可用性配置、健康检查、故障恢复、SSL等功能,在负载均衡领域应用广泛。
高性能:HAProxy性能优良,能够处理大量并发连接,并且支持异步IO模型。
缺点:
内存占用:相对于Nginx和LVS,HAProxy在处理大量连接时消耗的内存稍高一些
高可用性:HAProxy需要借助额外的工具来实现高可用性,例如keepalived