Keepalived源码安装

张开发
2026/4/12 1:09:15 15 分钟阅读

分享文章

Keepalived源码安装
Keepalived源码方式安装与配置1、安装0、先准备一台虚拟机可以正常上网配置了yum源的。1、先去官网下载指定版本的源码包官网https://www.keepalived.org/download.htmlwget https://www.keepalived.org/software/keepalived-2.3.4.tar.gz2、解压源码包tar -zxvf keepalived-2.3.4.tar.gz3、下载必要的依赖yum install -y gcc gcc-c wget popt-devel openssl openssl-devel yum install -y libnl3 libnl3-devel4、对环境做检查并把配置文件放在目标目录下./configure --sysconf/etc5、编译make6、安装make install7、设置开机自启动systemctl enable keepalived8、进入安装目录查看是否有关于keepalived的配置文件默认配置文件在/etc/keepalived/下面[rootlocalhost keepalived-2.3.4]# cd /etc/keepalived/ [rootlocalhost keepalived]# ls keepalived.conf.sample samples2、配置2.1 全局配置在上节安装Keepalived的过程中指定了Keepalived配置文件的路径为/etc/Keepalived/Keepalived.confKeepalived的所有配置均在这个配置文件中完成。由于Keepalived.conf文件中可配置的选项比较多这里根据配置文件所实现的功能将Keepalived配置分为三类分别是全局配置(Global Configuration)、VRRPD配置LVS配置。Keepalived的配置文件都是以块block的形式组织的每个块的内容都包含在{}中以“#”和“!”开头的行都是注释。全局配置就是对整个Keepalived都生效的配置基本内容如下! Configuration File for keepalived global_defs { notification_email { dba.gaogmail.com ixdba163.com } notification_email_from Keepalivedlocalhost smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL }全局配置以“global_defs”作为标识在“global_defs”区域内的都是全局配置选项其中notification_email用于设置报警邮件地址可以设置多个每行一个。注意如果要开启邮件报警需要开启本机的Sendmail服务。notification_email_from用于设置邮件的发送地址。smtp_server用于设置邮件的smtp server地址。smtp_connect_timeout用于设置连接smtp server的超时时间。router_id表示运行Keepalived服务器的一个标识是发邮件时显示在邮件主题中的信息。2.2 VRRPD配置VRRPD配置是Keepalived所有配置的核心主要用来实现Keepalived的高可用功能。下面进入VRRP实例的配置也就是配置Keepalived的高可用功能。VRRP实例段主要用来配置节点角色主或从、实例绑定的网络接口、节点间验证机制、集群服务IP等。下面是实例VI_1的一个配置样例。vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 151 priority 100 advert_int 1 track_interface { eth0 eth1 } authentication { auth_type PASS auth_pass qwaszx } virtual_ipaddress { 192.168.200.16 192.168.200.17 dev eth1 192.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”作为标识在这个实例中包含了若干配置选项分别介绍如下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主机之间同步检查的时间间隔单位是秒。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命令的使用规则是一致的。nopreempt设置的是高可用集群中的不抢占功能。在一个HA Cluster中如果主节点死机了备用节点会进行接管主节点再次正常启动后一般会自动接管服务。这种来回切换的操作对于实时性和稳定性要求不高的业务系统来说还是可以接受的而对于稳定性和实时性要求很高的业务系统来说不建议来回切换毕竟服务的切换存在一定的风险和不稳定性在这种情况下就需要设置nopreempt这个选项了。设置nopreempt可以实现主节点故障恢复后不再切回到主节点让服务一直在备用节点工作直到备用节点出现故障才会进行切换。在使用不抢占时只能在“state”状态为“BACKUP”的节点上设置而且这个节点的优先级必须高于其他节点。preemtp_delay用于设置切换的延时时间单位是秒。有时候系统启动或重启之后网络需要经过一段时间才能正常工作在这种情况下进行发生主备切换是没必要的此选项就是用来设置这种情况发生的时间间隔。在此时间内发生的故障将不会进行切换而如果超过“preemtp_delay”指定的时间并且网络状态异常那么才开始进行主备切换。notify_master指定当Keepalived进入Master状态时要执行的脚本这个脚本可以是一个状态报警脚本也可以是一个服务管理脚本。Keepalived允许脚本传入参数因此灵活性很强。notify_backup指定当Keepalived进入Backup状态时要执行的脚本同理这个脚本可以是一个状态报警脚本也可以是一个服务管理脚本。notify_fault指定当Keepalived进入Fault状态时要执行的脚本脚本功能与前两个类似。notify_stop指定当Keepalived程序终止时需要执行的脚本。2.3 LVS配置2.3.1 介绍由于Keepalived属于LVS的扩展项目因此 Keepalived可以与LVS无缝整合轻松搭建一套高性能的负载均衡集群系统。下面介绍下Keepalived配置文件中关于LVS配置段的配置方法。LVS段的配置以“virtual_server”作为开始标识此段内容有两部分组成分别是real_server段和健康检测段。下面是virtual_server段常用选项的一个配置示例virtual_server 192.168.12.200 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 persistence_granularity NETMASK protocol TCP sorry_server IPADDR PORT }下面介绍每个选项的含义。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会话保持时间单位是秒。这个选项对动态网页是非常有用的为集群系统中的session共享提供了一个很好的解决方案。有了这个会话保持功能用户的请求会一直分发到某个服务节点直到超过这个会话的保持时间。需要注意的是这个会话保持时间是最大无响应超时时间也就是说用户在操作动态页面时如果在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节点的健康检查。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状态后执行的脚本。2.3.2 健康检测健康检测段允许多种检查方式常见的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_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秒。2.3.3 实现http高可用配置案例下面是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路径。digestSSL检查后的摘要信息这些摘要信息可以通过genhash命令工具获取。例如genhash -s 192.168.12.80 -p 80 -u /index.html。status_code指定HTTP检查返回正常状态码的类型一般是200。bindto表示通过此地址来发送请求对服务器进行健康检查。

更多文章