双机主备: LVS+keepalived+MYSQL 高可用方案
方案:
两台机器,都安装MYSQL和keepalived,一台机器做主keepalived,一台备keepalived,mysql为主主同步,两台机器的mysql连接同一个虚拟IP(配置文件在
最下方)
说明:
正常情况下虚拟VIP绑定到主机上,当主机MYSQL挂了之后,keepalived检查到mysql挂了则执行脚本check_mysql.sh,脚本执行会关闭主机keepalived进程,
此时VIP自动漂移到备机上
问题:
在Red Hat Enterprise Linux Server release 6.7 (Santiago)版本上如下配置,一切正常,主备机器的都能telnet通VIP地址 +3306端口,而且mysql挂了之
后,该服务器的keepalived自动检查mysql状态,然后执行脚本check_mysql.sh
但是在系统Red Hat Enterprise Linux Server release 7.2版本下,其他配置都一样,备机就不能 telnet通VIP地址 +3306端口,即不能通过虚拟IP连接到
mysql服务,但是却能ping通VIP地址;然后我用另一台同一网段的没有安装keepalived的服务器 telnet通VIP地址 +3306端口,也是能通。
解决:
有人通过注释掉备机的virtual_server中的两个参数后可以telnet通VIP地址 +3306端口
#lb_algo wrr
#lb_kind DR
验证:
我注释两个参数后,备机的确能 telnet通VIP地址 +3306端口,但是又出现另外的问题,即当mysql挂了之后,该服务器的keepalived自动检查mysql状态,发
现mysql挂了之后正常情况下应该执行脚本check_mysql.sh,但是实际上却不执行这个脚本。查看系统日志如下
系统日志如下:
Feb 9 19:49:02 SZC-L0040683 Keepalived_healthcheckers[59739]: TCP con