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
相关推荐
q***82915 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
梁正雄7 小时前
linux服务-Nginx+Tomcat+Redis之Session 共享
linux·nginx·tomcat
zhuyasen20 小时前
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
nginx·go·gin
a123560mh1 天前
国产信创操作系统银河麒麟常见软件适配(MongoDB、 Redis、Nginx、Tomcat)
linux·redis·nginx·mongodb·tomcat·kylin
百***35511 天前
Linux(CentOS)安装 Nginx
linux·nginx·centos
micefind1 天前
Nginx 反向代理完全指南:从安装到生产环境全流程
nginx
寂寞旅行1 天前
Nginx配置WSS安全WebSocket代理
websocket·nginx·安全
r***86981 天前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
暴躁哥1 天前
linux ubuntu 下安装nginx
linux·nginx·ubuntu
r***99822 天前
使用 Certbot 为 Nginx 自动配置 SSL 证书
运维·nginx·ssl