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
相关推荐
苹果醋38 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
苹果醋318 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
苹果醋31 天前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
一心只为学1 天前
PostgreSql+Pgpool-II配置高可用集群(超详细)
数据库·postgresql·高可用·pgpool
阿松哥哥20181 天前
linux环境使用源码方式安装nginx(centos)
linux·nginx·centos
与君共勉121382 天前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
okok__TXF2 天前
Nginx + Lua脚本打配合
nginx·lua
青灯文案12 天前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
小屁不止是运维2 天前
麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
linux·运维·服务器·nginx·中间件·架构
恩爸编程2 天前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题