免费注册 查看新帖 |

Chinaunix

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

keepalived 配置非抢占模式nopreempt [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-17 15:37 |只看该作者 |倒序浏览
本帖最后由 rwx_hc 于 2014-07-17 16:54 编辑

这段时间在弄热备方面东西,采用的是keepalived配置HA
先说下遇到的问题:
1、主、从设备同时有vip起来,感觉主从设备之间通讯有问题
2、当配置为非抢占时没有效果,优先级高的仍然会在重新起来后抢占master

网上搜索了一下,很多人也遇到设置不抢占没有效果问题。解决办法也似乎并不能凑效。
后来经过反复修改配置终于测试通过了。下面我将配置分享出来希望能帮到有同样问题的朋友:

主设备:/etc/keepalived/keepalived.conf
  1. ! Configuration File for keepalived

  2. global_defs {
  3.         notification_email {
  4.                 root@localhost.localdomain
  5.         }
  6.         notification_email_from ha@localhost.localdomain
  7.         smtp_server 127.0.0.1
  8.         smtp_connect_timeout 30
  9.         router_id xyz
  10. }

  11. vrrp_sync_group xyz_vsg {
  12.         group {
  13.                 xyz_vi
  14.         }
  15. }

  16. vrrp_instance xyz_vi {
  17.         state BACKUP
  18.         nopreempt
  19.         smtp_alert
  20.         notify_fault /usr/bin/xyz_notify_mail.sh fault
  21.         notify_master /usr/bin/xyz_notify_mail.sh master
  22.         notify_backup /usr/bin/xyz_notify_mail.sh backup

  23.         interface eth0
  24.         track_interface {
  25.                 eth1
  26.         }

  27.         virtual_router_id 51
  28.         priority 150
  29.         advert_int 3
  30.         authentication {
  31.                 auth_type PASS
  32.                 auth_pass xyz123456
  33.         }

  34.         virtual_ipaddress {
  35.                 172.16.1.30/24 dev eth0 scope global
  36.         }
  37. }
复制代码
从设备配置:/etc/keepalived/keepalived.conf
  1. ! Configuration File for keepalived

  2. global_defs {
  3.         notification_email {
  4.                 root@localhost.localdomain
  5.         }
  6.         notification_email_from ha@localhost.localdomain
  7.         smtp_server 127.0.0.1
  8.         smtp_connect_timeout 30
  9.         router_id xyz
  10. }

  11. vrrp_sync_group xyz_vsg {
  12.         group {
  13.                 xyz_vi
  14.         }
  15. }

  16. vrrp_instance xyz_vi {
  17.         state BACKUP
  18.         smtp_alert
  19.         notify_fault /usr/bin/xyz_notify_mail.sh fault
  20.         notify_master /usr/bin/xyz_notify_mail.sh master
  21.         notify_backup /usr/bin/xyz_notify_mail.sh backup

  22.         interface eth0
  23.         track_interface {
  24.                 eth1
  25.         }

  26.         virtual_router_id 51
  27.         priority 100
  28.         advert_int 3
  29.         authentication {
  30.                 auth_type PASS
  31.                 auth_pass xyz123456
  32.         }

  33.         virtual_ipaddress {
  34.                 172.16.1.30/24 dev eth0 scope global
  35.         }
  36. }
复制代码
说明一下:
1、监控网卡,也可以和vip网卡相同
track_interface {
                eth0
        }
2、主、从配置中都不能有: mcast_src_ip ...
如果设置了一定会出现这样那样的问题。

3、主设备配置一定要加上:nopreempt,否则非抢占也不起作用。

4、防火墙问题
允许组播,两台设备上都需要执行
iptables -A INPUT -d 224.0.0.18 -j ACCEPT

或修改:vim /etc/sysconfig/iptables
适当位置添加行:
-A INPUT -d 224.0.0.18 -j ACCEPT







论坛徽章:
0
2 [报告]
发表于 2014-07-24 17:46 |只看该作者
本帖最后由 wjw870907 于 2014-07-24 18:22 编辑

感谢楼主,最近我也头疼这个问题,不过我的配置没看出和你有什么区别
望指教
主:
vrrp_script chk_redis {
    script "/etc/keepalived/scripts/redis_check.sh"
    interval 2
    !fall 2
}

vrrp_sync_group redis {
        group {
                k_redis
        }
}

vrrp_instance k_redis {
    state BACKUP
    interface eth0
    virtual_router_id 73
    priority 100
    nopreempt
    smtp_alert
    notify_master /etc/keepalived/scripts/redis_master.sh
    notify_backup /etc/keepalived/scripts/redis_slave.sh
    notify_fault  /etc/keepalived/scripts/redis_fault.sh
    notify_stop   /etc/keepalived/scripts/redis_stop.sh
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.20.105 dev eth0 scope global
    }
track_script {
        chk_redis
    }
}

备:
vrrp_script chk_redis {
    script "/etc/keepalived/scripts/redis_check.sh"
    interval 2
    !fall 2
}

vrrp_sync_group redis {
        group {
                k_redis
        }
}

vrrp_instance k_redis {
    state BACKUP
    interface eth0
    virtual_router_id 73
    priority 50
    smtp_alert
    notify_master /etc/keepalived/scripts/redis_master.sh
    notify_backup /etc/keepalived/scripts/redis_slave.sh
    notify_fault  /etc/keepalived/scripts/redis_fault.sh
    notify_stop   /etc/keepalived/scripts/redis_stop.sh
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.20.105 dev eth0 scope global
    }
track_script {
        chk_redis
    }
}

防火墙也加了

论坛徽章:
0
3 [报告]
发表于 2014-07-24 18:08 |只看该作者
本帖最后由 wjw870907 于 2014-07-24 18:12 编辑

LZ,增加了防火墙还是没用哦

论坛徽章:
0
4 [报告]
发表于 2014-08-01 16:02 |只看该作者
script "/etc/keepalived/scripts/redis_check.sh"
问题可能出在这个脚本上,
我的是用的网卡检查,因为需求不同
track_interface {
                eth1
        }
除此外确实基本上没啥差别

论坛徽章:
0
5 [报告]
发表于 2014-08-07 17:23 |只看该作者
我的理解很简单, 如果你没有心跳口,那么对外的网口一旦断开,双方都认为对方down了,自然就都active了,只要把vrrp的心跳口和业务口区分开就可以了。

  interface eth0    这行代表 vrrp (keepalived通讯的组播端口)接口 或者叫心跳口

track_interface {
                 eth1 (这行代表keepalived监控的业务端口)
         }

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP