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 实战的更多相关文章

  1. mysql实战之 批量update

    mysql实战之批量update 现阶段我们的业务量很小,要对admin_user表中的relationship字段进行更新,指定id是409.已知409是公司内的一服务中心,需要把该服务中心放到区代 ...

  2. MySQL高可用性之Keepalived+MySQL(双主热备)

    环境描述:OS:CentOS6.5_X64MASTER:192.168.0.202BACKUP:192.168.0.203VIP:192.168.0.204 1.配置两台Mysql主主同步[root@ ...

  3. Keepalived+MySQL双主

    一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...

  4. Lvs+keepalived+mysql主从热备

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  5. MySQL 高可用性—keepalived+mysql双主

    MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释) - 我的博客 - CSDN博客https://blog.csdn.net/qq_36276335/articl ...

  6. 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 ...

  7. HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用

    HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240    mysql_b2 242    mysql_b1 247    haprox ...

  8. centos mysql 实战 第一节课 安全加固 mysql安装

    centos mysql  实战  第一节课   安全加固  mysql安装 percona名字的由来=consultation 顾问+performance 性能=per  con  a mysql ...

  9. MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单 ...

随机推荐

  1. android.mk文件里的通配符

    比方你有如下目录,要编译Classes目录和Code目录下所有cpp src |-android.mk |-Classes |-A.cpp |-B.cpp |-....cpp |-Code |-E.c ...

  2. Extjs给gridPanel添加单价双击事件和获取当前行的数据

    有两个小属性,如下 this.on('rowdblclick', this.readContent, this); this.on('cellclick', this.gridCellClick, t ...

  3. CodeForces - 424B (贪心算法)

    Megacity Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Sta ...

  4. Android自定义progressBar

    通过继承系统ProgressBar实现 效果图 实现 HorizontalProgressBarWithNumber 自定义属性 <?xml version="1.0" en ...

  5. hdu 4832 dp ***

    dp1[i][j]表示只走x轴走j步到i位置有多少总走法,dp2同,dp方程就很好写 wa了无数发,发现MOD写在INF上了 #include<cstdio> #include<io ...

  6. BZOJ 3156: 防御准备 斜率优化DP

    3156: 防御准备 Description   Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战 ...

  7. HDU 4341 分组背包

    B - Gold miner Time Limit:2000MS      Memory Limit:32768KB     Description Homelesser likes playing ...

  8. Windows Phone 执行模型概述

    Windows Phone 执行模型控制在 Windows Phone 上运行的应用程序的生命周期,该过程从启动应用程序开始,直至应用程序终止. 该执行模型旨在始终为最终用户提供快速响应的体验.为此, ...

  9. 分享Kali Linux 2016.2第36周镜像虚拟机

    分享Kali Linux 2016.2第36周镜像虚拟机   9月9日,Kali Linux官方发布Kali Linux 2016.2周更新镜像.今天以64位镜像安装了一个虚拟机,分享给大家.该虚拟机 ...

  10. Kali Linux 2016.2发布提供虚拟机以及系统镜像下载

    Kali Linux 2016.2发布提供虚拟机以及系统镜像下载   Kali Linux 2016.2发布提供虚拟机以及系统镜像下载,本次Kali Linux 2016.2提供了五种桌面模式,分别为 ...