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
相关推荐
睡不醒的猪儿20 小时前
Nginx 服务优化与防盗链配置方案
运维·nginx
大佐不会说日语~20 小时前
使用 Cloudflare平台 + Docker + Nginx 完成网站 HTTPS 部署实战记录
nginx·docker·https·部署·cloudflare
Knight_AL20 小时前
使用 Nginx 为内网 Java 服务实现 HTTPS
java·nginx·https
坚持学习前端日记21 小时前
Nginx 搭建文件服务器
运维·服务器·nginx
徐同保1 天前
nginx接口超时,增加接口超时时间
运维·nginx
Benny的老巢1 天前
Mac上用XAMPP搭建局域网可访问的开发环境,让局域网内其他设备通过域名访问
nginx·macos·apache·xampp·php开发环境
岚天start2 天前
Docker部署NGINX实现服务四层转发方案
服务器·nginx·docker
微凉的衣柜2 天前
Windows Server 使用 Nginx 反向代理实现域名访问内网 Gradio 应用
运维·windows·nginx
上去我就QWER2 天前
什么是反向代理?
后端·nginx
小白冲鸭2 天前
苍穹外卖-前端环境搭建-nginx双击后网页打不开
运维·前端·nginx