一、keepalive基础介绍
1.1Keepalive与VRRP
Keepalive 是一种用于监视系统或服务是否处于活动状态的机制。在网络环境中,它通常指定一个周期性的信号或数据包,用于检测设备、服务或连接是否仍然处于活动状态。如果设备或服务停止响应,相应的监视器将触发警报或采取预定义的操作。
VRRP 是一种用于提供冗余路由器功能的协议,通过允许多个路由器共享同一个虚拟 IP 地址来提供冗余。这样,即使其中一个路由器失效,网络流量仍然可以被另一个路由器接管,从而保证了网络的连通性和可用性。
这两种技术通常结合使用,因为 Keepalive 可以用于监视 VRRP 路由器的活动状态。如果 VRRP 主要路由器失效,备份路由器可以通过接收不再有主要路由器发送的 keepalive 信号来检测到这一事件,并迅速接管虚拟 IP 地址,从而确保网络的连通性。
1.2VRRP相关技术:
通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式,延迟抢占模式
安全认证:如没有安全认证,不在集群中的keeplive服务器设置超高的优先级,会造成事故
工作模式:
- 主/备:单虚拟路径器
- 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)
1.3工作原理
Keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,保证集群高可用的一个服务软件,用来防止单点故障。将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。
IPV4总共三种通信方式:单播,组播,广播。组播是指以224.0.0.0地址作为通信地址的一种方式。
1.4模块
分别是core、check和vrrp。
- core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
- check负责健康检查,包括常见的各种检查方式。
- vrrp模块是来实现VRRP协议的。
1.5架构
用户空间核心组件:
① vrrp stack:VIP消息通告,用来管理虚拟ip
② checkers:监测real server(简单来说 就是监控后端真实服务器的服务)是否存活
③ system call:实现 vrrp 协议状态转换时调用脚本的功能
④ SMTP:邮件组件(报警邮件)
⑤ IPVS wrapper:生成IPVS规则(直接生成ipvsadm)
⑥ Netlink Reflector:网络接口(将虚拟地址ip(vip)地址飘动)
⑦ WatchDog:监控进程(整个架构是否有问题)
⑧ 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
⑨ IO复用器:针对网络目的而优化的自己的线程抽象
⑩ 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限
keeplive可以配合ngnix等软件,反向代理
1.6安装
yum install keepalived -y
1.7Keepalived 相关文件:
软件包名:keepalived
主程序文件:/usr/sbin/keepalived
主配置文件:/etc/keepalived/keepalived.conf
配置文件示例:/usr/share/doc/keepalived/
Unit File单元文件:/lib/systemd/system/keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived CentOS
1.7.1配置组成
/etc/keepalived/keepalived.conf 配置组成:
① 全局配置:这部分包括全局参数的定义,例如进程 ID 文件、日志文件路径、通知邮箱地址等。全局配置通常用于指定整体行为和设置。
② 模块配置:Keepalived 配置文件中会包含关于 VRRP 或者 LVS 模块的配置。对于 VRRP 模块,需要定义虚拟路由器的标识符、优先级、虚拟 IP 地址以及监视其他路由器可用性所需的健康检查。对于 LVS 模块,需要定义负载均衡器的设置,包括虚拟服务器、后端服务器池、负载均衡算法等。
③ VRRP 实例配置:在 VRRP 模式下,配置文件中会包含一个或多个 VRRP 实例的配置。每个实例都会定义一个独立的虚拟路由器,包括其标识符、优先级、虚拟 IP 地址、健康检查设置等。
④ LVS 实例配置:在 Load Balancer 模式下,配置文件中会包含一个或多个 LVS 实例的配置。每个实例会定义一个独立的负载均衡服务,包括虚拟服务器、后端服务器池、负载均衡算法等设置。
⑤ 状态转换脚本:Keepalived 允许用户定义状态转换时执行的自定义脚本,这些脚本可以在主备切换时执行特定的操作,如通知管理员、启动或停止相关服务等。
1.7.2全局配置:
全局配置参数定义了邮件通知设置、路由器标识符以及 VRRP 的一些行为特性,确保在需要时可以进行状态通知,并控制 VRRP 协议的一些细节行为。
global_defs {
notification_email { #定义了接收通知邮件的邮箱地址列表
[email protected]
[email protected]
[email protected]
}
notification_email_from Alexandre.Cassen@firew