keepalived +mysql 实战
keepalived高可用可以用在很多应用上,比如keepalived+反向代理著名的nginx。keepalived+数据库主从。keepalived+文件分布等等。。。
安装keepalived 楼主使用keepalived1.2.19
#基础环境
yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel
#内核开发包keepalived要用,一定要安装
yum –y install kernel-devel kernel (kernerl?)
ln -s /usr/src/kernels/2.6.32-573.12.1.el6.x86_64/ /usr/src/linux
tar –zxvf keep***
cd keep***
./configure --with-kernel-dir=/usr/src/kernels/2.6.32-573.3.1.el6.x86_64/ (如果你发现你的kernels 下面没有。那就是内核开发包没有安装 kernel-devel)
make && make install
#将安装完成的keepalived拷贝进常用目录
DIR=/usr/local/
cp $DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ && cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p /etc/keepalived && cp $DIR/sbin/keepalived /usr/sbin/
chkconfig keepalived on
http://www.linuxidc.com/Linux/2014-08/105884.htm keepalived选举问题 (从此不怕脑裂)
IPTABLES问题
如果开了iptables但是你放行了vrrp协议例如:iptables –A INPUT –p vrrp –j ACCEPT
因为这个命令-A 是将语句添加到最后一行的iptables规则里。Iptables规则里有个bug就是最后一行有可能会默认拒绝。所以需要使用-I(大写的i)
如:iptables –I INPUT –p vrrp –j ACCEPT
写完使用service iptables save 保存配置。
默认情况下keepalived的日志输出在/var/log/message中,当然这个是可以自定义的。
/etc/keepalived/keepalived.conf 如下 (这个文件默认没有,需要自己创建。)
这个是主的keepalived配置文件。
! Configuration File for keepalived
#by:v
global_defs {
}
vrrp_script chk_run {
script "/root/my.sh" #这里的脚本可以自己设置, 你可以把它定义成检查nginx的 那就成了 keepalived+nginx高可用。 你也可以把它定义成mysql 自然就成了 keepalived+mysql高可用了
interval 2
weight 2
}
# VIP1
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 151
priority 102
advert_int 1 #检测频率 发送VRRP包 1秒
authentication {
auth_typePASS 同组也就是同serverid 之间通信的验证
auth_pass 1111
}
virtual_ipaddress {
192.168.0.43
#这里也可以写多个VIP
}
track_script {
chk_run
}
}
这个是备的keepalived配置文件
! Configuration File for keepalived
#by:V
global_defs { } vrrp_script chk_run { script "/root/my.sh" interval 2 weight 2 } # VIP1 vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 151 priority 100 advert_int 1 authentication { auth_typePASS auth_pass 1111 } virtual_ipaddress { 192.168.0.43 } track_script { chk_run } }
这里做的是mysql+keepalived ,如果要做nginx,可以把mysqld换成nginx。当然这样检查mysql显然有些不全面。下图是 my.sh 脚本的内容
#!/bin/bash
A=`ps -C mysqld --no-header |wc -l`
if [ $A -eq 0 ];then
service mysqld start
sleep 3
if [ `ps -C mysqld --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
我们来看一下 杀掉进程之后,VIP是否会票已到另外一台机器,我们tail -fn100 /var/log/message 日志。 先把my.sh里的service mysqld start 这一行注释掉,不然看不到效果哦

开始停止mysql

这样VIP就到了从上的 193上去了。日志里会显示chk_run 也就是我们配置文件里面定义的脚本检查模块了,然后发送vrrp包给同组ID的VRRP成员,进行从新选举master。

我们在来看看BACKUP上从 BACKUP变成MASTER的日志过程

红色方框为我刚在MASTER上停止mysql 从而触发了MASTER上的健康检查,进而MASTER脚本 kill掉keepalived进程,导致VIP漂移到BACKUP上,上图为BACKUP的日志。
如果此时我们需要恢复之前MASTER的VIP绑定,就需要start keepalived,但是keepalived起来又会去健康检查脚本,之后又会kill掉keepalived,所以有些人会说我的keepalived怎么起不来,这个时候就要去查看脚本了。
排错思路: (time:2015年12月14日13:38:18)
1、验证keepalived配置文件是否OK的方法 我自己总结了一个。不管2个keepalived机器是否谁主谁备,如果你需要验证A机器(假设只backup)的keepalived配置文件是否有问题时,你可以开启A机器的iptables,当然策略自然是不放行VRRP协议。 此时 如果A机器能够绑定成功VIP 说明配置文件OK,当主挂掉的时候,BACKUP会去抢到VIP。(有的人经查会出现为什么VIP不去漂移的情况适合这种思路排错)
2、当然也可以使用tcpdump 来查看,感觉效果不怎么样。
3、更换keepalived的版本(有可能也会出现这个问题)
4、如果你发现VIP绑定不了,也有可能是内核开发包没有安装
小菜写总结,怕以后忘掉。 大神多多指点,多多交流学习。 如有疑问请留言。
keepalived +mysql 实战的更多相关文章
- mysql实战之 批量update
mysql实战之批量update 现阶段我们的业务量很小,要对admin_user表中的relationship字段进行更新,指定id是409.已知409是公司内的一服务中心,需要把该服务中心放到区代 ...
- MySQL高可用性之Keepalived+MySQL(双主热备)
环境描述:OS:CentOS6.5_X64MASTER:192.168.0.202BACKUP:192.168.0.203VIP:192.168.0.204 1.配置两台Mysql主主同步[root@ ...
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
- Lvs+keepalived+mysql主从热备
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- MySQL 高可用性—keepalived+mysql双主
MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释) - 我的博客 - CSDN博客https://blog.csdn.net/qq_36276335/articl ...
- keepalived+mysql backup服务器可ping通过vip但telnet vip+3306失败问题
环境: OS:CentOS 7_X64 数据库:mysql-5.7 MASTER:192.168.119.23 BACKUP:192.168.119.24 VIP:192.168.119.138 ke ...
- HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用
HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240 mysql_b2 242 mysql_b1 247 haprox ...
- centos mysql 实战 第一节课 安全加固 mysql安装
centos mysql 实战 第一节课 安全加固 mysql安装 percona名字的由来=consultation 顾问+performance 性能=per con a mysql ...
- MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单 ...
随机推荐
- 【转】tomcat下部署 solr 5.3.1
本文转自:http://blog.csdn.net/lianghyan/article/details/49467207 solr下载: http://lucene.apache.org/solr/d ...
- mysql工具
MySQL工具汇总 收录了MySQL相关有用的工具.工具包含:性能测试,状态分析,SQL路由等方面 本文汇总了和MySQL运维开发相关的所有工具,并会持续更新 工具套件集 percona-toolki ...
- 数据库路由器 ICX
实时并发数据库事务处理同步复制器和负载平衡器 ———通向真正数据库高可用性,高可靠性,高性能之路 一.产品概述 数据库路由器--ICX是美国宾夕法尼亚大学计算机系施教授经过多年研究.开发出 ...
- Java for LeetCode 202 Happy Number
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...
- 最小的N个和(codevs 1245)
1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有两个长度为 N ...
- 菜鸟学Linux命令:cat命令 查看文件内容
cat命令的用途是连接文件或标准输入并打印. 这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. Linux下查看文件内容的方式很多:vi ...
- js event 事件兼容浏览器 ie不需要 event参数 firefox 需要
js event 事件兼容浏览器 ie不需要 event参数 firefox 需要 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- VMWare Workstation的命令
1 Ctrl + Alt + <-/-> 多个操作系统的切换
- loj 1300( 边双联通 + 判奇圈 )
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27010 思路:首先Tarjan标记桥,然后对于dfs遍历整个图,我 ...
- sqlserver日常维护脚本
SQL code --备份declare @sql varchar(8000) set @sql='backup database mis to disk=''d:\databack\mis\mis' ...