高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)

简介: 高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)

0bc7b7bcd1fc4752b429566093397057.png

Pre


高可用 - 04 Keepalived编译安装

高可用 - 04 Keepalived编译安装安装Keepalived的过程中,指定了Keepalived配置文件的路径为/etc/Keepalived/Keepalived.conf .


cda0956fbf3e48fc9af355843f55f1ad.png


由于Keepalived.conf文件中可配置的选项比较多,这里根据配置文件所实现的功能,将Keepalived配置分为三类,分别是:

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

接下来一起看看Keepalived配置文件中一些常用配置选项的含义和用法。


Keepalived的全局配置


Keepalived的配置文件都是以块(block)的形式组织的,每个块的内容都包含在{}中,以“#”和“!”开头的行都是注释。全局配置就是对整个Keepalived都生效的配置,基本内容如下。


79ff377182ad4f319603f09c970e11dc.png


全局配置以“global_defs”作为标识,在“global_defs”区域内的都是全局配置选项


notification_email用于设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的Sendmail服务。

notification_email_from用于设置邮件的发送地址。

smtp_server用于设置邮件的SMTP服务器地址。

smtp_connect_timeout用于设置连接SMTP服务器的超时时间。

router_id表示运行Keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息。


Keepalived的VRRPD配置


VRRPD配置是Keepalived所有配置的核心,主要用来实现Keepalived的高可用功能。从结构上来看,VRRPD配置又可分为VRRP同步组配置和VRRP实例配置。


VRRP同步组配置


同步组是相对于多个VRRP实例而言的,在多个VRRP实例的环境中,每个VRRP实例所对应的网络环境会有所不同,假设一个实例处于网段A,另一个实例处于网段B,而如果VRRPD只配置了A网段的检测,那么当B网段主机出现故障时,VRRPD会认为自身仍处于正常状态,进而不会进行主备节点的切换,这样问题就出现了。


同步组就是用来解决这个问题的,将所有VRRP实例都加入到同步组中,这样任何一个实例出现问题,都会导致Keepalived进行主备切换。


下面是两个同步组的配置示例。

vrrp_sync_group G1 {
 group {
  VI_1
  VI_2
  VI_5
 }
 notify_backup "/usr/local/bin/vrrp.back arg1 arg2"
 notify_master "/usr/local/bin/vrrp.mast arg1 arg2"
 notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"
}
vrrp_sync_group G2 {
 group {
  VI_3
  VI_4
 }
}

其中,G1同步组包含VI_1、VI_2、VI_5三个VRRP实例,G2同步组包含VI_3、VI_4两个VRRP实例。这5个实例将在vrrp_instance段进行定义。


另外,在vrrp_sync_group段中还出现了notify_master、notify_backup、notify_fault和notify_stop 4个选项,这是Keepalived配置中的一个通知机制,也是Keepalived包含的4种状态。


notify_master:指定当Keepalived进入Master状态时要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本传入参数,因此灵活性很强。

notify_backup:指定当Keepalived进入Backup状态时要执行的脚本,同理,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。

notify_fault:指定当Keepalived进入Fault状态时要执行的脚本,脚本功能与前两个类似。

notify_stop:指定当Keepalived程序终止时需要执行的脚本。


VRRP实例配置


接下来我们看下VRRP实例的配置,也就是配置Keepalived的高可用功能。

VRRP实例段主要用来配置节点角色(主或从)、实例绑定的网络接口、节点间验证机制、集群服务IP等。

下面是实例VI_1的一个配置示例。

vrrp_instance VI_1 {
  state MASTER    
  interface eth0    
  virtual_router_id 51  
  priority 100  
  advert_int 1   
  mcast_src_ip <IPADDR>
  garp_master_delay 10 
track_interface {
   eth0 
   eth1
   }
  authentication {
    auth_type PASS
    auth_pass qwaszx
  }
  virtual_ipaddress {    
   #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>
    192.168.200.16
    192.168.200.17 dev eth1
    192.168.200.18 dev eth2
  }
  virtual_routes {
  #src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE>
    src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
    192.168.110.0/24 via 192.168.200.254 dev eth1
    192.168.111.0/24 dev eth2
    192.168.112.0/24 via 192.168.100.254
    192.168.113.0/24 via 192.168.100.252 or 192.168.100.253
  }
  nopreempt 
  preemtp_delay 300
}


vrrp_instance是VRRP实例开始的标识,后跟VRRP实例名称。


state用于指定Keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。


interface用于指定HA监测网络的接口。


virtual_router_id是虚拟路由器标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即在同一个vrrp_instance下,MASTER和BACKUP必须是一致的。


priority用于定义节点优先级,数字越大表示节点的优先级就越高。在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。


advert_int用于设定MASTER与BACKUP主机之间同步检查的时间间隔,单位是秒。


mcast_src_ip用于设置发送多播包的地址,如果不设置,将使用绑定的网卡所对应的IP地址。


garp_master_delay用于设定在切换到Master状态后延时进行Gratuitous arp请求的时间。


track_interface用于设置一些额外的网络监控接口,其中任何一个网络接口出现故障,Keepalived都会进入FAULT状态。


authentication用于设定节点间通信验证类型和密码,验证类型主要有PASS和AH两种,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。


virtual_ipaddress用于设置虚拟IP地址(VIP),又叫做漂移IP地址。可以设置多个虚拟IP地址,每行一个。之所以称为漂移IP地址,是因为Keepalived切换到Master状态时,这个IP地址会自动添加到系统中,而切换到BACKUP状态时,这些IP又会自动从系统中删除。Keepalived通过“ip address add”命令的形式将VIP添加进系统中。要查看系统中添加的VIP地址,可以通过“ip add”命令实现。“virtual_ipaddress”段中添加的IP形式可以多种多样,例如可以写成 “192.168.16.189/24 dev eth1” 这样的形式,而Keepalived会使用IP命令“ip addr add 192.168.16.189/24 dev eth1”将IP信息添加到系统中。因此,这里的配置规则和IP命令的使用规则是一致的。


virtual_routes和virtual_ipaddress段一样,用来设置在切换时添加或删除相关路由信息。使用方法和例子可以参考上面的示例。通过“ip route”命令可以查看路由信息是否添加成功。此外,也可以通过上面介绍的notify_master选项来代替virtual_routes实现相同的功能。


nopreempt设置的是高可用集群中的不抢占功能。在一个HA集群中,如果主节点死机了,备用节点会进行接管,主节点再次正常启动后一般会自动接管服务。对于实时性和稳定性要求不高的业务系统来说,这种来回切换的操作还是可以接受的。而对于稳定性和实时性要求很高的业务系统来说,不建议来回切换,毕竟服务的切换存在一定的风险和不稳定性,在这种情况下,就需要设置nopreempt这个选项。设置nopreempt可以实现主节点故障恢复后不再切回到主节点,让服务一直在备用节点下工作,直到备用节点出现故障才会进行切换。在使用不抢占功能时,只能在“state”状态为“BACKUP”的节点上设置,而且这个节点的优先级必须高于其他节点。


preemtp_delay用于设置抢占的延时时间,单位是秒。有时候系统启动或重启之后网络需要经过一段时间才能正常工作,在这种情况下进行主备切换是没必要的,此选项就用来设置这种情况发生时的时间间隔。在此时间内发生的故障将不会进行切换,而如果超过“preemtp_delay”指定的时间,并且网络状态异常,那么才开始进行主备切换。


相关文章
|
6月前
|
运维 算法 Linux
LVS详解(四)——LVS安装与配置命令
LVS详解(四)——LVS安装与配置命令
129 2
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
1128 0
|
2月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
72 8
LVS+Keepalived 负载均衡
|
2月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
63 5
|
4月前
|
网络协议 应用服务中间件 Linux
LVS介绍与配置
LVS介绍与配置
195 8
|
4月前
|
负载均衡 网络协议 算法
使用IPVSADM配置LVS负载均衡
使用IPVSADM配置LVS负载均衡
|
6月前
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
119 1
|
6月前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
6月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
211 2
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
384 1