1、虚拟IP没有生成
- 问题描述:
服务启动后虚拟IP没有生成,查看日志有如下报错信息
Jun 29 10:43:11 cloud-config2 Keepalived_vrrp[2442]: ip address associated with VRID not present in received packet : 172.21.15.64Jun 29 10:43:11 cloud-config2 Keepalived_vrrp[2442]: one or more VIP associated with VRID mismatch actual MASTER advertJun 29 10:43:11 cloud-config2 Keepalived_vrrp[2442]: bogus VRRP packet received on eth0 !!!Jun 29 10:43:11 cloud-config2 Keepalived_vrrp[2442]: VRRP_Instance(VI_1) ignoring received advertisment...
- 问题原因及解决方案:
- 两台主机时间不同步,使用ntpdate同步服务器时间
- virtual_router_id设置有问题,需主从保持一致
```bash
Master:
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 88 ====>默认是51 priority 100
Slave:
vrrp_instance VI_1 {
interface eth0
state BACKUP
virtual_router_id 88 ====>默认是51,统一集群MASTER跟Slave需要保持一致
priority 90
<a name="plRE9"></a>### 2、脑裂问题- 问题描述:在Keepalived高可用系统中,出现两个节点同时拥有VIP的情况- 问题原因keepalived 分为主备两台机器,但对外只提供一个VIP访问,只有主机down 机VIP 才会漂移到备机提供服务。脑裂会导致主备两台机器同时拥有VIP出现争抢问题。<br />原因是主备机器之间通信断开,例如启用了iptables,不设置"系统接收VRRP协议"的规则,就会出现脑裂,备机keepAlived程序接收不到主机的广播信息,表现为备机上存在VIP。- 解决方案:```bash# 为iptables 添加规则限制:vim /etc/sysconfig/iptables# 添加:-A INPUT -s 192.168.244/24 -d 224.0.0.18 -p vrrp -j ACCEPT#重启iptables :service iptables restart
3、多组Keepalived冲突
- 问题描述:
在同一局域网中,如果部署了多套Keepalived服务,而又未配置专门的心跳通信时,可能会发生高可用接管的严重故障问题,导致多组keepalived服务地址冲突。
- 问题原因:
keepalived 高可用功能是通过VRRP 协议实现的,VRRP 协议默认通过IP 多播的形式实现高可用对之间的通信,如果同一个局域网内存在多组keepalived服务器对,就会造成IP多播地址冲突问题,导致接管错乱,不同组的keepalived 都会使用默认的224.0.0.18 作为多播地址。
- 解决方案:
在同组Keepalived服务器指定独立的多播地址,配置如下:
global_defs{
router_id LVS_19
vrrp_mcast_group4 224.0.0.19 #这个就是指定多播地址的配置
}
修改后重启服务即可。
4、systemctl无法停止keepalived进程
- 问题描述:
测试服务启停时,使用systemctl stop keepalvied发现进程无法停止。
- 问题原因:
启动脚本配置了KillMode=process,表示当停止keepalived时只会停掉主进程,子进程是不会被kill的,而默认的killmode为control-group,意思为会kill掉所有进程。
- 解决方案:
修改后使用systemctl daemon-reload重载服务$ vim /usr/lib/systemd/system/keepalived.service # 注释下面这行内容 KillMode=process
5、健康检查脚本无法执行
- 问题描述
Keepalived配置了健康检查脚本,但在服务宕掉后无法自动执行切换。
- 问题原因:
一般出现这种情况原因有如下几种
- 脚本路径错误,无法找到脚本
- 脚本权限异常,没有权限执行
- selinux权限导致
- 解决方案:
首先仔细检查脚本是否有误,然后手动执行脚本查看执行结果,然后检查脚本是否有可执行权限,最后检查selinux是否关闭。
6、Keepalived启动报错
6.1、案例一
- 问题描述:
使用systemctl start keepalived启动服务时,报错信息提示:
May 7 17:12:51 mysql01 Keepalived[5467]: Configuration file ‘/etc/keepalived/keepalived.conf’ is not a regular non-executable file
- 问题原因:
/etc/keepalived/keepalived.conf文件权限不是664。
使用systemctl start keepalived启动服务时,报错信息提示:
May 07 17:41:14 mysql01 Keepalived_vrrp[9448]: (VI_1): Cannot find an IP address to use for interface enp0s9
- 问题原因:
/etc/keepalived/keepalived.conf配置文件中interface模块,网卡上没有IP地址,
- 解决方案:
可以通过添加临时IP来解决,或者在keepalived版本2.0.5之后添加dynamic_interfaces
ifconfig eth1 172.16.20.101/16 up
6.3、案例三
- 问题描述
使用systemctl start keepalived启动服务时,报错信息提示:
May 7 11:07:15 mysql01 Keepalived[8755]: daemon is already running
May 7 11:07:15 mysql01 systemd: PID file /usr/local/var/run/keepalived.pid not readable (yet?) after start.
May 7 11:08:45 mysql01 systemd: keepalived.service start operation timed out. Terminating.
May 7 11:08:45 mysql01 systemd: Failed to start LVS and VRRP High Availability Monitor.
May 7 11:08:45 mysql01 systemd: Unit keepalived.service entered failed state.
May 7 11:08:45 mysql01 systemd: keepalived.service failed.
- 问题原因:
NetworkManager自动管理网络,keepalived使用虚拟IP无法绑定到指定接口。
- 解决方案:
systemctl stop NetworkManager systemctl disable NetworkManager
