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 ...
随机推荐
- SD341X-SD343H管网法兰式伸缩蝶阀厂家,SD341X-SD343H管网法兰式伸缩蝶阀价格 - 专题栏目 - 无极资讯网
无极资讯网 首页 最新资讯 最新图集 最新标签 搜索 SD341X-SD343H管网法兰式伸缩蝶阀 无极资讯网精心为您挑选了(SD341X-SD343H管网法兰式伸缩蝶阀)信息,其中包含了(SD3 ...
- Java - 二分法查找(尚学堂第七章数组)
import java.util.Arrays; public class TestBinarySearch { public static void main(String[] args) { in ...
- 递归demo
递归算法就是直接或间接调用自己的算法 public static void main(String[] args) { int m = sum(9); System.out.println(m); } ...
- C#反射动态调用dll中的方法,并返回结果(转)
反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果:当然也可以给该方法传递参数 namespace assembly_name { public class assem ...
- Jmeter性能测试之添加思考时间
利用定时器添加用户思考时间 JMeter如何插入思考时间,在一个真实的性能测试场景中,是需要加入思考时间,来模拟真实用户行为.本文就来介绍,如何在三个请求之间添加思考时间. 1. 在Test Plan ...
- java 实现一套流程管理、流转的思路(伪工作流)
在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提供我的设计思路,知道了思路,实现起来就简单很多了. 首先我 ...
- C 标准库 - string.h之memchr使用
memchr Locate character in block of memory,Searches within the first num bytes of the block of memor ...
- spring自定义标签之 规范定义XSD
引言: spring的配置文件中,一切的标签都是spring定义好的.<bean/>等等,有了定义的规范,才能让用户填写的正常可用.想写自定义标签,但首先需要了解XML Schema De ...
- 数据结构与算法(C++)大纲
1.栈 栈的核心是LIFO(Last In First Out),即后进先出 出栈和入栈只会对栈顶进行操作,栈底永远为0 1.1概念 栈底(bottom):栈结构的首部 栈顶(top):栈结构的尾部 ...
- NPM 与前端包管理
我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ...