Keepalived+LVS(DR模式)安装部署实战详细教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

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调用链路,也可以看出效果
在这里插入图片描述


结尾

  • 感谢大家的耐心阅读,如有建议请私信或评论留言。
  • 如有收获,劳烦支持,关注、点赞、评论、收藏均可,博主会经常更新,与大家共同进步

猜你喜欢

转载自blog.csdn.net/qq359605040/article/details/129584543