写这篇文章的目的是,
如果遇到keepalived访问不了的情况下,不要乱猜,直接看日志信息,在日志信息里面会有相应的提示,然后根据提示去解决问题。
希望对你们有帮助!
在不知道如何查看启动日志前,认为:只要用ifconfig,在网卡中存在这个虚拟ip即可,但是很失望的没有出现,但是用ip -a能看到具体网卡信息,以及能ping ip能通
第一次接触到keepalived,遇到这种无法访问的情况,查阅了网上很多文章,都没有相对应的解决方法,最后只能去查看日志,然后根据日志提示一点点的修改,最后成功解决了。
问题描述:
近日,使用keepalived + nginx 搭建主从模式,keepalived启动成功,但是使用虚拟IP访问确访问不了。
不得已需要查看keepalived的启动日志,根据启动日志的错误信息去解决问题。
启动命令 ~ 针对Centos7以下的版本,centos的命令发生改变
1 2 3 4 | // 启动 service keepalived start // 停止 service keepalived stop |
查看日志命令
1 | tail -f /var/log/messages |
keepalived配置信息
主节点:192.168.50.131
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.50.131 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 41 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.50.140 } } |
从节点:192.168.50.132
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.50.131 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state BACKUP # 备份服务器上将 MASTER 改为 BACKUP interface eth0 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.50.140 } } |
在启动日志中一直在刷
1 | Keepalived_vrrp: ip address associated with VRID not present in received packet |

解决方法:
在同一网段内非同一套keepalive集群中的virtual_router_id 值不能相同,如果相同会在messages中收到VRRP错误包 ,所以需要更改 virual_router_id。
当然,为了解决这个问题,修改了虚拟IP的地址,然后和virtual_router_id的值。
效果演示
1、访问从节点:

2、使用虚拟IP访问

虚拟机表现
1 2 | ip a ping 虚拟IP |

写这篇文章的目的是,
如果遇到keepalived访问不了的情况下,不要乱猜,直接看日志信息,在日志信息里面会有相应的提示,然后根据提示去解决问题。
希望对你们有帮助!
在不知道如何查看启动日志前,认为:只要用ifconfig,在网卡中存在这个虚拟ip即可,但是很失望的没有出现,但是用ip -a能看到具体网卡信息,以及能ping ip能通
第一次接触到keepalived,遇到这种无法访问的情况,查阅了网上很多文章,都没有相对应的解决方法,最后只能去查看日志,然后根据日志提示一点点的修改,最后成功解决了。