需要在两台MySQL Router都安装
yum -y install openssl-devel
wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
tar xf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
设置keepalived开机自启动
chkconfig keepalived on
配置keepalived的配置文件
cat << EOF > /etc/keepalived/keepalived.conf
global_defs {
notification_email {
sysadmin@firewall.loc
}
notification_email_from localhost@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id router_master
}
vrrp_script check_run {
script "/etc/keepalived/check_router.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 66
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_run
}
virtual_ipaddress {
10.64.1.30
}
}
EOF
另外一台keepalived上操作
cat << EOF > /etc/keepalived/keepalived.conf
global_defs {
notification_email {
sysadmin@firewall.loc
}
notification_email_from localhost@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id router_backup
}
vrrp_script check_run {
script "/etc/keepalived/check_router.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 66
priority 90
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_run
}
virtual_ipaddress {
10.64.1.30
}
}
EOF
两台keepalived都需要部署check_router.sh脚本
/etc/keepalived/check_router.sh 内容如下
#!/bin/bash
mysqlRouterPort=6446
routerRunningCount=$(ps -ef|grep mysqlrouter|grep -v grep |wc -l)
routerNetstatCount=$(netstat -tnlp|grep -v grep |grep mysqlrouter|grep -w ${mysqlRouterPort}|wc -l)
time=$(date "+%Y-%m-%d %H:%M:%S")
if [[ ${routerRunningCount} = 0 && ${routerNetstatCount} = 0 ]]; then
echo "${time} : routerRunningCount=${routerRunningCount} , routerNetstatCount=${routerNetstatCount} ,mysqlrouter is not running..." >> /var/log/check_mysqlrouter.log
/etc/init.d/keepalived stop
exit 1 # 返回1说明脚本非正常执行, mysqlrouter 不在运行中
else
exit 0 # 返回0说明脚本正常执行, mysqlrouter 正在运行中
fi
保存脚本文件后更改该文件权限
chmod 755 /etc/keepalived/check_router.sh