centos下keepalived使用问题记录

2020-11-26  本文已影响0人  wowshiwoniu

keepalived配置记录

keepalived1

/etc/keepalived/keepalived.cfg

global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_haproxy {
    script "killall -0 haproxy" # 根据进程名称检测进程是否存活
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state MASTER  # 主节点状态为master,其与备用节点ba状态为backup
    interface ens160
    mcast_src_ip 10.88.200.41  #此处请填写相对应的本地的IP地址,IP不能相同,每个master节点的请另行修改
    virtual_router_id 66  # 注意,此处同一组内的需要保持一致,范围在0-255
    priority 250             #优先级高的能优先获得vip地址,优先级不能相同,每个master节点的请另行修改
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456  # 此密码最多只支持八位数,建议密码不要设置太复杂,要尽可能简单,最好不要有特殊字符、汉字
    }
    virtual_ipaddress {
        10.88.200.45         #此处填写你要设定的VIP地址
    }
    track_script {
       check_haproxy
    }
}

keepalived2

/etc/keepalived/keepalived.cfg

global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_haproxy {
    script "killall -0 haproxy" # 根据进程名称检测进程是否存活
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP  # 主节点状态为master,其与备用节点ba状态为backup
    interface ens160
    mcast_src_ip 10.88.200.42  #此处请填写相对应的本地的IP地址,IP不能相同,每个master节点的请另行修改
    virtual_router_id 66  # 注意,此处同一组内的需要保持一致,范围在0-255
    priority 200            #优先级高的能优先获得vip地址,优先级不能相同,每个master节点的请另行修改
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456  # 此密码最多只支持八位数,建议密码不要设置太复杂,要尽可能简单,最好不要有特殊字符、汉字
    }
    virtual_ipaddress {
        10.88.200.45        #此处填写你要设定的VIP地址
    }
    track_script {
       check_haproxy
    }
}

注意点:

  1. virtual_router_id 同一组内的这个值一定要保持一致,范围0-255
  2. priority 优先级,master的优先级一定要高于backup的优先级,呈递减状态
  3. 在同一个局域网内,不同组的keepalived的virtual_router_id最好区分开,避免受到干扰

实际问题定位记录

vip无法实现自动漂移

在启动keepalived后,通过ip addr命令查看vip是否在网卡上

ip addr show ens160
image.png

可以看到虚拟ip已绑定到ens160上,停掉该节点上的keepalived进程,观察vip是否漂移

systemctl stop keepalived

发现master02和master03机器都没有发生漂移,这就奇了怪了。

后来看网上说,有可能是统一局域网安装了keepalived,但是不同组的keepalived的virtual_router_id冲突了,将配置调整后,重启keepalived,发现三个master出现了脑裂情况,均出现了vip绑定,查看系统日志

journalctl -xeu keepalived

发现每个节点都在将自己设置为master,无法与master进行通信,就选举自己作为了master


image.png

也就是说master发出的vrrp广播没有被backup的节点接收到,借助于tcpdump抓包工具,我们可以看到相关的广播请求

yum install tcpdump -y
tcpdump -i ens160 vrrp -n
image.png

每台机器都在向外边发送广播,后来查到是参数virtual_router_id的问题,这个参数在同一个小组内,需要保持一致,不同的小组保持不一样即可。修改为一致后

image.png

再次抓包,发现只剩下master节点在发广播,vip可实现正常漂移了。

上一篇下一篇

猜你喜欢

热点阅读