keepalived双BACKUP加nopreempt失效、手动监控服务脚步。
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二进制文件直接执行启动即可
启动脚本:
- chmod +x /root/shell/keepcheck.sh
- nohup sh /root/shell/keepcheck.sh &
节点B也用这个脚本
节点A和节点B 都写入/etc/rc.local开机自动启动
- echo "nohup sh /root/shell/keepcheck.sh &" >> /etc/rc.loal
更改时间,并配置时间自动同步
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失效、手动监控服务脚步。的更多相关文章
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
- keepalived+双主实践HA
工作不怎么忙,搞点儿开发吧差点儿事,就想着弄点儿架构的事儿.正好前段时间看过关于keepalived+双主实现高可用的文章,也恰好身边的朋友所在的公司也部分用这个架构.没什么事儿就搞搞吧,正好对比下M ...
- MariaDB+Keepalived双主高可用配置MySQL-HA
利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...
- 企业Nginx+Keepalived双主架构案例实战
通过上一次课程的学习,我们知道Nginx+keepalived主从配置,始终有一台服务器处于空余状态,那如何更好的利用起来呢,我们需要借助Nginx+keepalived双主架构来实现,如下图通过改装 ...
- keepalived+双主架构
简介 keepalived是基于VRRP协议的,全称 Virtual Redundent Routing Protocal 虚拟路由协议,为解决静态路由单点故障引起的网络失效问题设计的一套主备协议 两 ...
- [转] Haproxy、Keepalived双主高可用负载均衡
http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepaliv ...
- MySQL keepalived 双主.md
MySQL keepalived 双主搭建 环境说明 系统 IP 主机名 mysql keepalived VIP CentOS 6.8 192.168.197.61 C6-node1 5.6.36 ...
- MySQL高可用基础之keepalived+双主复制【转】
环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 ( ...
- Keepalived 双主虚拟路由配置实例
Keepalived 双主虚拟路由配置实例 演示前说明: 2台centos7.2 主机:node-00,node-01 VIP1:10.1.38.19预定node-00占有 VIP2:10.1.38. ...
随机推荐
- Windows 下Java 连 MYSQL数据库
我们上课的时候在机房是用java连SQLServer2008的.由于这个数据库软件安装太麻烦,最重要的一点是安装后系统应该会变慢.至少开机速度会有影响.至于这个mysql我觉得下载一个绿色版的,然后自 ...
- C++学习笔记16,C++11中的显式的默认构造函数以及显示删除默认构造函数
在早期的C++中.假设须要一些接受一些參数的构造函数,同一时候须要一个不接收不论什么參数的默认构造函数.就必须显示地编写空的默认构造函数.比如: //tc.h class A{ private: in ...
- tornado源码分析-模块介绍
1.Core web framework tornado.web - web框架功能模块,包括RequestHandler和Application两个重要的类 tornado.httpserver - ...
- python(34):为什么在Python里推荐使用多进程而不是多线程?
最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深 ...
- linux命令(24):/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc
/etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么? /etc/profile: 用来设置系统环境 ...
- Ubuntu下安装JDK1.7
Ubuntu操作系统下如何手动安装JDK1.7呢?本文是我经历的全过程. Ubuntu版本:12.04 LTS JDK版本:1.7.0_04 安装目录:/usr/local/development/j ...
- IR的评价指标之MRR
MRR(Mean Reciprocal Rank): 是一个国际上通用的对搜索算法进行评价的机制,即第一个结果匹配,分数为1,第二个匹配分数为0.5,第n个匹配分数为1/n,如果没有匹配的句子分数为0 ...
- ajax 基本语法
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...
- 【火狐FireFox】同步失败后,书签被覆盖,如何恢复书签
问题场景: 使用公司的电脑,下载安装火狐,登录个人帐号后,火狐会自动开始同步书签.但有时候会同步失败,比如登录之前选的是[本地服务],而最新的书签都是在[全球服务]理,那么很有可能同步到的是N久之前的 ...
- uboot中log处理
位图或logo和开机显示画面,是两个完全不同的东西. logo显示uboot相关信息,如版本号等. 开机画面是用户下载到固定位置后uboot加载的. 1.开机画面 在uboot中使用splash sc ...