上一篇中在安装时指定了Keepalived的配置文件目录,所以这里Keepalived的配置文件为/etc/keepalived/keepalived.conf,Keepalived所有的配置都在这个文件中。由于Keepalived配置文件中的配置项比较多,所以这里按照功能将Keepalived的配置文件分为以下三部分:

  • 全局配置(Global Configuration)
  • VRRP配置
  • LVS配置

Keepalived的配置文件是以块(block)的形式组织的,每个块的内容都包含在{}中,以#开头的行均为注释。

注意:{}前面必须有一个空格;另外,Keepalived没有配置文件检测机制,就算是配置文件错误Keepalived也可以正常启动,但无法正常工作。

这里首先使用Keepalived的HA功能,所以之介绍Keepalived配置文件中的全局和VRRP部分的配置。

1、全局配置

简单的全局配置如下:



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 LVS_DEVEL
}



  • notification_email:定义接收报警邮件的地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要本机开启sendmail服务
  • notification_email_from:定义邮件的发送地址
  • smtp_server:定义发送邮件的SMTP服务器地址
  • smtp_connect_timeout:定义连接SMTP服务器的超时时间
  • router_id:定义Keepalived服务器的表示,发送邮件时显示在邮件主题中

2、VRRP部分配置

VRRP部分配置是Keepalived所有配置的核心,主要用来实现Keepalived的高可用功能。VRRP部分主要用来配置节点角色(主或从)、实例绑定的网络接口、节点间的验证机制、虚拟IP等。以下为常用的一些配置项:



vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    track_interface {
	eth0 
	eth1
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
    nopreempt 
    preemtp_delay  300
    notify_master "xxx.sh "
    notify_backup "xxx.sh"
    notify_fault "xxx.sh"
    notify_stop "xxx.sh"
}



VRRP部分以vrrp_instance做为标识,在这个实例中包含若干配置项:

  • vrrp_instance:一个VRRP实例的开始,后跟自定义的实例名称
  • state:定义此台Keepalived的角色,MASTER表示主服务器,BACKUP表示备用服务器
  • interface:定义Keepalived监测的网络接口
  • virtual_router_id:定义虚拟路由标识,一个数字。同一个HA集群中的Master和Backup的虚拟路由标识必须一致
  • priority:定义节点优先级,数字越大表示优先级越高。在一个HA集群中,Master的优先级最高,而优先级高的Backup更有可能被选举为下一个Master
  • advert_int:定义Master和Backup之间检测的时间间隔,单位秒
  • track_interface:定义额外监控的网络接口,其中任何一个接口故障Keepalived都会进入FAULT状态
  • authentication:定义节点间的通信验证类型和密码。auth_type用于定义验证类型,有PASS和AH两种;auth_pass用于定义密码,各个节点间的密码必须相同才可以正常通信
  • virtual_ipaddress:定义虚拟IP地址(VIP),可设置多个虚拟IP,每行一个。Keepalived会将虚拟IP使用系统命令ip address add添加到Master的操作系统中,所以可以通过ip addr命令查看添加的虚拟IP;添加IP的方式多种多样,可以直接使用IP地址,也可以使用如xxx.xxx.xxx.xxx dev eth0的方式将虚拟IP绑定到具体的网络接口,也可以使用掩码,如xxx.xxx.xxx.xxx/24的形式
  • nopreempt:定义节点的不抢占功能。不抢占功能是在集群进行了一次主备切换后,当原先的Master恢复正常之后,不会再次成为Master,而是等待当前运行的Master故障之后才会再次成为Master。这样可以避免主备来回切换带来的风险。注意,只有stateBACKUP的节点才可以设置不抢占模式,且只需要在优先级高的节点上设置
  • preemtp_delay:定义切换的延时时间,单位秒,在定义的时间内不会发生主备切换。用于重启网络或服务而不希望发生主备切换的场景
  • notify_master:定义当Keepalived进入Master状态时要执行的脚本,可以是报警脚本,也可以是服务管理脚本,同时脚本允许传入参数
  • notify_backup:定义当Keepalived进入Backup状态时执行的脚本
  • notify_fault:定义当Keepalived进入Fault状态时执行的脚本
  • notify_stop:定义当Keepalived停止后需要执行的脚本