#keepalived 主和备的配置文件基本相同;只需要修改:
state BACKUP #修改为备份设备
priority 100 #优先级要比主低
#其它地方根据实际情况也可以做调整;
=======================================================
#新建刚才配置keepalived 时所定义的脚本,用于在MySQL 死亡后结束 keepalived
#!/bin/bash
#mysql_chke.sh
#
a=`ps -C mysqld --no-header | wc -l`
if [ $a -eq 0 ];then
sleep 3
/sbin/service keepalived stop
echo "`date +%c` stop keepalived" >> /opt/log/stop_keepalived.log
fi
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
global #全局系统配置
log 127.0.0.1 local0 info #定义日志级别[err warning info debug]
#local0 是日志设备,必须为24种标准syslog设备之一;
maxconn 4096 #最大链接数
uid 0 #运行该程序的用户,此处没有其它用户了,就用的 root
gid 0
daemon #以后台形式运行
nbproc 1 #进程数量
defaults #默认配置
mode tcp #所处理的类别 http | tcp | health
option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
retries 3 #三次连接失败则服务器不用
timeout connect 5000 #连接超时
timeout client 50000 #客户端超时
timeout server 50000 #服务器超时
timeout check 2000 #心跳检测超时
listen proxy
bind 192.168.5.111:3306 #监听地址
mode tcp
balance roundrobin #定义负载方式,此处为轮询
log 127.0.0.1 local0 info #定义日志类型
#rise 3三次正确表示服务器可用,fall 3表示3次失败表示服务器不可用
server db1 192.168.5.11:3306 check inter 1200 rise 2 fall 3 weight 1
server db2 192.168.5.12:3306 check inter 1200 rise 2 fall 3 weight 1
#服务器状态监控配置,可以通过定义的地址查看集群状态;
listen haproxy_stats
log 127.0.0.1 local0 info
mode http
bind 192.168.5.111:8888
option httplog
stats uri /status
stats realm Haproxy Manager
stats auth admin:admin #设置监控地址的帐号与密码
#在keepalived 主配文件中添加刚才在其末端说明的外部定义脚本
#启动服务
/opt/haproxy/sbin/haproxy -f /opt/haproxy/conf/haproxy.cfg
#说明事项,keepalived 的服务主备设备上都可以同时运行,实则只有获得VIP的服务器才有效;
#但是 haproxy 启动的时候需要监听 VIP 地址,所以第一次备用设备是手动起不了服务的;
#需要在 keepalived 的notify_master配置项中设定脚本,当此设备获得VIP地址后才启动 haproxy;
#有个问题在这里,我们只设定了当keepalived 停止服务时,才结束 haproxy ,没有设定移交VIP时是否结束;
#其实这也不用担心,因为主机上已经没有VIP地址了,即便是监听也无效果,并无干扰;