keepalived 手动切换主备切换后服务怎么办

Keepalived切换从后,主恢复不在接管服务 - 为程序员服务
Keepalived切换从后,主恢复不在接管服务
操,编辑了半天,一点更新,都没了,都没了,重写!!
最近在做一个应用HA的时候碰到一个小问题
B是A的备份机,既A是MASTER,B是BACKUP
HA用的是Keepalived
按照原来规划,当A故障时,B会接替A继续服务。
到此为止 ,一切都很好。
但是A恢复了,问题出现了,由于某些设计上的原因,B在顶替提供服务时的数据无法被传递给故障的A,导致A恢复后Keepalived将VIP漂移回A导致数据脑裂,应用故障。
所以,我们的需求如下
1, B在接替A后必须告知变更
2, A在恢复后,Keepalived不应该把应用切回去
只要在vrrp_instance段里面添加
notify_master /etc/keepalived/scripts/alter.sh
(脚本内容自行编写)
A和B的state 都设置为Backup
A的优先级一定要高于B,每次通过优先级选举Master
最后在先级高的那台设置参数nopreempt
A的配置文件事例
vrrp_instance VI_1 {
state BACKUP
interface bond0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
track_script {
chk_app #监测app进程状态
virtual_ipaddress {
notify_master /etc/keepalived/scripts/alter.sh
B的配置文件事例
vrrp_instance VI_1 {
state BACKUP
interface bond0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
track_script {
chk_app #监测app进程状态
virtual_ipaddress {
notify_master /etc/keepalived/scripts/alter.sh
原文地址:, 感谢原作者分享。
您可能感兴趣的代码新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 144, 距离下一级还需 56 积分
论坛徽章:0
正在测试keepalived,环境如下:
主备双机,虚拟出一个IP地址,正常情况下:主机占用虚拟IP,服务(vsftpd)在主机运行,备机服务停止。若主机出问题,VIP迁移至备机,备机服务启动,主机服务停止;测试过程中发现:若在主机运行,服务(vsftp)手动停止的话,会被keepalived及脚本自动重启。但若在备机运行(VIP及vsftpd均在备机),手动停止vsftp,则不会被启动,以下为keepalived及脚本,请高手指点:
keepalived.conf:
! Configuration File for keepalived
global_defs {
& &notification_email {
& &&&root@localhost
& &notification_email_from root@localhost
& &smtp_server 127.0.0.1
& &smtp_connect_timeout 30
& &router_id MY_KEEPALIVED
vrrp_script chk_alive {
& &script &/usr/local/keepalived/etc/keepalived/chk_alive.sh&
& &interval 1
vrrp_instance VI_1 {
& & state MASTER
& & interface eth0
& & virtual_router_id 51
& & priority 100
& & advert_int 1
& & preempt
& & authentication {
& && &&&auth_type PASS
& && &&&auth_pass 1111
& & track_interface {
& & & & eth0
& & & & eth1
& & virtual_ipaddress {
& && &&&10.215.54.33
& & track_script {
& & & & chk_alive
notify_master &/usr/local/keepalived/etc/keepalived/notify.sh master&
notify_backup &/usr/local/keepalived/etc/keepalived/notify.sh backup&
notify_fault&&&/usr/local/keepalived/etc/keepalived/notify.sh fault&
chk_alive.sh:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/loacl/bin:/usr/local/sbin:~/bin
export PATH
VIP=10.215.54.33
FindVIP=`ip addr | grep $VIP | wc -l`
Serhealth=`pgrep vsftpd | wc -l `
if [ &$FindVIP& -eq 1 -a &$Serhealth& -eq 0 ] ; then
& & & & service vsftpd start
& & & & sleep 10
elif [ &$FindVIP& -eq 0 -a &$Serhealth& -ge 1 ] ; then
& & & & service vsftpd stop
& & & & sleep 10
& & & & exit 0
notify.sh:
#!/bin/bash
VIP=10.215.54.33
CONTACT='root@localhost'
THISIP=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F: '{print $2}'`
Notify() {
& & & & mailsubject=&$THISIP is to bi $VIP master&
& & & & mailbody=&vrrp transaction,$VIP floated to $THISIP&
& & & & echo $mailbody | mail -s &$mailsubject& $CONTACT
case &$1& in
& & & & master)
& & & & & & & & /etc/init.d/keepalived start
& & & & & & & & service vsftpd start
& & & & & & & & sleep 10
& & & & & & & & exit 0
& & & & ;;
& & & & backup)
& & & & & & & & service vsftpd stop
& & & & & & & & sleep 10
& & & & & & & & exit 0
& & & & ;;
& & & & fault)
& & & & & & & & service vsftpd stop
& & & & & & & & sleep
& & & & & & & & exit 0
& & & & ;;
& & & & *)
& & & & & & & & echo 'Usage:`basename $0` {master|backup|fault}'
& & & & & & & & exit 1
& & & & ;;
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 144, 距离下一级还需 56 积分
论坛徽章:0
我靠,找到原因了,备机的脚本有问题;问题解决,谢谢各位!
富甲一方, 积分 49080, 距离下一级还需 920 积分
论坛徽章:31
我不是很明白, 楼主为啥用 keepalived 来处理应用层的切换呢?
白手起家, 积分 144, 距离下一级还需 56 积分
论坛徽章:0
这样只要安装keepalived就可以解决硬件(网络)和软件(应用)双机了,比较方便可靠,不然还有什么其它方便且稳定的方法吗?请指点!
富甲一方, 积分 49080, 距离下一级还需 920 积分
论坛徽章:31
个人以为, keepalived 是为 lvs 设计的 四层的 HA 架构, 而且, 是基于VRRP协议的. 对于应用层的监听处理, 没有特别的优势. 更多的需要自己写相应的脚本来处理.
对于应用层的HA, 还是应该使用7层的HA软件比较好. 开源的 Pacemaker, OpenAIS 还是什么的, 都可以参考一下.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&keepalived主备切换失败解决办法
keepalived主备切换失败解决办法
keepalived主备切换失败解决办法
在迁移haproxy负载的时候出现keepalived切换失败
具体故障现象如下:
两台haproxy+keepalived启动完毕,第一次访问到主机(正常)
killall keepalived ,删除主机的keepalived,马上切换到备机(正常,可以通过ip addr查看虚IP是否生效)
keepalived -f /usr/local/etc/keepalived/keepalived.conf ,启动主机的keepalived,正常应该切换回主机(失败),这时出现站点打不开的情况
在备机上用ip addr 查看,虚IP还是显示在那里
ps -e | grep keepalived &#只有两个进程。正常情况下应该有3个keepalived的进程才对
解决keepalived只有两个进程的情况
只有两个进程,是因为当前的linux系统未指定内核位置cd /usr/src/kernels #发现这个目录下没有文件
yum install kernel -y
yum install kernel-devel -y
ln -s /usr/src/kernels/2.6.18-274.3.1.el5-i686/ /usr/src/linux #创建链接文档
然后重新编译安装keepalived
刚开始编译的是keepalived-1.2.2版本,出现/usr/include/stdint.h:41: error: conflicting types for ‘int64_t’
/usr/src/linux/include/linux/types.h:126: error: previous declaration of ‘int64_t’ was here
/usr/include/stdint.h:56: error: conflicting types for ‘uint64_t’
/usr/src/linux/include/linux/types.h:124: error: previous declaration of ‘uint64_t’ was here
In file included from /usr/include/stdlib.h:438,
不得解,后选择keepalived-1.1.9版本,编译不报错
安装后查看 ps -e|grep keepalived 有三个进程在跑
解决安装keepalived-1.2.2版本编译报错的问题vim keepalived/libipvs-2.6/ip_vs.h
把 #include &linux/types.h& 移动到 #include &sys/types.h& 的下面
关于keepalived的原理,可以看看
发表评论:
TA的最新馆藏

我要回帖

更多关于 keepalived 主从切换 的文章

 

随机推荐