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. ACTION与FUNC

    一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDelegate(string str); publ ...

  2. 深入理解php 匿名函数和 Closure

    而在PHP 5.3发布的时候, 其中有一条new feature就是支持闭包/Lambda Function, 我第一反应是以为zval新增了一个IS_FUNCTION, 但实际上是构造了一个PHP ...

  3. python常用的十进制、16进制、字符串、字节串之间的转换

    进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 ...

  4. ARM GNU常用汇编语言介绍

    ARM GNU常用汇编语言介绍 ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令组成. ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令. 伪操作,是ARM汇编语言程序里的一些特殊 ...

  5. 如何读取jar包外的properties文件和log4j.properties

    http://jrails.iteye.com/blog/1705464 ***************************************' 一般在项目中使用properties配置文件 ...

  6. RSS是什么,RSS怎么玩,RSS原理是什么 (zhuan)

    http://www.cjjjs.com/paper/gzsh/201622721397372.aspx *********************************************** ...

  7. 续写上一篇的数组or指针操作

    C语言,同样使用if else while 这样的语法,但不同的人,就是有不同的实现方式,甚至是技巧. eg: #include <stdio.h> #include<string. ...

  8. spring报错:Caused by: java.lang.IllegalStateException: Cannot convert value of type for property : no matching editors or conversion strategy found

    原因分析:是因为类返回的类型跟期望的类型没有继承关系,返回的类型就SqlMapClient,它是通过实现了FactoryBean<SqlMapClient>接口的SqlMapClientF ...

  9. 第一个Hibernate 程序

    使用MyEclipse建立Hibernate工程 index页面的Jsp源文件 <%@ page language="java" import="java.util ...

  10. 【C#】往异步下载的方法传递自定义完成事件

    封装自定义的异步下载方法时,正常情况下是这样的: /// <summary> /// 异步方法:联网下载文件,保存到本地. /// </summary> /// <par ...