Keepalived的配置详解

在初次安装后,在安装目录有个磨人的配置文件 ./etc/keepalived/keepalived.conf,将其复制到./etc/keepalived.conf,如果需要更多的配置示例,在./etc/keepalived/sample下有很多,可以借鉴。

一个功能比较完整的常用的keepalived配置文件,主要包含三块:全局定义块、VRRP实例定义块和虚拟服务器定义块。全局定义块是必须的,如果keepalived只用来做ha,虚拟服务器是可选的。下面是一个功能比较完整的配置文件模板:

一、内核参数

检查相关的内核参数

net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.enp0s3.arp_announce = 2
net.ipv4.conf.enp0s8.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.enp0s3.arp_ignore = 1
net.ipv4.conf.enp0s8.arp_ignore = 1

Tip 1 :没有上述的设置,出现无法ping 通 vip。

二、配置实例

# 全局定义块
global_defs
{
   #邮件通知 notification: 英文示意:通知,告示
   #指定keepalived在发生切换时需要发送email到的对象,一行一个
   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
   #标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到。
   #在局域网内应该是唯一的,注意和backup节点区分开。
   router_id KEEPALIVED.192.168.80.110

   #检查vrrp报文中的所有地址比较耗时,设置此标志的意思是如果接收的到报文和上一个报文来至同一个路由器
   #则不执行检查。默认是跳过检查
   #vrrp_skip_check_adv_addr

   #严格遵守vrrp协议,下面这些功能将会禁止:
   # 1.   0 VIP   2. unicast(单播) peers    3. vrrp 版本2的ipv6功能
   #vrrp_strict

   #小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 
  #arp报文 vrrp_garp_interval 0.001

   #小数类型,单位秒, 在一个网卡上每组na消息之间的延迟时间,默认为0
   vrrp_gna_interval 0.000001
}
#############################################################################
#应用层热备需要添加的内容
vrrp_script chk_nginx
{
        #执行脚本的路径
        script "/etc/nginx/check_nginx.sh"
        #调用脚本两次之间的间隔,默认为1秒
        interval 1
        #第二次调用脚本后多长时间没有回应的超时时间
        timeout 10
        weight 10 #weight可以参考:keepalived之vrrp_script总结
}
#############################################################################
#vrrp实例定义部分
vrrp_instance VI_1
{
    #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
    state BACKUP
    nopreempt
    interface enp0s8
    #这个默认没有,相当于心跳线接口,DR模式用的和上面的接口一样,也可以用机器上的其他网卡eth1,
    #用来防止脑裂。
    lvs_sync_daemon_inteface enp0s8
    #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。
    virtual_router_id 110
    #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
    priority 101 //backup比该值小
    #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
    advert_int 1
    #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
    #auth_pass 1111   据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 
    #使用相同的密码才能正常通信。
    #mcast_src_ip 192.168.80.110
    authentication
    {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同时这个ip 必须与我们在lvs 
    #客户端设定的vip 相一致!
    virtual_ipaddress
    {
        192.168.80.200/24 dev enp0s8
    }
    track_script
    {
        #调用检测脚本
        chk_nginx
        #chk_http_port
    }
}

以上是master的配置,backup的配置注意上面加红的部分。

Keepalived的配置详解》上有1条评论

  1. Pingback引用通告: Keepalived的安装与启动 | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>