青蛙学Linux—Keepalived配置文件详解
上一篇中在安装时指定了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。这样可以避免主备来回切换带来的风险。注意,只有state为BACKUP的节点才可以设置不抢占模式,且只需要在优先级高的节点上设置
- preemtp_delay:定义切换的延时时间,单位秒,在定义的时间内不会发生主备切换。用于重启网络或服务而不希望发生主备切换的场景
- notify_master:定义当Keepalived进入Master状态时要执行的脚本,可以是报警脚本,也可以是服务管理脚本,同时脚本允许传入参数
- notify_backup:定义当Keepalived进入Backup状态时执行的脚本
- notify_fault:定义当Keepalived进入Fault状态时执行的脚本
- notify_stop:定义当Keepalived停止后需要执行的脚本