keepalived+MySQL双主搭建
server1:MySQL5.7.14+keepalived1.+172.16.16.34
server2:MySQL5.7.14+keepalived1.+172.16.16.35
VIP:172.16.16.20
我们两台机器是搭建的MySQL双主,我们平时只会通过VIP对MySQL进行读写,我们要实现的是,当VIP所在的主机的MySQLDOWN掉以后,VIP能够切换到另外一台机器上并且继续提供服务。
yum install -y keepalived
[root@localhost maxiangqian]# rpm -ql keepalived
[root@localhost maxiangqian]# vi /etc/keepalived/keepalived.conf
vrrp_instance VI_20 {
state BACKUP
nopreempt
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
172.16.16.20
}
}
/etc/init.d/keepalived start
[root@localhost maxiangqian]# ip addr |grep 172.16
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc mq state UP qlen
inet 172.16.16.34/ brd 172.16.16.255 scope global eth0
inet 172.16.16.20/ scope global eth0
/etc/init.d/keepalived stop
vrrp_script checkmysql {
script "/etc/keepalived/checkmysql.sh"
interval #监控脚本,每十秒运行一次
}
vrrp_instance VI_20 {
state BACKUP #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
nopreempt #非抢占模式
interface eth0
virtual_router_id
priority #权重,同一个vrrp_instance的MASTER优先级必须比BACKUP高。我们使用非抢占模式,设置相同即可
advert_int #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒
authentication {
auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS
auth_pass
}
track_script { #执行定义的监控脚本
checkmysql
}
virtual_ipaddress {
172.16.16.20/
}
}
#!/bin/sh
#isok=$(sed -n '2p' /etc/keepalived/result.txt)
isok=$(/usr/local/mysql/bin/mysql -uroot -p123456 -e 'select 1' |sed -n '2p')
function error_query(){
service keepalived stop
echo "172.16.16.34 mysql down, keepalived 切换" | mail -s "34MySQL+keepalived通知" ma.xiangqian@sf-express.com
}
echo "$isok"
if [ "$isok" != "1" ]
then
#echo 'diaoyong error'
error_query
fi
现在我们执行以下语句,从新load以下keepalived的配置文件:
/etc/init.d/keepalived reload
server1和server2都要执行重新load一下新的配置文件,下面我们测试一下当server1 MySQL DOWN掉的话会发生什么:
server1:shutdown MySQL
server1和server2:tail -f /var/log/messages
server1信息:
May :: localhost Keepalived_healthcheckers[]: TCP connection to [172.16.16.34]: failed !!!
May :: localhost Keepalived_healthcheckers[]: Removing service [172.16.16.34]: from VS [172.16.16.20]:
May :: localhost Keepalived_healthcheckers[]: IPVS : Virtual service [172.16.16.20]: illegal timeout.
May :: localhost Keepalived_healthcheckers[]: Executing [/etc/keepalived/shutdown.sh #检测到服务down后执行的脚本] for service [172.16.16.34]: in VS [172.16.16.20]:
May :: localhost Keepalived_healthcheckers[]: Lost quorum -= > for VS [172.16.16.20]:
May :: localhost Keepalived_vrrp[]: VRRP_Script(checkmysql) failed
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) Entering FAULT STATE
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) removing protocol VIPs.
May :: localhost Keepalived_vrrp[]: VRRP_Instance(VI_20) Now in FAULT state
May :: localhost Keepalived_healthcheckers[]: Netlink reflector reports IP 172.16.16.20 removed
server2信息:
May :: mxqmongodb2 Keepalived_healthcheckers[]: IPVS : Virtual service [172.16.16.20]: illegal timeout.
May :: mxqmongodb2 Keepalived_healthcheckers[]: Using LinkWatch kernel netlink reflector...
May :: mxqmongodb2 Keepalived_healthcheckers[]: Activating healthchecker for service [172.16.16.35]:
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Script(checkmysql) succeeded
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Transition to MASTER STATE
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Entering MASTER STATE
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) setting protocol VIPs.
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Sending gratuitous ARPs on eth0 for 172.16.16.20
May :: mxqmongodb2 Keepalived_healthcheckers[]: Netlink reflector reports IP 172.16.16.20 added
May :: mxqmongodb2 Keepalived_vrrp[]: VRRP_Instance(VI_20) Sending gratuitous ARPs on eth0 for 172.16.16.20
我们可以看到虚IP链接已经切换了,我们从客户端两个时间点执行MySQL的操作也可以很明显看到切换:
mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
| |
+-------------+
row in set mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
| |
+-------------+
row in set
keepalived+MySQL双主搭建的更多相关文章
- MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单 ...
- MySQL 高可用性—keepalived+mysql双主
MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释) - 我的博客 - CSDN博客https://blog.csdn.net/qq_36276335/articl ...
- 基于 MySQL 5.6 keepalived的双主搭建
环境介绍: 说明 IP 节点1 192.168.56.56 节点2 192.168.56.57 w_ip 192.168.56.6 安装keepalived tar -zxvf keepalived- ...
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- nginx+mysql双主搭建
说明:mysql双主架构经过测试在生产环境中使用没有问题,但是还是建议使用读写分离, Mysql主主同步环境部署: centos 7.4 三台云主机:mysql1 :10.1.1.142 mysql2 ...
- keepalived+mysql双主热备
这里使用keepalived实现mysql的双主热备高可用 实验环境: 主机名 IP 系统版本 软件版本 master 192.168.199.6/vip:192.168.199.111 Rhel7. ...
- Keepalived + Mysql 双主
VIP 192.168.1.41 Master 192.168.1.42 Slave 192.168.1.43 .配置 yum -y install mysql-server chkconfig -- ...
- Keepalived+MySQL双主架构
l 架构准备 Node1 192.168.15.3 Node2 192.168.15.4 VIP 192.168.15.254 l 软件 MySQL 5.6 Keepalive yum insta ...
随机推荐
- nginx, flask, wsgi
原来自己还没搞懂这些. 首先post一个观点: nginx应该是没解析任何东西,就判断是不是http请求,然后转发?或者判断是不是tcp请求,然后转发. 所以给了python后台就可以用wsgi解包. ...
- 查看SqlServer某张表的物理空间占用情况
以下语句可以查看表的物理空间使用情况 包括 [ROWS] 内容的行数.. [reserved] 保留的磁盘大小.. [data] 数据占用的磁盘大小.. [index_size] 索引占用的磁盘大小. ...
- 微众api文档,身份证识别,ocr等人脸识别等
https://cloud.tencent.com/document/product/655/14369 https://cloud.tencent.com/document/product/655/ ...
- Log4J 配置文件模板及代码说明
相对而言,这个日志系统的配置就没那么随意了,而且有些功能用起来也不是那么爽,譬如动态读取配置文件.不过鉴于使用这个日志的系统还是很多,所以也写一个demo贴出来,风格跟log4j2一样,配置的说明全在 ...
- 单元测试工具 - karma
在离开上一家公司之前,team leader 在我离开前留给了我最后几个关键字:karma,断言库,JASMINE,QUNIT,MOCHA. 可一直拖拖沓沓的,没有去了解.直到今天,才终于抽出心情和时 ...
- 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据.无限智能"为主题的2018腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷 ...
- Python对列表中字典元素排序
问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]} ...
- js验证护照号码是否合规
需求:最近要做实名验证的功能,但是验证我们要验证严谨一点,参考了网上关于验证护照号码的代码,总结一下. 代码: //验证护照号码 function checkPassport(code){ var t ...
- 1.http请求编程-->基础原理
一.技术分析 打开网页,不管我们请求的是静态资源还是动态资源,IIS都会根据ISAPI(微软和Process软件公司联合提出的Web服务器上的API标准)这一标准,将请求的文件根据文件后缀名的不同,转 ...
- hdu 3466 Proud Merchants 01背包变形
Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) ...