KeepAlived使用介绍

目录

1、Introduce

2、基本使用

(1)安装

(2)配置文件

(3)使用教程


1、Introduce

keepalived是一个用于实现高可用性和负载均衡的开源软件。它提供了一种轻量级的方式来管理多个服务器,并确保它们在故障发生时继续正常工作。keepalived 通常用于构建高可用性的网络服务,如Web服务器、数据库服务器等。

下面以最简单的 Nginx 部署架构作业为例。下图中,44.101作为网关节点,当该节点出现故障后,整个系统都将无法提供服务,无法实现高可用。

为实现高可用,我们可以设置多台备用机,使用虚拟 IP 对外提供服务(使用 keepalived 实现),keepalived 负责维护 VIP 真实映射的 Nginx 服务器 IP。当正在被使用的 nginx 服务器出现故障时,keepalive 将会把 vip 重新映射到备机上,进行故障转移,对于使用 VIP 的用户而言是透明的。

2、基本使用

(1)安装

需要在实现高可用的 Nginx 服务器上都安装 KeepAlived。keepalived 程序可以实现进程级的检测,注意 keepalived 检测的是 keepalived 进程。具体解释可以参考 (3)使用教程。

Nginx 的安装存在两种方法:可以直接在线安装,例如 yum install keepalived;也可以从 Keepalived for Linux 下载源码后编译安装。

(2)配置文件

因为我是使用 yum 直接在线安装的,keepalived 的配置文件默认在 /etc/keepalived/keepalived.conf 下。我们需要在所有高可用节点内都进行配置。

下面只介绍最简单的必要配置,参数介绍详见注释。

bash 复制代码
# 下面只介绍必要的配置选项
global_defs{
  # 可自定义,每个节点需要不一样
  router_id lb111
}

# 实例名可自定义
vrrp_instance test{
  # 主节点只能有一个,从节点需要为 BACKUP
  state MASTER
  # 当前机器网卡,对外的
  interface ens33
  virtual_router_id 51
  # 竞选时的优先级,备用机可以适当降低
  priority 100
  # 检测间隔时间
  advert_int 1
  # 认证,同组内要保持一致
  authentication{
    auth_type PASS
    auth_pass 1111
  }
  # vip,虚拟 IP
  virtual_ipaddress{
    192.168.4.200
  }
}

(3)使用教程

配置文件编辑好之后,可以使用 systemctl start keepalived 启动高可用服务。

如下图所示,启动后,使用 ip addr 可以在 mater 节点上查询到 vip,直接 ping vip 也是可以通的。

当 master 节点 down 掉之后,vip 会漂移到备用节点。此时 Vip 也是可以 ping 通的,对用户是透明的。

Keepalive 实现高可用,是通过检测互相的 keepalive 进程是否在线实现的,所以对于 nginx 进程不在线了,keepalive 仍在线的场景是无法检测出来的。这样场景需要自定义常驻的检测shell脚本,当检测到 nginx 进程不存在时,直接 kill 或 stop 掉 keepaliced 进程。

bash 复制代码
#!/bin/bash

# 循环检测 nginx 服务是否存在
while true; do
    # 检查 nginx 服务状态
    nginx_status=$(systemctl is-active nginx.service)
    
    # 如果 nginx 服务状态为 active,则表示 nginx 服务正在运行
    if [ "$nginx_status" != "active" ]; then
        echo "Nginx 服务未运行,停止 keepalived 服务"
        # 停止 keepalived 服务
        systemctl stop keepalived.service
        break
    fi
    
    # 每秒钟检测一次
    sleep 1
done
相关推荐
叶北辰CHINA2 小时前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
Lansonli4 小时前
云原生(四十八) | Nginx软件安装部署
nginx·云原生·ecs服务器
加油,旭杏10 小时前
【中间件学习】fastCG介绍和使用
学习·nginx·fastcgi
苹果醋313 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
DieSnowK15 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
tanxiaomi21 小时前
vue 不是spa 单页面应用吗? 配置路由工作模式为history 后 ,为什么配置Nginx的 try_files 可以根据url 找到对应的文件?
前端·vue.js·nginx
twins35201 天前
配置Nginx以支持通过HTTPS回源到CDN
网络·nginx·https
astuv1 天前
在树莓派上部署开源监控系统 ZoneMinder
linux·nginx·树莓派·监控·摄像头·zoneminder·apache2
加油,旭杏1 天前
【中间件学习】Nginx快速入门(为了配置一个项目)
学习·nginx·中间件
-XWB-2 天前
【安全漏洞-中间件】nginx版本号屏蔽
运维·nginx·中间件