Linux环境下安装keepalived

说明:本案例在Linux系统(CentOS7)环境下进行,仅实现keepalived的安装和启动测试

一、keepalived介绍

keepalived是一个C语言开发的,围绕一个中央I/O多路复用器进行连接,以提供实时的网络设计,还提供了负载均衡和高可用性的框架
(1)负载均衡器主要是Linux Virtual Server(IPVS)内核模块
(2)高可用性通过虚拟路由器冗余协议(VRRP)实现的
(3)keepalived主要提供了两方面的功能:

  • LVS(Linux Virtual Server)系统集群节点的健康检查
  • 负载均衡器的故障转移

为了确保健壮性和稳定性,keepalived启动后,守护进程会被切分成三个不同的进程,其中一个主进程,两个子进程,每个子进程都有自己的调度I/O多路复用器,这种方式优化了VRRP调度的抖动
(1)主进程负责监视和创建子进程,主进程的健康框架叫做watchdog,每个子进程会打开一个accept unix域套接字,在守护进程引导时,主进程会连接那些unix域套接字并向子进程发送周期性(5秒)的hello数据包,如果主进程无法向远程连接的unix域套接字发送hello数据包,则会重启子进程
watchdog设计的好处:

  • 主进程发送到远程连接的子进程的hello数据包是通过I/O多路复用器调度完成,可以检测子进程调度框架中的死循环(deadloop)
  • 通过sysV信号检测死亡的子进程

(2)两个子进程分别负责VRRP功能和健康检查功能

守护进程拆分的设计,最小化了健康检查依赖库的使用,并将其自己的操作最小化到空闲主循环,以避免自身引起的故障

二、keepalived工作原理

keepalived高可用是靠VRRP进行通信的,VRRP通过竞选机制确定主备,主节点优先级高于备用节点,因此工作时,主节点会优先获取到所有的资源,备用节点处于等待状态,当主节点出现问题,备用节点就会接管主节点的资源,然后代替主节点对外服务,在keepalived服务期间,只有主节点服务器会一直发送VRRP广播包,告诉备用节点自己还活着,当备用节点监听不到主节点发送的数据包时,就会启动相关服务接管资源,接管速度最快可小于1秒

VRP竞选机制:
(1)如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被认定为主路由器
(2)如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器
(3)在没有IP地址拥有者和优先级相同的情况下,IP地址大的作为主路由器

VRRP路由器在工作过程中的三种状态:
(1)Initialize状态,系统启动进入该状态,在该状态下路由器不对VRRP报文做任何处理
(2)Master状态,主路由器
(3)Backup状态,备用路由器

三、keepalived组件

keepalived安装部署arm平台 linux安装keepalived_运维



四、keepalived安装

  1. 安装keepalived所需要的依赖包(gcc、openssl-devel、libnl3-devel、net-snmp-devel),建议使用yum install -y gcc openssl-devel libnl3-devel net-snmp-devel命令进行安装,如果手动下载依赖包进行安装,可能会存在依赖包无法找到依赖的问题
  2. keepalived安装部署arm平台 linux安装keepalived_keepalived安装部署arm平台_02

  3. 注:如果没有进行keepalived所需依赖环境的准备,在进行./configure编译的时候会报错
  4. 下载keepalived安装包,上传至服务器,并执行tar -zxvf keepalived-xxxx.tar.gz命令解压安装包
  5. keepalived安装部署arm平台 linux安装keepalived_linux_03

  6. cd到keepalived-xxxx目录下,通过执行./configure --help编译帮助命令可以看出,keepalived默认安装路径为/usr/local/bin,并且可以通过--prefix属性指定keepalived的安装路径
  7. keepalived安装部署arm平台 linux安装keepalived_keepalived安装部署arm平台_04

  8. 执行./configure --prefix=/usr/local/keepalived命令进行编译,本案例不使用默认安装路径,通过对--prefix属性进行赋值,定义自己需要的安装路径
  9. keepalived安装部署arm平台 linux安装keepalived_linux_05

  10. 编译完成后,可以看到keepalived的版本、编译环境等一些配置信息,如果编译不成功,一般情况下就是缺少keepalived的依赖
  11. 编译成功后,keepalived-xxx目录下会生成Makefile安装文件,文件中声明了一些文件生成路径相关的信息,通过执行vim Makefile命令可以进行查看,通过哦观察脚本文件内容可以看出,比如编译时声明的--prefix属性,编译时进行过声明,则取的是编译时定义的值,如果没有做过声明,则会取默认值
  12. keepalived安装部署arm平台 linux安装keepalived_linux_06

  13. 执行make && make install命令进行keepalived的安装
  14. keepalived安装部署arm平台 linux安装keepalived_keepalived安装部署arm平台_07

  15. cd到/usr/local/keepalived目录下,执行ls命令查看是否安装成功
  16. keepalived安装部署arm平台 linux安装keepalived_运维_08

  17. 因为在编译时,我们指定了keepalived的安装路径,因此keepalived的核心配置文件存放在指定安装路径/etc/keepalived/keepalived.confcd到核心配置文件所在目录下,执行cp keepalived.conf 指定安装路径/sbin命令,将keepalived配置文件赋值到启动文件目录下,方便keepalived的启动,也可以省略这步操作
  18. cd到sbin执行目录下,执行./keepalived -f keepalived.conf命令,指定配置文件启动keepalived服务
  19. keepalived默认日志存放在/var/log/messages中,执行vim /var/log/messages命令查看keepalived启动日志
  20. keepalived安装部署arm平台 linux安装keepalived_子进程_09

  21. 从上图可以看出,启动失败,失败原因就是配置文件中vrrp_garp_interval参数和vrrp_gna_interval参数的值不在给定范围内,eth33网卡不存在
    解决方法:
    ①将vrrp_garp_interval参数和vrrp_gna_interval参数的值改为给定的0.000001~4294.967295之间的数值
    ②执行ip addr命令,查看服务器网卡信息,配置文件中改为正确的名称
  22. 重新启动keepalived服务,并查看启动日志
  23. 执行ps ef|grep keepalived命令,查看keepalived进程情况
  24. keepalived安装部署arm平台 linux安装keepalived_linux_10

  25. 从上图发现,keepalived服务创建了三个进程,一个主进程,两个子进程,说明keepalived启动成功,执行ip addr命令可以发现,ens33网卡上已绑定配置文件中定义的虚拟ip:192.168.200.16