当前位置: 首页 > news >正文

Keepalived的详细实操安装流程及其配置文件选项的详解

高可用集群软件——Keeepalived简介及其相关内容剖析https://coffeemilk.blog.csdn.net/article/details/151646501

一、Keepalived的安装部署

应用环境说明
序号应用环境说明
1一台物理机或虚拟机,使⽤RHEL9/Almalinux9.1及其更高系统(192.168.1.9)
2Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式

 1.1、直接使用yum命令在线安装

#直接使用yum包在线安装(但是这种方法安装的版本大概率会比较低)
#1-直接使用yum命令安装
yum install keepalived#2-如果需要lvs功能,还需要安装ipvs模块
yum install ipvsadm

 1.2、使用源码安装Keepalived

#使用Keepalived的源码编译安装详细流程#1-安装必要的源码编译环境
yum install -y gcc gcc-c++ wget popt-devel openssl openssl-devel#2-安装Keepalived所需的库
yum install -y  libnl3 libnl3-devel#3-下载Keepalived源码包到/data目录中且支持断点续传
wget https://keepalived.org/software/keepalived-2.3.4.tar.gz -c 0 -P /data#4-解压Keepalived
cd /data
tar -zxvf #5-进入Keepalived目录并检查当前系统是否符合编译环境(若报错则需要解决报错后再检查)
cd keepalived-2.3.4/
./configure   --sysconf=/etc#6-在Keepalived目录下编译源码
make#7-编译安装
make install#8-查看Keepalived编译安装好的路径(且将示例配置文件复制一份修改名称为【keepalived.conf】)
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf

二、Keepalived的配置

        Keepalived安装完成后的默认配置文件的是【/etc/Keepalived/keepalived.conf.sample】,Keepalived的所有配置均在这个配置文件中完成(默认情况下,Keepalived在启动时会找【/etc/Keepalived/Keepalived.conf】配置文件,若配置文件放在其他路径下,

通过【Keepalived  -f】参数指定配置文件的路径即可。

        在配置Keepalived.conf时,需要特别注意配置文件的语法格式,因为Keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能够启动,所以一定要保证配置文件正确。由于Keepalived.conf文件中可配置的选项比较多,这里根据配置文件所实现的功能,将Keepalived配置分为三类:

《1》全局配置(Global Configuration)。

《2》VRRPD配置。

《3》LVS配置。

 2.1、Keepalived的全局配置

Keepalived的配置

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

#Keepalived的全局配置内容示例:
! Configuration File for keepalived
global_defs  {notification_email {ck@gmail.comck@163.com}notification_email_from Keepalived@localhostsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL	 
}

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

注意:Keepalived的配置文件不会像Nginx那样会检测是否正确,就算配置的有问题也可以正常启动。

序号全局配置选项说明
1notification_email

设置报警邮件地址,可以设置多个,每行一个。

注意,如果要开启邮件报警,需要开启本机的Sendmail服务。

2notification_email_from设置邮件的发送地址。
3smtp_server设置邮件的smtp server地址。
4smtp_connect_timeout设置连接smtp server的超时时间(单位是:秒)。
5router_id表示运行Keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息。

 2.2、Keepalived的VRRPD配置

Keepalived的VRRPD配置

VRRPD配置是Keepalived所有配置的核心,主要用来实现Keepalived的高可用(HA)功能;VRRP实例段主要用来配置节点角色(主或从)、实例绑定的网络接口、节点间验证机制、集群服务IP等。

#VRRPD的配置示例
vrrp_instance VI_1 {state MASTER		interface eth0		virtual_router_id  151	priority 100	advert_int 1  	track_interface {eth0 eth1}authentication {auth_type PASSauth_pass qwaszx}virtual_ipaddress {		192.168.200.16192.168.200.17 dev eth1192.168.200.18 dev eth2}nopreempt preemtp_delay  300
notify_master "/etc/keepalived/master.sh "notify_backup "/etc/keepalived/backup.sh"notify_fault "/etc/keepalived/fault.sh"
}

VRRP配置以【vrrp_instance】作为标识,在这个实例中包含了若干配置选项,具体的配置项内容如表所示:

序号VRRPD配置选项说明
1vrrp_instance是VRRP实例开始的标识,后跟VRRP实例名称。
2state

指定Keepalived的角色:

【MASTER】表示此主机是主服务器。

【BACKUP】表示此主机是备用服务器。

3interface指定高可用(HA)监测网络的接口。
4virtual_router_id

是虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识

(即:在同一个vrrp_instance下,MASTER和BACKUP必须是一致的)。

5priority

定义节点优先级,数字越大表示节点的优先级就越高。

        在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。

6advert_int设定MASTER与BACKUP主机之间同步检查的时间间隔,单位是秒。
7track_interface设置一些额外的网络监控接口,其中任何一个网络接口出现故障,Keepalived都会进入FAULT状态。
8authentication

设定节点间通信验证类型和密码:

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

9virtual_ipaddress

设置虚拟IP地址(VIP),又叫做漂移IP地址;可以设置多个虚拟IP地址,每行一个。

《1》之所以称为漂移IP地址,是因为Keepalived切换到Master状态时,这个IP地址会自动添加到系统中,而切换到BACKUP状态时,这些IP又会自动从系统中删除。

《2》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命令的使用规则是一致的。

10nopreempt

设置的是高可用集群中的不抢占功能。

        在一个HA Cluster中,如果主节点死机了,备用节点会进行接管,主节点再次正常启动后一般会自动接管服务。这种来回切换的操作,对于实时性和稳定性要求不高的业务系统来说,还是可以接受的,而对于稳定性和实时性要求很高的业务系统来说,不建议来回切换,毕竟服务的切换存在一定的风险和不稳定性,在这种情况下,就需要设置nopreempt这个选项了。

        设置nopreempt可以实现主节点故障恢复后不再切回到主节点,让服务一直在备用节点工作,直到备用节点出现故障才会进行切换。在使用不抢占时,只能在“state”状态为“BACKUP”的节点上设置,而且这个节点的优先级必须高于其他节点。

11preemtp_delay

设置切换的延时时间(单位是秒)。

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

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

 2.3、Keepalived的LVS配置

  2.3.1、LVS配置——virtual_server

Keepalived的LVS配置——virtual_server

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

#Keepalived的LVS配置-virtual_server示例
virtual_server 192.168.12.200 80 {        delay_loop 6
lb_algo rr	
lb_kind DR 
persistence_timeout 50persistence_granularity  <NETMASK>
protocol TCP
sorry_server <IPADDR>  <PORT>。

LVS段的配置以【virtual_server】作为开始标识,此段内容有两部分组成:

《1》【real_server段】。

《2》【健康检测段】。

序号LVS选项说明
1virtual_server设置虚拟服务器的开始,后面跟虚拟IP地址和服务端口,IP与端口之间用空格隔开。
2delay_loop设置健康检查的时间间隔(单位是秒)。
3lb_algo设置负载调度算法,可用的调度算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的算法有rr和wlc。
4lb_kind设置LVS实现负载均衡的机制,有NAT、TUN和DR三个模式可选。
5persistence_timeout

会话保持时间(单位是秒)

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

6persistence_granularity此选项是配合persistence_timeout的,后面跟的值是子网掩码,表示持久连接的粒度。默认是255.255.255.255,也就是一个单独的客户端IP。如果将掩码修改为255.255.255.0,那么客户端IP所在的整个网段的请求都会分配到同一个real server上。
7protocol指定转发协议类型,有TCP和UDP两种可选。
8ha_suspend节点状态从Master到Backup切换时,暂不启用real server节点的健康检查。
9sorry_server相当于一个备用节点,在所有real server失效后,这个备用节点会启用。

  2.3.2、LVS配置——real_server

Keepalived的LVS配置——virtual_server
#Keepalived的LVS配置real_server段的一个配置示例:
real_server 192.168.12.132 80 {
weight 3
inhibit_on_failure
notify_up  <STRING> | <QUOTED-STRING>
notify_down <STRING> | <QUOTED-STRING>
}
序号LVS选项说明
1real_server是real_server段开始的标识,用来指定real server节点,后面跟的是real server的真实IP地址和端口,IP与端口之间用空格隔开。
2weight

用来配置real server节点的权值;权值大小用数字表示,数字越大,权值越高。

        设置权值的大小可以为不同性能的服务器分配不同的负载,为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配了系统资源。

3inhibit_on_failure表示在检测到real server节点失效后,把它的“weight”值设置为0,而不是从IPVS中删除。
4notify_up指定当Keepalived进入up状态后要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本传入参数,因此灵活性很强。
5notify_down在检测到real server节点服务处于DOWN状态后执行的脚本。

  2.3.3、LVS配置——健康检测

        健康检测段允许多种检查方式,常见的有【HTTP_GET】【SSL_GET】【TCP_CHECK】【SMTP_CHECK】【MISC_CHECK】。

Keepalived的LVS配置——健康检测【TCP_CHECK
#Keepalived的LVS配置——健康监测【TCP_CHECK】示例
TCP_CHECK  {connect_port 80connect_timeout  3 nb_get_retry  3 delay_before_retry  3 } 
序号LVS选项说明
1connect_port健康检查的端口,如果无指定,默认是real_server指定的端口。
2connect_timeout表示无响应超时时间(单位是秒)。
3nb_get_retry表示重试次数 。
4delay_before_retry表示重试间隔

Keepalived的LVS配置——健康检测【HTTP_GET和SSL_GET】
#Keepalived的LVS配置——健康监测【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 
} 
序号LVS选项说明
1url指定HTTP/SSL检查的URL信息,可以指定多个URL。
2path详细的URL路径。
3digest

SSL检查后的摘要信息,这些摘要信息可以通过genhash命令工具获取。

例如:genhash -s 192.168.12.80 -p 80 -u /index.html

4status_code指定HTTP检查返回正常状态码的类型,一般是200。
5bindto表示通过此地址来发送请求对服务器进行健康检查。

Keepalived的LVS配置——健康检测【MISC_CHECK】
#Keepalived的LVS配置——健康监测【MISC_CHECK】示例
MISC_CHECK
{
misc_path  /usr/local/bin/script.sh
misc_timeout  5
! misc_dynamic
}

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

序号LVS选项说明
1misc_path指定一个外部程序或者一个脚本路径。
2misc_timeout设定执行脚本的超时时间。
3misc_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(8=10-2)。

三、其他资料

Keepalived Linux 版https://keepalived.org/manpage.htmlKeepalived配置简介 — keepalived 1.4.3 文档https://keepalived-doc.readthedocs.io/zh-cn/latest/Keepalived%E9%85%8D%E7%BD%AE%E7%AE%80%E4%BB%8B.html


文章转载自:

http://FctORUDX.kxscs.cn
http://0fXraycT.kxscs.cn
http://6T8vN3Gk.kxscs.cn
http://P61abiOR.kxscs.cn
http://AvWJ0re7.kxscs.cn
http://7bgRJ87X.kxscs.cn
http://QRXJBRyh.kxscs.cn
http://Ce5xv2oC.kxscs.cn
http://awucrOpp.kxscs.cn
http://I2vNQihY.kxscs.cn
http://oxOqcFNx.kxscs.cn
http://DMAD5B61.kxscs.cn
http://WClJDNYC.kxscs.cn
http://Py99ojzm.kxscs.cn
http://wNaAw6cz.kxscs.cn
http://BlHFmdSx.kxscs.cn
http://EKOKTUaT.kxscs.cn
http://38EotylT.kxscs.cn
http://Kk3cqTKr.kxscs.cn
http://9VwwOIEQ.kxscs.cn
http://Fqgk8gPk.kxscs.cn
http://BcxT9RQC.kxscs.cn
http://JHWkFBXd.kxscs.cn
http://17oEzVly.kxscs.cn
http://L5w8xcM9.kxscs.cn
http://dd5FzGry.kxscs.cn
http://onqtWLmY.kxscs.cn
http://Hs1JhbeF.kxscs.cn
http://fkJqrnAR.kxscs.cn
http://DHeNLpFM.kxscs.cn
http://www.dtcms.com/a/383747.html

相关文章:

  • windows下,podman迁移镜像文件位置
  • 技能补全之正则表达式
  • Altium Designer(AD24)打开工程文件的几种方法
  • 26考研——内存管理(3)
  • 知识库缺乏维护和清理机制会造成哪些后果
  • android studio 华为 安装app 层层验证
  • 机器学习(三):决策树
  • 气缸夹爪机构分析
  • np.sum(e_x, axis=-1, keepdims=True)
  • kafka--基础知识点--5.3--producer事务
  • SCI论文组成部分
  • 软考 系统架构设计师系列知识点之杂项集萃(146)
  • C语言之函数
  • A050基于博途西门子1200PLC智能交通灯控制系统
  • shell文本处理三核心:grep(过滤匹配)、sed(流编辑)、awk(结构化分析)
  • 【WIT】编程百问一
  • ros2-tf树查看
  • 速通ACM省铜第四天 赋源码(G-C-D, Unlucky!)
  • MFC仿真
  • Leetcode 19 java
  • Vue3 响应式核心 API
  • linux故障排查
  • 为什么哈希表能 O(1) 查找?——C++ 哈希基础入门
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • 算法——递推求解
  • stm32之点灯
  • Qt---内存管理 对象树(Object Tree)机制
  • 人工智能通识与实践 - 计算机视觉技术
  • GAMES101:现代计算机图形学入门(Chapter1 计算机图形学概述)学习笔记
  • MATLAB 常用函数汇总大全和高级应用总结