mysqlrouter+keepavlie 高可用
需要在两台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