提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
Keepalived 的设计目的是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备。使用Keepalived 构建LVS群集更加简便易用,主要优势体现在:对LVS负载均衡调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
注意:使用Keepalived 构建LVS集群时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived 自动完成,不需要手动执行ipvsadm(除了查看和监控集群以外)
一、环境准备
主调度器: IP:10.101.37.22 VIP:10.101.37.151
从调度器: IP:10.101.37.28 VIP:10.101.37.151
应用节点服务器1:IP:10.101.37.27 lo:0: 10.101.37.151
应用节点服务器2:IP:10.101.37.30 lo:0: 10.101.37.151
LVS DR模式调度器与应用服务器不要使用同一服务器,易出现双机互发广播风暴
LVS DR模式调动器与应用服务器必须处于同一网段中
双机互发广播风:
当 A 为 MASTER 时,目的IP为 21 的包发往服务器A,LVS A有两种路由选择,“路由至Local”或“修改 MAC 路由至 B”。当 A 修改 MAC 路由至 B 后,服务器 B 上的 LVS 虽然状态为 BACKUP,但仍然会处理这个包,而不是直接由应用层的服务来处理。B 节点的 LVS 也会有两种选择,“修改 MAC 路由至 A”或者“路由至Local”。当 A路由给B,B又路由给A时,就会相互反复发包。
折中解决办法:
在备调度器配置里,调度算法用wrr, 再将virtual_server中的主real_server的权重设为0,或直接删除主real_server的配置。
主调度器的配置不变。从主调度器转发至备调度器的包,备调度器将不再会转发至主调度器,环路因此不会形成。
二、调度器安装(Keepalived+LVS)
1.修改sysctl.conf配置
对于DR群集模式来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux 内核的重定向参数。
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens160.send_redirects = 0
[root@localhost ~]# sysctl -p
2.安装Keepalived+LVS
[root@localhost ~]# yum -y install keepalived ipvsadm
3.修改Keepalived配置
以主调度器举例,从调度器类似
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
! Configuration Fid_e for keepalived
global_defs {
# router_id主机为master、备机为backup
router_id master
}
vrrp_instance VI_1 {
# state主机为MASTER、备机为BACKUP
state MASTER
# 绑定网卡
interface ens160
# 主备应保持一致
virtual_router_id 66
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.101.37.151
}
}
#DR模式:VIP端口应与RS端口保持一致
virtual_server 10.101.37.151 80 {
delay_loop 6
#为了测试轮休效果persistence_timeout可以注释掉,生产环境再开启
#persistence_timeout 50
lb_algo rr
lb_kind DR
protocol TCP
real_server 10.101.37.30 80 {
weight 1
TCP_CHECK {
connect_timeout 5
connect_port 80
}
}
real_server 10.101.37.27 80 {
weight 1
TCP_CHECK {
connect_timeout 5
connect_port 80
}
}
}
4.开启Keepalived服务
[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl enable keepalived
5.验证配置
三、应用节点安装
1.修改sysctl.conf配置
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p
2.配置网卡、路由
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.101.37.151
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 10.101.37.151 dev lo:0
[root@localhost network-scripts]#route add -host 10.101.37.151 dev lo:0
四、测试
应用节点采用的httpd方便测试,并将首页内容改为服务器地址:27、30
通过访问VIP,可以看到轮休效果
通过28服务器的lvs调用链路,也可以看出效果
结尾
- 感谢大家的耐心阅读,如有建议请私信或评论留言。
- 如有收获,劳烦支持,关注、点赞、评论、收藏均可,博主会经常更新,与大家共同进步