搭建mysql负载均衡及高可用环境(二)

2014-11-24 10:40:12 · 作者: · 浏览: 1
#脚本循环运行间隔
12
weight 2 #脚本的结果导致优先级变更,成功+2
13
}
14
#VRRP虚拟路由冗余协议配置
15
vrrp_instance VI_1 { #VI_1 是自定义的名称;
16
state MASTER #表明这是一台主设备,备用设备为 BACKUP
17
interface eth0 #指定VIP需要绑定的物理网卡
18
virtual_router_id 11 #VRID虚拟路由标识,也叫做分组名称,该组内的设备需要相同
19
priority 150 #定义这台设备的优先级 1-254;
20
advert_int 1 #生存检测时的组播信息发送间隔,组内一致
21
22
authentication { #设置验证信息,组内一致
23
auth_type PASS #有PASS 和 AH 两种,常用 PASS
24
auth_pass 111 #密码
25
}
26
27
virtual_ipaddress { #指定VIP地址,组内一致,可以设置多个IP
28
192.168.5.111/24
29
}
30
31
track_script { #使用在这个域中使用预先定义的脚本
32
mysql_chk
33
}
34
35
#此部分所载入的脚本为外部脚本,不需要预先定义;
36
#也可不添加,此实验在后半部分安装haproxy后,才有添加;
37
notify_master /opt/scripts/start_haproxy.sh #表示当切换到master状态时,要执行的脚本
38
notify_fault /opt/scripts/stop_keepalived.sh #故障时执行的脚本
39
notify_stop /opt/scripts/stop_haproxy.sh #keepalived停止运行前运行的脚本
40
}
#keepalived 主和备的配置文件基本相同;只需要修改:
state BACKUP #修改为备份设备
priority 100 #优先级要比主低
#其它地方根据实际情况也可以做调整;
=======================================================
#新建刚才配置keepalived 时所定义的脚本,用于在mysql 死亡后结束 keepalived
01
#!/bin/bash
02
#mysql_chke.sh
03
#
04
a=`ps -C mysqld --no-header | wc -l`
05
if [ $a -eq 0 ];then
06
sleep 3
07
/sbin/service keepalived stop
08
echo "`date +%c` stop keepalived" >> /opt/log/stop_keepalived.log
09
fi
10
fi
service keepalived start #在两台设备上面启动
#开始测试
ip address
#查看主设备 11 上是否有生成 vip 地址;
#注意事项,keepalived 生成的 VIP 对 ifconfig 命令不可见,所以需要使用 ip 命令;
mysql -udiaosi -p123456 -h 192.168.5.111 -e "select * from test.mywait;"
#正常情况是只能查询到 MASTER 的数据库的数据;
1、尝试将 MASTER 的keepalived 停掉
2、down 掉 MASTER 的网卡
3、让mysql 启动不了,比如先注释掉mysql这个用户,后killall mysqld ,
查看mysql_chke 脚本是否会把 keepalived 结束掉;
#这个时后 vip 地址会移动到 Slave 主机上; HA 搭建的是否成功体现于查询所获取值的变化;
#当将 MASTER 恢复后,VIP 又会回到 11 的设备上;
#至此 keepalived 为 mysql 做HA 模式成功;
========================================================================
[install_haproxy]
#用于将请求分别轮询到 192.168.5.11 192.168.5.12
tar xf /opt/soft/haproxy-1.4.20.tar.gz -C /opt/soft/
cd /opt/soft/haproxy-1.4.20/
make TARGET=linux26 PREFIX=/opt/haproxy install
mkdir /opt/haproxy/conf
mkdir /opt/haproxy/logs
touch /opt/haproxy/conf/haproxy.cfg
========================================================================
[mysql_config]
#修改 mysql 监听,使 mysql 避开 192.168.5.111,因为 haproxy 也要监听 111:3306 这个IP地址和端口;
vim /etc/my.cnf
#server1
[mysqld]
bind-address=192.168.5.11 #mysql 的监听,添加这一句就好了
#server2
[mysqld]
bind-address=192.168.5.12
#重启mysql
service mysqld restart
#到现在已经不能通过 192.168.5.111 访问数据库了,接下来配置 haproxy
========================================================================
[config_haproxy]
#主备服务器的主配文件一致;
vim /opt/haproxy/conf/haproxy.cfg
01
global #全局 系统配置
02