本文接上文介绍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服务器执行同样的操作
1
2
3
4
5
6
7
|
# 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 '^$'
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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
1
2
3
4
5
6
|
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服务器执行同样的操作
1
2
3
4
5
|
# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
! 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
1
2
3
4
5
6
7
8
9
|
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
! 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
1
2
3
4
5
6
7
8
9
|
#!/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
本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/1569276如需转载请自行联系原作者
ylw6006