01. 什么是 Keepalived?它解决了什么问题?

Keepalive(保活) 是计算机领域的核心机制,核心作用是维持连接有效性、检测异常、避免资源浪费,在网络协议、前端框架、系统服务中广泛应用。

在没有 Keepalived 之前,客户端访问一台 Nginx 或 HAProxy,这台代理服务器再把流量分给后端的 Web 服务器。

痛点: 这台代理服务器就是整个集群的心脏。一旦它宕机、断网或硬件损坏,整个系统直接瘫痪,后端有再多服务器也无济于事。

Keepalived 的出现: Keepalived 是一款用 C 语言编写的路由软件,它的核心目标是提供高可用性 (High Availability)。它通过在多台代理服务器之间虚拟出一个或多个 IP(VIP,Virtual IP),让客户端只认识这个 VIP。当主服务器挂掉时,备用服务器会瞬间接管 VIP,整个过程对客户端几乎是透明的。

核心灵魂:VRRP 协议详解

VRRP 最初是为了解决路由器单点故障设计的,Keepalived 完美地借用了这个思想。

VRRP 的工作机制(通俗版):

  • 角色划分: 在一个 Keepalived 集群中,服务器被划分为 Master (主节点) 和 Backup (备节点)。
  • 虚拟 IP (VIP): 它们共同持有一个或多个 VIP。正常情况下,VIP 绑定在 Master 的网卡上,所有流量都由 Master 处理。
  • 心跳检测 (组播): Master 会以极高的频率(通常是每秒 1 次)向网络中发送 VRRP 组播包(默认地址是 224.0.0.18),告诉所有人:“我还活着,我是老大”。
  • 无缝接管 (Failover): Backup 节点会一直安静地监听这些心跳包。如果 Backup 在设定好的时间(超时时间)内没有收到 Master 的心跳,它就会认为 Master 已经挂了。此时,优先级最高的 Backup 会立刻挺身而出,抢占 VIP,成为新的 Master,继续接客。
  • 原主恢复: 当原来的 Master 修复并重新上线后,如果它的配置优先级更高,它会重新夺回 VIP(这是抢占模式,也可以配置为非抢占模式避免来回切换的抖动)

2.KEEPLIVE的一些相关实验

2.1Keepalived实验环境设定

环境设定图

设定本地解析 vim /etc/hosts

同步本地解析

在ka1中开启时间同步服

在ka2中使用ka1的时间同步服务

检测是否同步

2.2Keepalived虚拟路由配置

Keepalived安装

配置虚拟路由

在master(ka1)

在ka2中

启动服务并查看ip

当ka1出故障时vip回调到ka2上

2.3日志分离

在ka1上

2.4Keepalived的子配置文件设定

在主配置文件中如果写入过多的配置不利于对于主配置文件的阅读

在主配置文件中设置子配置文件的路径

创建子配置文件 检测

2.5抢占模式

2.5.1.抢占模式( 默认的,谁优先级高就把vip放到哪里)

2.5.2.非抢占模式(持有vip只要vrrp通告正常就不做vip迁移)

在ka1主机中

在ka2主机中

关闭ka1和ka2的keepalive服务后再启动

vip再ka1上

再次关闭ka1的keepalive服务VIP在ka2上 再次开启ka1上的服务尽管ka1的优先级比较高但是vip依旧在ka2上

2.5.3延迟抢占

在ka1上

在ka2上

开启ka1和ka2的服务此时VIP在ka1上

关闭服务vip回到在ka2上

重启服务10秒内vip不会回到ka1上

10秒后

2.6 keepalived的单播模式

为什么要单播,组播模式使用的网址资源最少,但是不能跨网络,如果主备两台主机是跨网络的,那么只能启用单播来实现vrrp通告

2.7Keepalived双主模式

在ka1上

在ka2上

测试

ka1上停止服务ka2出现双主

关闭ka2重启服务ka1上出现双主

2.8实现IPVS的高可用性

配置RS1和2

在ka所有的主机中设置keepalive参数

下载ipvsadm并查看在ka1上的策略

关闭rs1上的httpd服务ka1上的策略发生变化

把ka1中的keepalived关闭ka2中自动生成lvs策略

2.9双主模式代理不同业务实现高可用

实验环境

在rs1和rs2上安装mariadb-server

测试

在ka1上

在ka2上

测试

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐