本文接上文介绍atlas的安装配置,以及借助keepalive软件实现altas的ha,避免由于atlas故障,导致数据库服务中断的情况出现:
一:环境介绍
Atlas 主:192.168.1.12/24
Atlas 从:192.168.1.81/24
Atlas vip: 192.168.1.230/24
Atlas write:
master:192.168.1.225/24
Slave1:192.168.1.226/24
Slave2:192.168.1.227/24
管理节点:192.168.1.12/24
Mha vip: 192.168.1.231/24
Atlas read:
Slave2:192.168.1.227/24
Slave3:192.168.1.228/24
二:安装atlas,12服务器及81服务器执行同样的操作
# yum -y install openssl openssl-devel # wget https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1.el6.x86_64.rpm # rpm -ivh Atlas-2.1.el6.x86_64.rpm # cd /usr/local/mysql-proxy/conf/ # /usr/local/mysql-proxy/bin/encrypt 123456 /iZxz+0GRoA=
# grep -v '^#' /usr/local/mysql-proxy/conf/test.cnf |grep -v '^$'
[mysql-proxy] admin-username = admin admin-password = admin proxy-backend-addresses = 192.168.1.231:3306 proxy-read-only-backend-addresses = 192.168.1.227:3306,192.168.1.228:3306 pwds = root:/iZxz+0GRoA= daemon = true keepalive = true event-threads = 8 log-level = message log-path = /usr/local/mysql-proxy/log proxy-address = 0.0.0.0:1234 admin-address = 0.0.0.0:2345
# /usr/local/mysql-proxy/bin/mysql-proxyd test start
OK: MySQL-Proxy of test is started
# netstat -ntpl |grep mysql-proxy
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 29643/mysql-proxy
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 29643/mysql-proxy
# tail -f /usr/local/mysql-proxy/log/test.log
2014-10-29 11:12:11: (message) mysql-proxy 0.8.2 started - instance: test 2014-10-29 11:12:11: (message) proxy listening on port 0.0.0.0:1234 2014-10-29 11:12:11: (message) added read/write backend: 192.168.1.231:3306 2014-10-29 11:12:11: (message) added read-only backend: 192.168.1.227:3306 2014-10-29 11:12:11: (message) chassis-unix-daemon.c:138: [angel] we try to keep PID=29643 alive2014-10-29 11:12:11: (message) added read-only backend: 192.168.1.228:3306 2014-10-29 11:12:11: (message) chassis-event-thread.c:235: starting 8 threads
# /usr/local/mysql/bin/mysql -h 192.168.1.12 -P 1234 -u root -p123456
# /usr/local/mysql/bin/mysql -h 192.168.1.12 -P 2345 -uadmin -padmin
三:安装keepalived
此处以12服务器为例,81服务器执行同样的操作
# cd /usr/local/src/ # wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz # tar -zxvpf keepalived-1.2.13.tar.gz # cd keepalived-1.2.13 # ./configure --prefix=/usr/local/keepalived && make && make install
四:配置12服务器keepalive
1:keepalive主配置文件
# cat /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Atlas { script "/usr/local/scripts/monitor_atlas.sh" interval 2 weight 2 } vrrp_instance VI_1{ state MASTER interface eth0 virtual_router_id 51 mcast_src_ip 192.168.1.12 priority 100 advert_int 1 authentication { auth_type PASS auth_pass password_123 } track_script { Monitor_Atlas } virtual_ipaddress { 192.168.1.230 } }
2:监控atlas脚本
# cat /usr/local/scripts/monitor_atlas.sh
#!/bin/bash if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then /usr/local/mysql-proxy/bin/mysql-proxyd test start sleep 5 if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then killall -9 keepalived service network restart fi fi
# chmod +x /usr/local/scripts/monitor_atlas.sh
五:配置81服务器keepalive
1:keepalive主配置文件
# cat /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Atlas { script "/usr/local/scripts/monitor_atlas.sh" interval 2 weight 2 } vrrp_instance VI_1{ state BACKUP interface eth0 virtual_router_id 51 mcast_src_ip 192.168.1.81 priority 90 advert_int 1 authentication { auth_type PASS auth_pass password_123 } track_script { Monitor_Atlas } virtual_ipaddress { 192.168.1.230 } }
2:监控atlas脚本
# cat /usr/local/scripts/monitor_atlas.sh
#!/bin/bash if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then /usr/local/mysql-proxy/bin/mysql-proxyd test start sleep 5 if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then killall -9 keepalived service network restart fi fi
# chmod +x /usr/local/scripts/monitor_atlas.sh
六:启动keepalive服务及测试
1:12服务器
# /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf
# tail -f /var/log/messages
2: 81服务器
# /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf
# tail -f /var/log/messages
3:连接atlas测试
# /usr/local/mysql/bin/mysql -h 192.168.1.230 -P 1234 -uroot -p123456
mysql> select user,host,password from mysql.user;
# /usr/local/mysql/bin/mysql -h 192.168.1.230 -P 2345 -uadmin -padmin
mysql> SELECT * FROM backends;
4:故障测试
12服务器上关闭keepalive服务
81服务器的keepalive会自动接管vip服务
# tail -f /var/log/messages