keepalived

Keepalived及VRRP协议原理
keepalived起初是专门为lvs设计的负载均衡设计的,用来管理并监控lvs集群中各个服务器节点的状态,后加入可实现高可用的vrrp功能,就可以作为其他服务(nginx,haproxy,mysql)的高可用解决方案软件
Keepalived软件主要是通过VRRP协议实现高可用功能的。
VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

三个重要功能:
(1)管理LVS负载均衡软件
(2)实现对LVS集群节点健康检查功能
(3)作为系统网络服务的高可用功能
裂脑的概念及如何规避解决裂脑问题
由于某些原因,导致两台高可用服务器对在指定时间内,无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器对都还活着并在正常运行,这样就会导致同一个IP或服务在两端同时存在而发生冲突,最严重的是两台主机占用同一个VIP地址,当用户写入数据时可能会分别写入到两端,这可能会导致服务器两端的数据不一致或造成数据丢失,这种情况就被称为裂脑。
导致脑裂的原因:
(1)高可用服务器之间心跳线断
(2)网卡及相关驱动坏了,IP配置及冲突问题
(3)心跳线间连接的设备故障(网卡及交换机)
(4)高可用服务器上开启了iptables防火墙阻挡了心跳消息传
(5)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
(6)其他服务配置不当等原因,如心跳方式不同,心跳广播冲突,软件BUG等
解决问题:
(1)如果开启防火墙,一定要让心跳消息通过,一般通过允许IP段的形式解决(防火墙问题)
(2)可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余
(3)开发检测程序通过监控软件(例如Nagios)检测裂脑,及时通知,避免及时止损。
Keepalived高可用服务搭建准备
准备两台虚拟机,并且都设置两块网卡,分别yum安装keepalived(注意每个虚拟机的第二块网卡的网段应与第一块不同)

/etc/init.d/keepalived/ start 启动脚本

lb01 主服务器vi /etc/keepalived/keepalived.conf (keepalived的配置文件)

! Configuration File for keepalived

global_defs {                                                   *全局模块*
   notification_email {                                         *通知模块*                           
     acassen@firewall.loc                                       *邮箱*
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc      *发件人的邮箱地址*
   smtp_server 192.168.200.1                                  *邮件服务器的服务地址*
   smtp_connect_timeout 30                                    *邮件服务超时时间*
   router_id lb01											 *真实路由地址(主和备的路由地址不能一样)*
}

vrrp_instance VI_1 {      			                      *实例的名字,相同实例的备节点名字要和这个相同*
    state MASTER                                          *状态为MASTER,备节点状态需要为BACKUP*
    interface eth1                                        *通信(心跳)接口为eth1,此参数备节点设置和主节点相同*
    virtual_router_id 55                                  *虚拟路由ID为55,要和备节点相同* 
    priority 150                                          *优先级为150,备节点的优先级必须比此数字低*
    advert_int 1                                          *通信检查间隔时间1秒*
    authentication {                                      *密码验证(一般用默认)*
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                                        虚拟IP地址(VIP)
        192.168.200.66/24 dev eth0 label eth0:1       *虚拟IP,即VIP为192.168.200.66,子网掩码为24位,绑定接口为eth0,别名为eth0:1,此参数备节点设置和主节点相同*
   }
}

lb02 备服务器设置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id lb01
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.66/24 dev eth0 label eth0:1
    }
}

双实例高可用双主模式的配置文件
lb01主服务器增加VI_2实例

vrrp_instance VI_2 {
    state BACKUP
    interface eth1
    virtual_router_id 60
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.67/24 dev eth0 label eth0:2
   }
}

lb02备服务器增加VI_2实例

vrrp_instance VI_2 {
    state MASTER
    interface eth1
    virtual_router_id 60
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.67/24 dev eth0 label eth0:2
    }
}


解决多组Keepalived服务器在一个局域网的冲突问题

global_defs {

router_id LVS_19
vrrp_mcast_group4 224.0.0.19    #这个就是指定多播地址的配置

}

高可用服务只针对物理服务器问题解决方案
keepalived是针对物理服务器出问题的,但是如果主服务器的nginx服务断掉,而keepalived服务继续运行,用户无法通过这个主服务器达到资源目的,所以设置个脚本,如下:

while true
do
    if [ `netstat -antup | grep nginx | wc -l` -ne 1 ];then
        /etc/init.d/keepalived stop
    fi
    sleep 5
done

脚本的基本思想是若没有80端口存在,就停掉Keepalived服务实现释放本地的VIP。在后台执行上述脚本并检查。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值