mysql Keepalived 实践
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可以实现web前端服务的高可用。
Keepalived实现的基础是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的.
VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),而在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话就是MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等;其他设备不拥有该IP,状态是BACKUP,除了接收MASTER的VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先MASTER的网络功能。
VRRP协议使用多播数据来传输VRRP数据,VRRP数据使用特殊的虚拟源MAC地址发送数据而不是自身网卡的MAC地址,VRRP运行时只有MASTER路由器定时发送VRRP通告信息,表示MASTER工作正常以及虚拟路由器IP(组),BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为MASTER,发送通告信息,重新进行MASTER选举状态。
1.解压源代码包(解压缩到 /usr/src/)
tar zxvf keepalived-1.2.18.tar.gz -C /usr/src/
2.源代码安装(在解压缩目录下)
(1)./configure
(2)make
(3)make install
3.用源代码包生成rpm包
(1)生成keepalived.spec文件及Makefile文件夹
./configure
(2)构建rpm包
rpmbuild ~
cp keepalived.spec ~/rpmbuild/SPECS/
cp keepalived-1.2.18.tar.gz ~/rpmbuild/SOURCES/
(3)进入 cd ~/rpmbuild/SPECS/ 目录
(4)编译源码并生成rpm包
rpmbuild -bb keepalived.spec
构建完成后在 /root/rpmbuild/RPMS/x86_64目录下可以找到
4.安装rpm包
rpm -ivh keepalived-1.2.18-5.x86_64.rpm
----------------搭建mysql HA----------------------
1.关闭防火墙
service iptables stop
2.将 SELinux 在 Enforcing 与 permissive 之间切换与查看(切换成permissive)
[root@www ~]# setenforce 0
[root@www ~]# getenforce Permissive
[root@www ~]# setenforce 1
[root@www ~]# getenforce Enforcing
3.配置好相应的mysql replication 后登陆mysql(a机器为 197 b机器为165)
A机器:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.2.10.165' IDENTIFIED BY '123456';
flush privileges;
B机器:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.2.10.197' IDENTIFIED BY '123456';
flush privileges;
4.配置同步
A机器:
CHANGE MASTER TO MASTER_HOST='10.2.10.165', MASTER_PORT=3306, MASTER_USER='slave',MASTER_PASSWORD='123456', master_auto_position=1;
start slave
B机器:
CHANGE MASTER TO MASTER_HOST='10.2.10.197', MASTER_PORT=3306, MASTER_USER='slave',MASTER_PASSWORD='123456', master_auto_position=1;
start slave
5.配置keepalived.conf 和 mysql.sh(在/etc/keepalived/目录下配置)
配置keepalived.conf
! Configuration File for keepalived global_defs {
notification_email {
@qq.com #定义接受邮件的邮箱
}
notification_email_from root@localhost.localdomain #定义接受邮件的邮箱
smtp_server 127.0.0.1
smtp_connect_timeout
router_id LVS_DEVEL
} vrrp_instance VI_1 { #定义vrrptest实例
state BACKUP #服务器状态(主为MASTER,从为BACKUP) 一般都设置为BACKUP进行故障切换
interface eth0 #网络设备名称 可以使用ifconfig查看具体的配置
virtual_router_id #虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换(取值在0-255之间,用来区分多个instance的VRRP组播)
priority #服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
nopreempt #设置此参数当优先级最的服务宕机重启之后不会抢夺当前主服务其的控制权
advert_int #服务器之间的存活检查时间
authentication {
auth_type PASS #认证类型
auth_pass #认证密码,一组lvs 服务器的认证密码必须一致
}
virtual_ipaddress { #虚拟IP地址
10.2.10.241
}
} virtual_server 10.2.10.241 { #定义虚拟服务器
delay_loop #每个6秒检查一次real_server状态
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
nat_mask 255.255.255.0
persistence_timeout #会话保持时间
protocol TCP real_server 10.2.10.197 { #真实的服务器地址
weight
notify_down /etc/keepalived/mysql.sh #检测到服务down后执行的脚本kill keepalived
TCP_CHECK {
connect_timeout #连接超时时间
bingto 10.2.10.241
nb_get_retry #重连次数
delay_before_retry #重连间隔时间
connect_port #健康检测端口
} }
}
配置mysql.sh
#!/bin/bash
pkill keepalived
6.mysql.sh 增加执行权限
chmod +x mysql.sh
7.在两台机器启动 keepalived 服务
/etc/init.d/keepalived start
8.查看启动日志
less /var/log/messages
shift+g 跳到最后一行
9.tcpdump抓取网络包,看是否正常
tcpdump
10.监控虚拟ip
ip addr list
------------------------最终检测---------------------
1.使用PS命令检测服务运行状态
a.ps -ef|grep keepalived
b.ps -ef|grep mysql
2.查看系统日志,确定keepalived运行正确
a. less /var/log/messages
b. 或者 tail -f /var/log/messages
3.注意!服务启动顺序。先启动mysql后启动keepalived
------------------------测试方式---------------------
1.使用ping命令持续检测vip连通情况
2.关闭主节点上的mysql服务
3.观察主节点上的keepalived进程
4.观察VIP的ping结果
5.观察在切换后能否正常访问数据库
--------------------使用第三台测试机器进行测试---------------------
1.创建用于测试的数据库帐号在主被机器上
grant all on world.* to test1@10.2.10.136 identified by 'test1';
flush privileges;
2.在测试机器上
mysql -h 10.2.10.241-utest1 -ptest1
3.在主机上模拟故障
停掉mysql服务
mysql Keepalived 实践的更多相关文章
- Oracle Compute云快速搭建MySQL Keepalived高可用架构
最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...
- paip.python连接mysql最佳实践o4
paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...
- Mysql + keepalived 实现双主热备读写分离【转】
Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论 架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...
- mysql+keepalived 双主热备高可用
理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互 ...
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
- MySQL · 最佳实践 · 分区表基本类型
MySQL · 最佳实践 · 分区表基本类型 MySQL分区表概述 随着MySQL越来越流行,Mysql里面的保存的数据也越来越大.在日常的工作中,我们经常遇到一张表里面保存了上亿甚至过十亿的记录.这 ...
- MySQL keepalived 双主.md
MySQL keepalived 双主搭建 环境说明 系统 IP 主机名 mysql keepalived VIP CentOS 6.8 192.168.197.61 C6-node1 5.6.36 ...
- mysql + keepalived架构
mysql + keepalived架构 文档(这个文章共有三篇): http://blog.itpub.net/27000195/viewspace-1364706/
- [转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用
[MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式 ...
随机推荐
- 软工实践周六实践课安排(2017秋学期) | K 班
软工实践周六实践课安排(2017秋学期) | K 班 周数 截止时间 工作内容 阶段成果展示形式 验收方式 备注 4之前 2017.10月前 组队 随笔(提供组队名单.组队队员的介绍--包括擅长的地方 ...
- 新版vue-cli如何使用json-server来mork
新版vue-cli如何使用json-server来mork 原创 2018年03月06日 11:28:32 标签: vue / 前端 / webpack / vue-cli 185 新版的vue-cl ...
- JAVA的垃圾回收机制(GC)
1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...
- MT【103】二阶递推找规律
评:如果直接找$a_n$的二阶递推式:$a_{n+2}-2\sqrt{2}a_{n+1}-a_n=0$有根号,不利于估计尾数.
- 【刷题】LOJ 6014 「网络流 24 题」最长 k 可重区间集
题目描述 给定实直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取出开区间集合 \(S \subseteq ...
- 【BZOJ2084】[Poi2010]Antisymmetry(manarcher)
[BZOJ2084][Poi2010]Antisymmetry(manarcher) 题面 BZOJ 洛谷 题解 一眼马拉车吧...明显就是在回文串的基础上随便改了改. 似乎还可以魔改回文树,然而我这 ...
- HGOI20180904(NOIP2018模拟sxn出题)
sol 输入n和H表示n个人,选H个人gcd最大抓住排列,是x[1,n]的正整数,是连续的整数,假设现在最大的公因数是k其中k一定是在[1,n]那么在排列中最多出现的个数为w那么kw是最大的含有因数k ...
- emWin 使用 GUIBuilder 放置标题 TEXT 注意
@2018-7-10 13:27:16 emWin 使用 GUIBuilder 放置标题 “Scroll Compressor”,有居中显示要求,为了内容可在程序中方便更改且能达到自适应,应将其属性大 ...
- Luogu2661 信息传递(图论)
Luogu2661 信息传递(图论) Description 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti ...
- 洛谷P3241 开店
题意:紫妹和幽香是17岁的少女,喜欢可爱的东西. 给定一棵树,有点权,边权.每次求所有权值在[l, r]范围内的点到点x的距离和.强制在线. 解:动态点分治怎么搞啊...... 一开始想的是权值的限制 ...