| 
                         之前的文章介绍了如何配置MySQL双主互备,见http://www.linuxidc.com/Linux/2013-05/83784.htm    这里介绍如何配合前者实现Keepalived双机热备    系统环境:CentOS6.3 x64    MySQL版本:mysql-5.6.10    Keepalived版本:keepalived-1.2.7        MySQL-VIP:192.168.7.253    MySQL-master1:192.168.7.201    MySQL-master2:192.168.7.249        1.在MySQL-master1:192.168.7.201服务器上keepalived安装及配置        编译安装,实际以本机kernel版本为准        # wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz    # tar zxvf keepalived-1.2.7.tar.gz    # cd keepalived-1.2.7    # ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-    279.el6.x86_64    # make && make install        新建一个配置文件,默认keepalived启动会去/etc/keepalived目录下寻找配置文件        # mkdir /etc/keepalived        # vi /etc/keepalived/keepalived.conf    ------------------    global_defs {          notification_email {          lzyangel@126.com          }          notification_email_from lzyangel@126.com          smtp_server stmp.126.com          smtp_connect_timeout 30          router_id MySQL-ha          }        vrrp_instance VI_1{          # 两台配置此处均是BACKUP          state BACKUP          # 注意网卡接口          interface eth0          virtual_router_id 51          # 优先级,另一台改为90          priority 100          advert_int 1           # 不主动抢占资源          nopreempt           authentication {          auth_type PASS          auth_pass 1111          }          virtual_ipaddress {          192.168.7.253          }          }                virtual_server 192.168.7.253 3306 {          # 每个2秒检查一次real_server状态          delay_loop 2          # LVS算法          lb_algo wrr           # LVS模式           lb_kind DR          # 会话保持时间           persistence_timeout 60          protocol TCP          real_server 192.168.7.201 3306 {          weight 3          # 检测到服务down后执行的脚本          notify_down /etc/rc.d/keepalived.sh          TCP_CHECK {          # 连接超时时间          connect_timeout 10          # 重连次数          nb_get_retry 3             # 重连间隔时间           delay_before_retry 3          # 健康检查端口          connect_port 3306            }          }    ----------------------            编写检测服务down后所要执行的脚本        # vi /etc/rc.d/keepalived.sh        -------------    #!/bin/sh    pkill keepalived    -------------        # chmod +x /etc/rc.d/keepalived.sh        注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态。    当发现real_server服务故障时,便触发此脚本.    我们可以看到,脚本就一个命令:    通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移.    另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP.        启动keepalived    # /usr/local/keepalived/sbin/keepalived -D    查看连接状态    # ps -aux | grep keepalived    返回:    ---------------        root  25348 0.0 0.0 36792 720 ?    Ss 07:15 0:00        /usr/local/keepalived/sbin/keepalived -D    root  25349 0.5 0.1 40968 2016 ?    S  07:15 0:00        /usr/local/keepalived/sbin/keepalived -D    root  25350 0.0 0.1 40968 1340 ?    S  07:15 0:00        /usr/local/keepalived/sbin/keepalived -D        --------------------    测试        找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的        停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本,去kill掉keepalived进程    # service mysqld stop    # ps -aux | grep keepalived    无返回结果  
2.在MySQL-master2:192.168.7.249服务器上keepalived安装及配置  
 
编译安装,实际以本机kernel版本为准  
 
# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz  
# tar zxvf keepalived-1.2.7.tar.gz  
# cd keepalived-1.2.7  
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-  
279.el6.x86_64  
# make && make install  
 
新建一个配置文件,默认keepalived启动会去/etc/keepalived目录下寻找配置文件  
 
# mkdir /etc/keepalived  
 
# vi /etc/keepalived/keepalived.conf  
------------------  
global_defs {  
 
notification_email {  
 
lzyangel@126.com  
 
}  
 
notification_email_from lzyangel@126.com  
 
smtp_server stmp.126.com  
 
smtp_connect_timeout 30  
 
router_id MySQL-ha  
 
}  
 
vrrp_instance VI_1{  
 
# 两台配置此处均是BACKUP  
 
state BACKUP  
 
# 注意网卡接口  
 
interface eth0  
 
virtual_router_id 51  
 
# 优先级,另一台改为90  
 
priority 90  
 
advert_int 1  
 
# 不主动抢占资源  
 
nopreempt  
 
authentication {  
 
auth_type PASS  
 
auth_pass 1111  
 
}  
 
virtual_ipaddress {  
 
192.168.7.253  
 
}  
 
}  
 
 
 
virtual_server 192.168.7.253 3306 {  
 
# 每个2秒检查一次real_server状态  
 
delay_loop 2  
 
# LVS算法  
 
lb_algo wrr  
 
# LVS模式  
 
lb_kind DR  
 
# 会话保持时间  
 
persistence_timeout 60  
 
protocol TCP  
 
real_server 192.168.7.249 3306 {  
 
weight 3  
 
# 检测到服务down后执行的脚本  
 
notify_down /etc/rc.d/keepalived.sh  
 
TCP_CHECK {  
 
# 连接超时时间  
 
connect_timeout 10  
 
# 重连次数  
 
nb_get_retry 3  
 
# 重连间隔时间  
 
delay_before_retry 3  
 
# 健康检查端口  
 
connect_port 3306  
 
}  
 
}  
----------------------  
编写检测服务down后所要执行的脚本  
 
# vi /etc/rc.d/keepalived.sh  
 
-------------  
#!/bin/sh  
pkill keepalived  
-------------  
 
# chmod +x /etc/rc.d/keepalived.sh  
 
启动keepalived  
# /usr/local/keepalived/sbin/keepalived -D  
 
# ps -aux | grep keepalive  
 
至此配置完成,网站后台只需要配置MySQL-VIP:192.168.7.253虚拟地址即可  
这里实际连接的master数据库,以哪台master先开mysql服务为准。  
 
当master1:192.168.7.201 mysql端口挡掉或者服务器异常关闭,keepalived会自动跳转到master2:192.168.7.249.  
因为两台数据库的数据时同步的,用户访问的是MySQL-VIP:192.168.7.253虚拟地址,所以网站数据连接会无缝透明转接到master2服务器,实现双机热备+数据同步功能。保证网站数据库的实时可用性。  
 
注:当某一台master服务器挂掉恢复后,需同时打开MYSQL服务和keepalived服务,保证另一台服务器如果挂掉会无缝转接。  
所以建议mysql与keeplived设置服务开机启动。  
# chkconfig mysqld on  
# vi /etc/rc.local  
添加:  
---------------  
/usr/local/keepalived/sbin/keepalived -D                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |