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

这篇具有很好参考价值的文章主要介绍了高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

keepalived 配置,【高可用架构】,服务器,网络,运维


Pre

高可用 - 04 Keepalived编译安装

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

keepalived 配置,【高可用架构】,服务器,网络,运维

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

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

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


Keepalived的全局配置

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

keepalived 配置,【高可用架构】,服务器,网络,运维

全局配置以“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_faultnotify_stop 4个选项,这是Keepalived配置中的一个通知机制,也是Keepalived包含的4种状态。

  • notify_master:指定当Keepalived进入Master状态时要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本传入参数,因此灵活性很强。
  • notify_backup:指定当Keepalived进入Backup状态时要执行的脚本,同理,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。
  • notify_fault:指定当Keepalived进入Fault状态时要执行的脚本,脚本功能与前两个类似。
  • notify_stop:指定当Keepalived程序终止时需要执行的脚本。

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”指定的时间,并且网络状态异常,那么才开始进行主备切换。


keepalived 配置,【高可用架构】,服务器,网络,运维


Keepalived的LVS配置

由于Keepalived属于LVS的扩展项目,因此,Keepalived可以与LVS无缝整合,轻松搭建一套高性能的负载均衡集群系统。

LVS段的配置以“virtual_server”作为开始标识,此段内容有两部分组成,分别是real_server段和健康检测段

下面是virtual_server段常用选项的一个配置示例。

virtual_server 192.168.200.100 443 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 192.168.201.100 443 {
        weight 1
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}


  • virtual_server:设置虚拟服务器的开始,后面跟虚拟IP地址和服务端口,IP与端口之间用空格隔开。

  • delay_loop:设置健康检查的时间间隔,单位是秒。

  • lb_algo:设置负载调度算法,可用的调度算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的算法有rr和wlc。

  • lb_kind:设置LVS实现负载均衡的机制,有NAT、TUN和DR三个模式可选。

  • persistence_timeout:会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的会话共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会一直分发到某个服务节点,直到超过这个会话的保持时间。需要注意的是,这个会话保持时间是最大无响应超时时间。也就是说,用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制。

  • persistence_granularity:此选项是配合persistence_timeout的,后面跟的值是子网掩码,表示持久连接的粒度。默认是255.255.255.255,也就是一个单独的客户端IP。如果将掩码修改为255.255.255.0,那么客户端IP所在的整个网段的请求都会分配到同一个real server上。

  • protocol:指定转发协议类型,有TCP和UDP两种可选。

  • ha_suspend:节点状态从Master到Backup切换时,暂不启用real server节点的健康检查。

  • virtualhost:在通过HTTP_GET/ SSL_GET做健康检查时,指定的Web服务器的虚拟主机地址。

  • sorry_server:相当于一个备用节点,在所有real server失效后,这个备用节点会启用。

real_server段的一个配置示例

 real_server 192.168.12.132 80 {
	weight 3
	inhibit_on_failure
	notify_up <STRING> | <QUOTED-STRING>
	notify_down <STRING> | <QUOTED-STRING>
}

  • real_server:是real_server段开始的标识,用来指定real server节点,后面跟的是real server的真实IP地址和端口,IP与端口之间用空格隔开。
  • weight:用来配置real server节点的权值。权值大小用数字表示,数字越大,权值越高。设置权值的大小可以为不同性能的服务器分配不同的负载,为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源。
  • inhibit_on_failure:表示在检测到real server节点失效后,把它的“weight”值设置为0,而不是从IPVS中删除。
  • notify_up:此选项与上面介绍过的notify_maser有相同的功能,后跟一个脚本,表示在检测到real server节点服务处于UP状态后执行的脚本。
  • notify_down:表示在检测到real server节点服务处于DOWN状态后执行的脚本。
    健康检测段允许多种检查方式,常见的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK

TCP_CHECK

首先看关于TCP_CHECK检测方式的示例。

TCP_CHECK {
       connect_port 80
       connect_timeout 3 
       nb_get_retry 3 
       delay_before_retry 3 
    }

下面介绍每个选项的含义。

  • connect_port:健康检查的端口,如果不指定,默认是real_server指定的端口。
  • connect_timeout:表示无响应超时时间,单位是秒,这里是3秒超时。
  • nb_get_retry:表示重试次数,这里是3次。
  • delay_before_retry:表示重试间隔,这里是间隔3秒。

keepalived 配置,【高可用架构】,服务器,网络,运维


HTTP_GET & SSL_GET

下面是关于HTTP_GET和SSL_GET检测方式的示例。

HTTP_GET |SSL_GET
{
  url {     
  path /index.html
  digest e6c271eb5f017f280cf97ec2f51b02d3
  status_code  200 
  }
	connect_port 80
	bindto 192.168.12.80  
	connect_timeout 3
	nb_get_retry 3 
	delay_before_retry 2 
}

下面介绍每个选项的含义。

  • url:用来指定HTTP/SSL检查的URL信息,可以指定多个URL。
  • path:后跟详细的URL路径。
  • digest:SSL检查后的摘要信息,这些摘要信息可以通过genhash命令工具获取。例如:- genhash -s 192.168.12.80 -p 80 -u /index.html
  • status_code:指定HTTP检查返回正常状态码的类型,一般是200。
  • bindto:表示通过此地址来发送请求对服务器进行健康检查。

keepalived 配置,【高可用架构】,服务器,网络,运维


MISC_CHECK

下面是关于MISC_CHECK检测方式的示例。

MISC_CHECK
{
	misc_path /usr/local/bin/script.sh
	misc_timeout 5
	! misc_dynamic
}

MISC健康检查方式可以通过执行一个外部程序来判断real server节点的服务状态,使用非常灵活。以下是常用的几个选项的含义。

  • misc_path:用来指定一个外部程序或者一个脚本路径。
  • misc_timeout:设定执行脚本的超时时间。
  • misc_dynamic:表示是否启用动态调整real server节点权重,“!misc_dynamic”表示不启用,相反则表示启用。在启用这功能后,Keepalived的healthchecker进程将通过退出状态码来动态调整real server节点的“weight”值,如果返回状态码为0,表示健康检查正常,real server节点权重保持不变;如果返回的状态码为1,表示健康检查失败,那么就将real server节点权重设置为0;如果返回的状态码为2~255之间的任意数值,表示健康检查正常,但real server节点的权重将被设置为返回状态码减2,例如返回的状态码为10,real server节点权重将被设置为8(10−2)。

在默认情况下,Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件,如果配置文件放在其他路径下,通过“Keepalived -f”参数指定配置文件的路径即可。

在配置Keepalived.conf时,需要特别注意配置文件的语法格式,因为Keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能够启动,所以一定要保证配置文件正确。

keepalived 配置,【高可用架构】,服务器,网络,运维文章来源地址https://www.toymoban.com/news/detail-798597.html

到了这里,关于高可用 - 05 Keepalived配置(全局配置、VRRPD、LVS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • LVS +Keepalived高可用群集

    LVS +Keepalived高可用群集

    Keepalived是一种用于实现高可用性的软件,它主要用于服务器和网络设备的故障转移和负载均衡。Keepalived使用VRRP协议来实现故障转移,并结合健康检查和负载均衡算法来确保服务的高可用性。 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单

    2024年02月13日
    浏览(7)
  • keepalived+lvs实现高可用

    目录 环境 1.配置real-server服务器 2.配置keepalived和lvs 3.测试: keepalived+lvs实现高可用: lvs可以监控后端服务器,当服务器宕机之后可以对其进行故障切换。 keepalived是对VIP进行检测,当某一个主机的vip错误,则会将vip漂移到另一个节点上。 5台主机---(两台主机--keeplived,lvs 

    2024年02月12日
    浏览(14)
  • LVS+Keepalived 高可用群集

    LVS+Keepalived 高可用群集

    一.背景   企业应用中,单点服务器承担应用存在单点故障的危险   单点故障一旦发生,企业服务将发生中断,造成极大的危害   为解决单点故障,而引入keepalived 专为LVS和HA设计的一款健康检查工具 支持故障自动切换(Failover) 支持节点健康状态检查(Health Checking) 判断LVS负载

    2024年04月12日
    浏览(11)
  • lvs+keepalived高可用集群

    keepalive为LVS应运而生的高可用服务。LVS的调度器无法做高可用,于是keepalive这个软件,实现的是调度器的高可用。但是, keepalive不是专门为LVS集群服务的,也可以做其他代理服务器的高可用(面试) LVS的高可用集群:主调度器和备调度器(可以有多个)一主两备或者一主一

    2024年02月08日
    浏览(7)
  • LVS+Keepalived 高可用集群

    LVS+Keepalived 高可用集群

    支持故障自动切换(Failover) 支持节点健康状态检查(Health Checking) 基于vrrp协议完成地址流动 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 为ipvs集群的各RS做健康状态检测 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务 官方

    2024年02月07日
    浏览(9)
  • 部署LVS+Keepalived高可用集群

    部署LVS+Keepalived高可用集群

    目录 一、keepalived概述 1.1管理LVS负载均衡软件 1.2VRRP(Virtual Router Redundancy Protocol) 原理 二、keepalived服务的重要功能 2.1自动切换(failover) 2.2健康检查(health checking) 2.3高可用(HA) 三、L4和L7负载均衡的区别 四、keepalive故障自动切换 4.1抢占与非抢占 五、keeplived体系主要模块

    2024年02月13日
    浏览(11)
  • LVS +Keepalived 高可用群集部署

    LVS +Keepalived 高可用群集部署

    在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。 Keepalived是一个基于VRRP协议来实现的LVS服务高可用方

    2024年02月09日
    浏览(11)
  • Keepalived+LVS部署高可用集群

    集群环境 主机 角色 服务 192.168.110.134 MASTER Keepalived 192.168.110.137 BACKUP Keepalived 192.168.110.136 Real server1 HTTPD 192.168.110.145 Real server2 HTTPD MASTER配置 BACKUP配置 检查Virtual IP是否漂移 IPVS检查 前提下载ipvsadm MASTER BACKUP Real Server配置 附上个人写的小脚本 大家可以根据自己需要做调整。

    2024年02月12日
    浏览(13)
  • LVS+Keepalived 高可用群集实战部署

    LVS+Keepalived 高可用群集实战部署

    1.LVS Linux虚拟服务器(Linux Virtual Server) LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法 2、Keepalived工作原理和作用 Keepalived 是一个基于VRRP协议来实现的LVS高可用方案,可以解决静态路由出现的单点故障问题。 在一

    2024年02月08日
    浏览(12)
  • LVS-keepalived实现高可用

    LVS-keepalived实现高可用

    本章核心: Keepalived为LVS应运而生的高可用服务。LVS的调度无法做高可用,预算keepalived这个软件,实现了调度器的高可用。 但是:Keeplived不是专门为LVS集群服务的,也可以做其他服务器的高可用 LVS的高可用集群:主调度器和备调度器(可以有多个)一般都是一主两备,一主

    2024年02月08日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包