Keepalived 高可用

发布时间:2022-06-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Keepalived 高可用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_777_0@Keepalived 介绍

    Keepalived是Linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。     它与HeartBeat实现类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供HA软件所需的基本功能,比如:心跳检测、资接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。     Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。     后来Keepalived又加入了VRRP的功能,VRRP(VrITrualRouterredundancyPRotocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。

功能

  • 基于 vrrp 协议完成地址流动
  • 为 vip 地址所在的节点生成 ipvs 规则(在配置文件中定义)
  • 为 ipvs 集群的各个RS做监控状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事物,以支持 nginx,haProxy等服务。

Keepalived 架构

官网地址:https://www.keepalived.org/documentation.htML 用户空间核心组件:

  • vrrp stack: VIP消息通告
  • checkers: 检测 real server
  • System call:实现 vrrp 协议状态转换时调用脚本的功能
  • SMTP: 邮件组件
  • IPVS wrapPEr: 生成 IPVS 规则
  • Netlink Reflector: 网络接口
  • WatchDog: 监控进程 控制组件: 提供keepalived.conf的解析器,完成 Keepalived 配置 IO复用器:针对网络目的而优化的自己的线程抽象 内存管理组件: 为某某些通用的内存管理功能(分配,重新分配,发布等)提供访问权限

    Keepalived 高可用

vrrp技介绍

  1. VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)将可以承担网关功能的路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关
  2. VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器
  3. VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息
  4. VRRP协议的实现有VRRPv2和VRRPv3两个版本,VRRPv2基于ipv4,VRRPv3基于IPv6
  5. VRRP路由器: 所有运行VRRP协议的路由器就叫做VRRP路由器
  6. VRRP备份组: 多台路由器被分到一个组中,在这个组中选举出一台主路由器,其他作为备份路由器。平常时候都是主路由器一个工作,备份路由器空闲,当主路由器故障后,从多台备份路由器中选举出一台替代故障的主路由器工作。这一组中的路由器构成了一个备份组。
  7. 虚拟路由器:虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。从备份组外面看备份组中的路由器,感觉组中的所有路由器就像一个一样,你可以理解为在一个组中: 主路由器+所有备份路由器=虚拟路由器。虚拟路由器有一个虚拟的IP地址和MAC地址。如果虚拟IP和备份组中的某台路由器的IP相同的话,那么这台路由器称为IP地址拥有者,并且作为备份组中的主路由器 Vrrp的三种状态:
  8. Initialize状态: 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处处理,可以理解为初始化
  9. Master状态: 路由器会发送VRRP通告,发送免费ARP报文。
  10. Backup状态: 接受VRRP通告。一般主路由器处于Master状态,备份路由器处于Backup状态。 Vrrp的工作过程
  11. 路由器使能VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。Master 路由器定期发送VRRP 通告报文,通知备份组内的其他设备自己工作正常;Backup 路由器则启动定时器等待通告报文的到来。
  12. 在抢占方式下,当Backup 路由器收到VRRP 通告报文后,会将自己的优先级与通告报 文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master 路由器;否则将保持Backup状态
  13. 在非抢占方式下,只要Master 路由器没有出现故障,备份组中的路由器始终保持Master 或Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器
  14. 如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP 通告报文,则认为Master 路由器已经无法正常工作,此时Backup 路由器会认为自己是Master 路由器,并对外发送VRRP 通告报文。备份组内的路由器根据优先级选举出Master 路由器,承担报文的转发功能

Keepalived 部署

在线安装

# Centos
yum install keepalived

# ubuntu 
apt install keepalived
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf

Ubuntu 编译安装

  1. 安装必要软件包
apt install libssl-dev openssl libpopt-dev gcc make
  1. 下载keepalived软件
wget https://www.keepalived.org/Software/keepalived-2.2.4.tar.gz
  1. 编译安装软件
tar xf keepalived-2.2.4.tar.gz 
cd keepalived-2.2.4/
./configure  --prefix=/usr/local/keepalived
  1. 软连接
ln -s /usr/local/keepalived/sbin/* /usr/sbin/
  1. 准备配置文件
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  1. 准备启动文件
sudo tee /usr/lib/systemd/system/keepalived.service <<-'EOF'
[Unit]
Description=Keepalive Daemon (LVS and VRRP)
After=network-online.target
Wants=network-online.target
# Only start if there is a configuration file
ConditionFileNotEmpty=/etc/keepalived/keepalived.conf

[Service]
Type=simple
# Read configuration VARiable file if it is present
environmentFile=-/etc/default/keepalived
ExecStart=/usr/sbin/keepalived --dont-fork $DAEMON_ARGS
ExecReload=/bin/kill -HUP $MaiNPID

[Install]
WantedBy=multi-user.target
EOF
  1. 启动软件测试
root@ops103:~# systemctl enable keepalived.service --now
root@ops103:~# systemctl status keepalived.service 
● keepalived.service - Keepalive Daemon (LVS and VRRP)
     Loaded: loaded (/lib/systemd/system/keepalived.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Thu 2022-01-06 11:33:31 UTC; 1s ago
    Process: 27578 ExecStart=/usr/sbin/keepalived --dont-fork $DAEMON_ARGS (code=exited, status=0/SUCCESS)
   Main PID: 27578 (code=exited, status=0/SUCCESS)

Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Activating healthchecker for service [192.168.200.2]:tcp:1358 for VS [10.10.10.2]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Activating healthchecker for service [192.168.200.3]:tcp:1358 for VS [10.10.10.2]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Activating healthchecker for service [192.168.200.4]:tcp:1358 for VS [10.10.10.3]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Activating healthchecker for service [192.168.200.5]:tcp:1358 for VS [10.10.10.3]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Shutting down service [192.168.201.100]:tcp:443 From VS [192.168.200.100]:tcp:443
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Shutting down service [192.168.200.2]:tcp:1358 from VS [10.10.10.2]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Shutting down service [192.168.200.3]:tcp:1358 from VS [10.10.10.2]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Shutting down service [192.168.200.4]:tcp:1358 from VS [10.10.10.3]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Shutting down service [192.168.200.5]:tcp:1358 from VS [10.10.10.3]:tcp:1358
Jan 06 11:33:31 ops103.super-ops.top Keepalived_healthcheckers[27594]: Stopped
root@ops103:~# 

脚本宝典总结

以上是脚本宝典为你收集整理的Keepalived 高可用全部内容,希望文章能够帮你解决Keepalived 高可用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。