keepalived+双主架构
简介
keepalived是基于VRRP协议的,全称 Virtual Redundent Routing Protocal 虚拟路由协议,为解决静态路由单点故障引起的网络失效问题设计的一套主备协议
两台互为主备的MySQL服务器运行keepalived,master会向backup节点发送广播信号,当backup节点接收不到master发送的VRRP,会认为master宕机,这时会根据VRRP优先级
选举一个backup来充当master,这个master就会持有vip(对外应用连接IP地址),从而保证线上现有业务的正常运行,高可用完美体现出来
VRRP优先级用0-255来表示,数字越小优先级越低,0代表master放弃持有vip,255表示master持有最高优先级&vip
VRRP中还有一个vrid(虚拟路由标识),同组机器内的vrid必须一致
keepalived服务启动之后有3个进程,watch dog,vrrp,Health-check
vrrp 切换服务 health-check 检查服务器 watch-dog 监控check,vrrp进程
集群搭建思路:
1)2台MySQL服务器互为主从,都可读写 其实就是一台服务器A负责数据的写入,另一台服务器B作为备用
2)使用yum安装keepalived软件包
3)整理好keepalived配置文件,理清keepalived 3种状态,+一个MySQL监控脚本,以便检测宕机,从而顺利切换
4)2台服务器配置keepalived参数种,state都要选择backup + nopreempt这种非抢占模式,避免出现脑裂
实验部署:
A: 192.168.139.144
B: 192.168.139.145
VIP(虚拟IP): 192.168.139.160 ====> 可以通过该IP访问集群的主mysql

注意事项:
1)防火墙必须关闭或者开发数据库端口
2)2台服务器的MySQL配置中server-id 不能一样,否则会报1593 主从同步错误
前提:2台服务器搭建MySQL,版本 5.7.22 ;按照步骤略
步骤一,搭建主主MySQL
1)创建主从同步账号(A,B都执行,且命令相同)
mysql>create user 'bak'@'192.168.139.%' identified by '123456';
mysql>grant replication slave on *.* to 'bak'@'192.168.139.%';
mysql>flush privileges;
2)备库配置同步
mysql>change master to master_host='192.168.139.144',master_user='bak',master_password='123456',master_auto_position=1;
如果报gtid_mode没有为ON
解决办法:
查看当前状态show variables like "%gtid_mode%" ,我这边显示为off
mysql>set global gtid_mode=off_permissive
mysql>set global gtid_mode=on_permissive
mysql>set global ENFORCE_GTID_CONSISTENCY=on
mysql>set global gtid_mode=on
打开主从同步开关:
start slave;
查看主从状态:
show slave status\G;
从库2个线程slave_io_running:yes slave_sql_running:yes ====>代表正常
3)主库配置主从
mysql>change master to master_host='192.168.139.145',master_user='bak',master_password='123456',master_auto_position=1
开启主从开关:
mysql>start slave;
查看主从状态
mysql>show slave status\G;
从库2个线程slave_io_running:yes slave_sql_running:yes ====>代表正常
步骤二,安装keepalived
两台服务器上都安装keepalived
yum install -y keepalived
步骤三,编写MySQL检测脚本
cd /etc/keepalived/
vim checkmysql.sh
内容如下:#!/bin/bash
mysqlstr=/usr/local/mysql/bin/mysql
host=192.168.139.145 ====>host A B 使用各自的IP,密码也是
user=bak
password=123456
port=3306
#####mysql 正常状态为1 否则为0
mysql_status=1
####check mysql status
$mysqlstr -h $host -u $user -p$password -P $port -e "show status;" > /dev/null 2>&1
if [ $? = 0 ];then
echo "mysql_status=1"
exit 0
else
/etc/init.d/keepalived stop
fi
步骤四,配置keepalived
vim /etc/keepalived/keepalived.conf
#####################设置一个脚本检测MySQL状态,脚本执行间隔为10s 比较合理
vrrp_script vs_mysql_100 { ====>注意格式,这里的 { 必须在这里,否则会报错,且有一个空格 ====》主备的函数名称最好也要有区别
script "/etc/keepalived/checkmysql.sh"
interval 10
}
#####################
vrrp_instance VI_100 { ####集群名称(A,B不一致)####
state BACKUP #####指定keepalived角色,master为主,backup为备,这里2台机器都设置为backup,以免脑裂现象
nopreempt #######设置为资源不抢占模式
interface eth0 ###VIP 绑定的网卡
virtual_route_id 100 ##vrid 的值100,2台机器必须一致
priority 100 ###优先级,数值越大,优先级越高
advert_int 5 #####主备之间同步检查时间间隔,设置为5S
authentication {
auth_type PASS
auth_pass 1314 #######验证密码,主备保持一致
}
track_script {
vs_mysql_100 ######调用监控函数,执行监控服务
}
virtual_ipaddress {
192.168.139.160 ####虚拟IP即VIP
}
}
五,启动&检查keepalived
主服务器上执行: /usr/sbin/keepalived ====》启动后等待几秒,再查看IP
查看日志: cat /var/log/message
检查主服务器上IP信息: ip a ====> 可以看见虚拟IP生成
从服务器执行:/usr/sbin/keepalived
六,验证
其他服务器:
mysql -u bak -p123456 -h 192.168.139.160 ====》连接不上关闭防火墙
进行MySQL后执行\s
可以看见连接数据库是通过虚拟IP(192.168.139.160)实现的
关闭主服务器的MySQL,连接会出现短时间的中断,当VIP漂移至备服务器时,连接恢复
附:如果日志有报错,检查配置文件是否存在格式不对||拼写错误
keepalived+双主架构的更多相关文章
- 企业Nginx+Keepalived双主架构案例实战
通过上一次课程的学习,我们知道Nginx+keepalived主从配置,始终有一台服务器处于空余状态,那如何更好的利用起来呢,我们需要借助Nginx+keepalived双主架构来实现,如下图通过改装 ...
- keepalived+双主架构部署
在高可用集群环境中,keepalived使用的是VIP,利用keepalived自带的服务监控功能和自定义脚本来实现MYSQL故障时自带切换. Keepalived基于VRRP协议,虚拟冗余路由协议, ...
- Nginx+Keepalived双主架构实现
Keepalived+Nginx实现高可用Web负载均衡 Master 192.168.0.69 nginx.keepalived Centos7.4backup 192.168.0.70 nginx ...
- Centos7+nginx+keepalived集群及双主架构案例
目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...
- keepalived+双主实践HA
工作不怎么忙,搞点儿开发吧差点儿事,就想着弄点儿架构的事儿.正好前段时间看过关于keepalived+双主实现高可用的文章,也恰好身边的朋友所在的公司也部分用这个架构.没什么事儿就搞搞吧,正好对比下M ...
- MariaDB+Keepalived双主高可用配置MySQL-HA
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...
- MySQL系列详解七:MySQL双主架构演示-技术流ken
前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
- [转] Haproxy、Keepalived双主高可用负载均衡
http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepaliv ...
随机推荐
- Codeforces 660C - Hard Process - [二分+DP]
题目链接:http://codeforces.com/problemset/problem/660/C 题意: 给你一个长度为 $n$ 的 $01$ 串 $a$,记 $f(a)$ 表示其中最长的一段连 ...
- python中的os.path.dirname(__file__)的使用
在编程时,我们要获取当前文件所在的路径,以适合所有的工程,建立相对路径. python的os.path.dirname(__file__)非常好用,建议大家使用: import os FILE = o ...
- Away3D引擎学习入门笔记
(1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...
- C和C指针小记(三)-整型,char,枚举
1.C语言基本数据类型-整型 仅有4中机泵数据类型:整型,浮点型,指针,聚合类型(数组和结构) 整型家族:字符,短整型,整型,长整型.(都分有符号[singed]和无符号[unsinged]) 短整型 ...
- SortedMap与TreeMap的一个典型应用
一下是在项目中的应用. msg.getContent()共有四种类型. public SortedMap<String, List<ActivityMsg>> queryTri ...
- sqlserver binary varbinary image 的区别
sqlserver binary varbinary image 的区别 binary 固定长度的二进制数据,其最大长度为 8,000 个字节. varbinary 可变长度的二进制数 ...
- 内部排序->基数排序->链式基数排序
文字描述 基数排序是和前面各类排序方法完全不相同,前面几篇文章介绍的排序算法的实现主要是通过关键字间的比较和移动记录这两种操作,而实现基数排序不需要进行记录关键字间的比较.基数排序是一种借助多关键字排 ...
- VPS常用操作(自用)
1.screen 用来开启进程,关闭ssh或命令行后扔可以继续运行 screen screen -list screen -r xx screen -S PID -X quit 2.mono asf ...
- sshd_config配置详解
sshd_config配置详解 名称 sshd_config - OpenSSH SSH 服务器守护进程配置文件 大纲 /etc/ssh/sshd_config 描述 sshd(8) 默认从 /etc ...
- 洛谷P4823 拯救小矮人 [TJOI2013] 贪心+dp
正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得 ...