keepalived双BACKUP加nopreempt不起作用,两个机器同时拥有vip,

排查几天发现是防火墙问题,啃爹。

打开  vi /etc/sysconfig/iptables

插入一条:-A RH-Firewall-1-INPUT -i eth0 -p 112 -j ACCEPT

保存后,

然后重启防火墙,就恢复正常。

要么把防火墙关掉。

-----------------------------------

我们这里仅仅是监控了网络故障和keepalived本身进程,在网络或者keepalived进程出现问题的时候会切换,但是我的节点A里面还有很多服务呢,例如nginx,PHP,mysql进程出问题或高负载的时候相应过慢怎么办,怎么切换的呢,这时就要用到脚本了,下面我们来看看keepalived是如何控制脚本来实现对服务器的监控和切换的

写个脚本来实时监控三个服务,若有一个出现问题遍切换mkdir /root/shell/
cd /root/shell
vi keepcheck.sh

#!/bin/bash
while :
do
mysqlcheck=`/usr/local/lnmp/mysql/bin/mysqladmin -uroot ping 2>&1`
mysqlcode=`echo $?`
phpcheck=`ps -C php-fpm --no-header | wc -l`
nginxcheck=`ps -C nginx --no-header | wc -l`
keepalivedcheck=`ps -C keepalived --no-header | wc -l`
if [ $nginxcheck -eq 0 ]|| [ $phpcheck -eq 0 ]||[ $mysqlcode -ne 0 ];then
  if [ $keepalivedcheck -ne 0 ];then
    killall -TERM keepalived
  else
    echo "keepalived is stoped"
  fi
else
  if [ $keepalivedcheck -eq 0 ];then
    /etc/init.d/keepalived start
  else
    echo "keepalived is running"
  fi
fi
sleep 5
done

注意,用/etc/init.d/keepalived start如果起不来,可以用/usr/local/keepalived/sbin/keepalived二进制文件直接执行启动即可
启动脚本:

  1. chmod +x /root/shell/keepcheck.sh
  2. nohup sh /root/shell/keepcheck.sh &

节点B也用这个脚本

节点A和节点B 都写入/etc/rc.local开机自动启动

  1. echo "nohup sh /root/shell/keepcheck.sh &" >> /etc/rc.loal
节点A和B的时间同步:

更改时间,并配置时间自动同步
crontab -e
加入下面一行:
*/30 * * * * ntpdate 210.72.145.44

配置时间:
date --set "06/10/2011 13:56"

即把时间调整为2011年06月10日,13点56分(以当你前时间为准)
保存时间,即保存到coms里
clock -w

--------------------------------------

一、keepalived环境搭建

1.硬、软件需求

keepalived-1.2.12.tar.gz

两台Linux服务器(kernel版本在2.4.18以上)

172.16.0.252、172.16.0.253

关闭防火墙:

service iptables stop

chkconfig --level 235 iptables off

关闭selinux:

vi /etc/selinux/config

SELINUX=disabled

2.安装步骤

2.1解压安装软件(两台服务器)

tar -zxvf keepalived-1.2.12.tar.gz

cd keepalived-1.2.12

./configure --prefix=/usr/local/keepalived --disable-lvs(没有ipvs负载均衡时,可以disable掉) --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/(kernel版本根据实际情况)

make && make install

2.2 复制相关文件(两台服务器)

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

2.3 编辑配置文件(两台服务器)

主服务器:

vi /etc/keepalived/keepalived.conf

global_defs {

notification_email {

root@localhost.localdomain

}

notification_email_from notification_email_from root@localhost.localdomain

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_sync_group VGM {

group {

VI_1

}

}

vrrp_script chk_tomcat {

script "/root/tomcat.pid"

interval 1

#weight -20

}

}

vrrp_instance VI_1 {

state BACKUP     #只在Master上修改

interface eth0         #心跳,网络监控端口

virtual_router_id 51

priority 100

advert_int 1

nopreempt          #只在Master上添加

authentication {

auth_type PASS

auth_pass 1111

}

track_interface {

eth0     #需要监控的网口

eth1

}

virtual_ipaddress {

172.16.0.254/23 dev eth1  #vip绑定在业务网口上,提供用户访问的ip地址

}

track_script {

chk_tomcat

}

}

备服务器:

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost.localdomain

}

notification_email_from root@localhost.localdomain

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_sync_group VGM {

group {

VI_1

}

}

vrrp_script chk_tomcat {

script "/root/tomcat.pid"

interval 1

#weight -20

}

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_interface {

eth0

eth1

}

virtual_ipaddress {

172.16.0.254/23 dev eth1

}

track_script {

chk_tomcat

}

}

新增tomcat.pid文件(两台服务器一样)

vim /root/tomcat.pid

#!/bin/bash

JAVA_PRO=`ps -C java --no-headers|wc -l`

if [ $JAVA_PRO -eq 0 ];then

/etc/init.d/keepalived stop

fi

chmod a+x tomcat.pid

3.启动服务(两台服务器):

先启动tomcat,再启动keepalived(service keepalived start)

4.检查vip

#ip addr

#tail -f /var/log/messages

http://www.tuicool.com/articles/7NjEjm

http://www.linuxidc.com/Linux/2015-03/114981.htm

http://www.ipython.me/centos/keepalived-config-using.html

排查:

1.是否需要添加默认网关或路由
3.是否开启了iptables和selinux

4.内核参数
net.ipv4.ip_forward = 1
开启IP转发功能

net.ipv4.ip_nonlocal_bind = 1
开启允许绑定非本机的IP

如果使用LVS的DR或者TUN模式结合Keepalived需要在后端真实服务器上特别设置两个arp相关的参数。这里也设置好。
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

5.如果Keepalived所在网络不允许使用组播,可以使用VRRP单播

6.怀疑是keepalived启动脚本/etc/init.d/keepalived的问题
关键是这一行
daemon $exec $KEEPALIVED_OPTIONS

由于没有复制/etc/sysconfig/keepalived,所以将直接执行damon /data/app_platform/keepalived/sbin/keepalived
由于keepalived默认使用的是/etc/keepalived/keepalived.conf作为配置文件,而这里指定了不同的配置文件,所以要修改成为
daemon $exec -D -f $config

如果前面没有定义config变量
就把$config换成配置文件的绝对位置

7.需要注意主备的weight和priority的值,这两个值如果设置不合理可能会影响VIP的切换。
8.如果使用的配置文件不是默认的配置文件,在启动Keepalived的时候需要使用 -f 参数指定配置文件。

9.两台服务器的时间是否一致。
10.重启网络

keepalived双BACKUP加nopreempt失效、手动监控服务脚步。的更多相关文章

  1. Mysql+Keepalived双主热备高可用操作记录

    我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...

  2. keepalived+双主实践HA

    工作不怎么忙,搞点儿开发吧差点儿事,就想着弄点儿架构的事儿.正好前段时间看过关于keepalived+双主实现高可用的文章,也恰好身边的朋友所在的公司也部分用这个架构.没什么事儿就搞搞吧,正好对比下M ...

  3. MariaDB+Keepalived双主高可用配置MySQL-HA

    利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...

  4. 企业Nginx+Keepalived双主架构案例实战

    通过上一次课程的学习,我们知道Nginx+keepalived主从配置,始终有一台服务器处于空余状态,那如何更好的利用起来呢,我们需要借助Nginx+keepalived双主架构来实现,如下图通过改装 ...

  5. keepalived+双主架构

    简介 keepalived是基于VRRP协议的,全称 Virtual Redundent Routing Protocal 虚拟路由协议,为解决静态路由单点故障引起的网络失效问题设计的一套主备协议 两 ...

  6. [转] Haproxy、Keepalived双主高可用负载均衡

    http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepaliv ...

  7. MySQL keepalived 双主.md

    MySQL keepalived 双主搭建 环境说明 系统 IP 主机名 mysql keepalived VIP CentOS 6.8 192.168.197.61 C6-node1 5.6.36 ...

  8. MySQL高可用基础之keepalived+双主复制【转】

    环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 ( ...

  9. Keepalived 双主虚拟路由配置实例

    Keepalived 双主虚拟路由配置实例 演示前说明: 2台centos7.2 主机:node-00,node-01 VIP1:10.1.38.19预定node-00占有 VIP2:10.1.38. ...

随机推荐

  1. leetcode第一刷_Jump Game II

    要求最小的步数,是不是非常easy想到用dp啊? 我一開始的做法是,当找到了一个可以从它延伸到更远的位置,就把这个位置和最远位置的步数都更新一下,结果超时了. 事实上这样不仅是超时的,并且是错误的.由 ...

  2. python(21)实现多进程(1)

    参考链接:http://www.cnblogs.com/kaituorensheng/p/4445418.html python多进程:multiprocessing python中的多线程其实并不是 ...

  3. [流水账]搜索与web-container版本匹配的jar包

    刚才发现自己的servlet-api.jar里面的javax.servlet.jsp为空的,但是我又需要做一些JSP tag-lib的编程,所以没办法,只好去下一个新的包 上网找了找,我用的tomca ...

  4. vim复制粘贴常用命令

    在Windows下我们习惯的操作,复制单个字符,复制单行多行,删除单行多行,在linux的vim中操作如下: G(shift+g+g):跳到文档尾 g+g:跳转到文档首 home键:光标移动到行首 e ...

  5. webrtcchatde源代码下载

    这个是源代码地址: http://download.csdn.net/detail/duerbin3/5433617 这个demo是国内牛人赵书剑开发的视频聊天室,基于webrtc.io实现. 该项目 ...

  6. PS_图象调整_太暗/过亮_曝光不足/过度

    对于曝光不足,图像太暗. 1.调整[色阶] 图象>调整>色阶   clrl+L 然后拖动"黑","灰","白"三个滑块. 2.使 ...

  7. Java并发(二)多线程的好处

    即使编写多线程程序具有挑战性,但它仍在使用中,是因为它可以带来如下的好处: 更好的资源利用 在某些场景下程序的设计会更简单 提升程序的响应性 更好的资源利用 假设一个应用会从本地文件系统中读取和处理文 ...

  8. ContikiMAC RDC协议

    http://www.mamicode.com/info-detail-1348767.html

  9. nginx日志分析利器GoAccess(转)

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  10. Java类对象数组声明和初始化

    Java是纯面向对象语言.类是其重要构成单位. 然后,在实际编程中,我们会自己定义一些类,如Point <span style="font-size:14px;">pu ...