Centos7.4下keepalived-1.3.5的安装使用

keepalived两个功能,一个是使lvs使用的vip高可用,一个是监控各个上游节点的对应端口是否正常工作,以保证快速剔除坏掉的节点。

 

keepalived默认的yum 1.3.5有BUG,根本跑不起来,所以我们换成源码压缩包下载后编译安装的方式进行安装

 

经过实验 CentOS7.4下的lvs不是不停轮询,而是一段时间内会绑定用户和实际目标服务器,keepalived中也会表现出来,不过我们可以换个ip访问一下,来验证我们的配置结果。

 

本文出现三种节点名称,keepalived主节点和备用节点,以及RealServer——最终提供服务的服务器,注意将keepalived的主节点、备用节点、realserver分配为不同的机器

 

1、安装依赖(本文使用的Centos7.4是最小安装,部分依赖不全,所以需要先安装依赖)

yum install -y gcc gcc-c++  openssl-devel

2、下载keepalived-1.3.5压缩包(下载地址),放在/usr/local目录下,并解压,步骤略

3、进入解压后的目录中,执行以下命令:

./configure --prefix=/usr/local/keepalived && make && make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp ./keepalived/etc/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived

4、编辑keepalived.service

vi /lib/systemd/system/keepalived.service

将所有的字符串 “/usr/local/keepalived” 替换为空白,vi编辑器命令:【%s/\/usr\/local\/keepalived//g】

5、刷新配置

systemctl daemon-reload

6、编辑/etc/keepalived/keepalived.conf配置为自己的配置(摘自传送门,有改动),示例:

主节点:

global_defs {  
   notification_email {  
         edisonchou@hotmail.com  
   }  
   notification_email_from sns-lvs@gmail.com  
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface eth1  #指定网卡名称,是实际使用的网卡,而非虚网卡
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.200 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wrr # 设置负载调度的算法为wlc                   
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0                
    persistence_timeout 0          
    protocol TCP                  
    real_server 192.168.80.102 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 192.168.80.103 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}

注意网卡名一定要和你机器上的一致。另外,virtual_router_id不要与同网络的其他的keepalived集群配置冲突。

 

备用节点,需要修改:

将MASTER改为BACKUP,并将priority由100改低一些

 

7、在各个Real Server中添加脚本,命名为【rs.sh】(摘自传送门,有改动):

SNS_VIP=$2
#/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

增加执行权限:

chmod 755 rs.sh

执行:

./rs.sh start [VIP]

该内容将VIP作为RealServer的一个类似127.0.0.1的IP添加到RealServer的回环IP列表中,让RealServer认为主节点通过VIP转发过来的包真的是发给自己的,从而正常处理该包,不至于认为数据包不合法。

 

8、在主节点和备节点上分别执行 

systemctl start keepalived

 

 

9、其他注意内容

A、如果在正式环境中,建议将添加回环地址作为开机启动项,并且keepalived 也配置成开机启动

B、如果使用了防火墙,务必允许keepalived使用的vrrp组播通过防火墙,否则虚IP会同时出现在主备两台机器上。

命令如下(网卡换成你的网卡即可):

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface [网卡] --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------正文完毕-----------分割线-----------以下通俗的介绍了虚拟IP的实现原理---------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Keepalived 中的虚拟 IP(VIP)实现机制可以通俗地解释为以下几个步骤,结合了协议协调和网络通信技术:

1. 基于 VRRP 协议的主备选举

  • VRRP(虚拟路由冗余协议) 是核心。多台服务器组成一个“虚拟路由器组”,共享一个虚拟 IP(VIP)。

  • 主服务器(Master) 定期发送心跳(VRRP 通告),宣告自己存活。备份服务器(Backup)监听这些通告。

  • 故障切换:如果备份服务器在一定时间内未收到主的心跳,会触发选举(根据优先级)选出新的主服务器。

2. 动态绑定 VIP 到网络接口

  • 主服务器 会将 VIP 绑定到自己的物理网卡(如 eth0),操作系统层面通过命令(如 ip addr add VIP dev eth0)实现。

  • 切换时:新主服务器执行相同命令绑定 VIP,旧主(若存活)则解除绑定,确保 VIP 唯一性。

3. ARP 广播更新网络设备

  • 免费 ARP(Gratuitous ARP):当新主服务器绑定 VIP 后,立即广播 ARP 报文,声明“VIP 对应的 MAC 地址已变更为我的 MAC”。

  • 更新交换机与主机:网络中的交换机和客户端收到后,会刷新 ARP 缓存表,后续流量自然导向新主。

4. 防止冲突与脑裂

  • 优先级机制:VRRP 通过优先级决定主备,避免多主冲突(如主服务器恢复后,若优先级更高,会重新夺回 VIP)。

  • 多播/单播心跳:通过特定网络配置确保心跳可靠,避免因网络分区导致“脑裂”(如设置合理的超时时间和多播地址过滤)。

通俗类比

想象一个团队中的接力赛:

  • VIP 是接力棒,正常情况下由主选手(主服务器)持有。

  • 主选手每隔一段时间举手(发送心跳)示意自己正常。若其他选手(备份)发现主未举手,立即抢过接力棒(绑定 VIP),并大喊“接力棒在我这里!”(免费 ARP 广播),让所有人知道接力棒易主。

  • 即使主选手突然跌倒(故障),比赛(服务)也能继续,因为接力棒已无缝传递。

关键点总结

  • 协议协调:VRRP 管理主备状态,确保 VIP 唯一归属。

  • 动态 IP 绑定:操作系统命令实时调整网络配置。

  • ARP 广播:强制刷新网络设备缓存,确保流量正确路由。

通过这三层机制,Keepalived 实现了 VIP 的高可用性,保障服务在故障时快速切换,用户无感知。

posted @ 2018-04-19 14:34  剑握在手  阅读(5075)  评论(1)    收藏  举报
返回顶部↑