免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6671 | 回复: 4
打印 上一主题 下一主题

keepalived环境中备机服务停止后不能自动重启的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-05 11:08 |只看该作者 |倒序浏览
正在测试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
else
        exit 0
fi


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
        ;;
esac

论坛徽章:
0
2 [报告]
发表于 2014-05-05 11:30 |只看该作者
我靠,找到原因了,备机的脚本有问题;问题解决,谢谢各位!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2014-05-05 13:26 |只看该作者
我不是很明白, 楼主为啥用 keepalived 来处理应用层的切换呢?

论坛徽章:
0
4 [报告]
发表于 2014-05-05 16:07 |只看该作者
这样只要安装keepalived就可以解决硬件(网络)和软件(应用)双机了,比较方便可靠,不然还有什么其它方便且稳定的方法吗?请指点!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-05-06 08:26 |只看该作者
回复 4# sjzwyb

个人以为, keepalived 是为 lvs 设计的 四层的 HA 架构, 而且, 是基于VRRP协议的. 对于应用层的监听处理, 没有特别的优势. 更多的需要自己写相应的脚本来处理.

对于应用层的HA, 还是应该使用7层的HA软件比较好. 开源的 Pacemaker, OpenAIS 还是什么的, 都可以参考一下.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP