Keepalived 双机高可用部署与配置手册

Keepalived 双机高可用部署与配置手册 本手册详细介绍了如何在双工控机物理节点以下简称 Node A 与 Node B上基于 Keepalived 部署高可用HA虚拟 IPVIP架构。本方案采用虚拟 IP 漂移设计以支持高可用外部流量访问系统。1. 离线安装指南工控机无网环境在工控机无法连接互联网且没有相同可联网 Kylin OS 系统的场景下需要采用源码包编译的方式进行离线安装。1.1 前置检查判断是否已安装 Keepalived在开始执行离线安装前可在终端中执行以下命令判断工控机本地是否已安装过 Keepalived# 检查当前系统已安装的 Keepalived 版本keepalived-v已安装若输出类似Keepalived v2.2.8 (10/04,2023)的版本号信息说明已安装成功可直接跳转到本手册的第2章 概述与网络架构或配置文件部分。未安装若系统提示bash: keepalived: command not found未找到命令代表尚未安装请继续按以下步骤执行源码包离线安装。1.2 下载 Keepalived 源码包在任意可联网的电脑上访问 Keepalived 官方下载页面Keepalived Downloads下载稳定版本的源码压缩包例如keepalived-2.2.8.tar.gz。1.3 拷贝并解压源码包使用 U 盘或其他介质将下载好的keepalived-2.2.8.tar.gz源码包拷贝到工控机上并在终端中执行以下命令进行解压tar-zxvfkeepalived-2.2.8.tar.gzcdkeepalived-2.2.81.4 编译与安装在源码解压目录下执行以下命令进行编译并安装到指定目录推荐安装至/usr/local/keepalived# 1. 配置编译参数./configure--prefix/usr/local/keepalived# 2. 编译并安装makemakeinstall# 3. 创建软链接将编译安装的配置目录映射到系统标准路径 /etc/keepalived极其重要方便后续统一配置管理ln-sf/usr/local/keepalived/etc/keepalived /etc/keepalived[!IMPORTANT]编译依赖项源码编译需要工控机本地已经安装了gcc、make以及开发依赖包如openssl-devel、libnl3-devel、ipset-devel等。如果配置或编译时提示缺少依赖通常需要挂载本地 Kylin OS 系统的安装 ISO 镜像作为本地 Yum 源以安装缺少的开发依赖包。程序与配置路径编译安装后默认的配置文件路径为/usr/local/keepalived/etc/keepalived/keepalived.conf通过上述步骤3建立软链接后也可以通过/etc/keepalived/keepalived.conf进行访问。执行程序绝对路径为/usr/local/keepalived/sbin/keepalived。请确保 Systemd 服务文件中的路径指向与此一致。2. 概述与网络架构根据系统设计外部流量需要通过统一的虚拟 IP 进行访问以便在单台工控机发生硬件损坏或服务崩溃时自动将流量切换至备份机实现秒级无感知切换。2.1 核心网络参数规划物理节点 A(Node A)节点 ID (router_id):s92物理网口 (enp7s0f1) IP:192.160.6.7物理节点 B(Node B)节点 ID (router_id):s93(注意该 ID 需与节点 A 唯一区分)物理网口 (enp7s0f1) IP:192.160.6.6高可用虚拟 IP (VIP)VIP:192.160.6.9(绑定在网口enp7s0f1用于 Spring Boot 后端服务主从高可用与外部统一访问)2.2 架构拓扑图访问 VIP: 192.160.6.9绑定/漂移工控机 Node B - 192.160.6.6反向代理Nginx 业务端口 8888Spring Boot 后端服务 82工控机 Node A - 192.160.6.7反向代理Nginx 业务端口 8888Spring Boot 后端服务 82服务调用端 / API调用 / WEB 浏览器Keepalived 虚拟 IPenp7s0f1 网口3. Keepalived 配置文件及详解Keepalived 的配置文件默认存放目录为/etc/keepalived/其中主配置文件路径为/etc/keepalived/keepalived.conf。[!IMPORTANT]在配置前请务必在工控机上执行以下命令创建子配置文件存放目录mkdir-p/etc/keepalived/conf.d3.1 节点 A (s92) 主配置文件在节点 A 的/etc/keepalived/keepalived.conf中写入以下配置开启子配置文件加载! Configuration File for keepalived global_defs { router_id s92 script_user root enable_script_security vrrp_skip_check_adv_addr vrrp_garp_interval 0.5 vrrp_gna_interval 0.5 } # 引入 conf.d 目录下的所有子配置文件 include /etc/keepalived/conf.d/*.conf3.2 节点 B (s93) 主配置文件在节点 B 的/etc/keepalived/keepalived.conf中写入以下配置! Configuration File for keepalived global_defs { router_id s93 # 修改为 s93确保局域网内唯一性 script_user root enable_script_security vrrp_skip_check_adv_addr vrrp_garp_interval 0.5 vrrp_gna_interval 0.5 } # 引入 conf.d 目录下的所有子配置文件 include /etc/keepalived/conf.d/*.conf3.3 关键配置参数详解interface(物理网卡接口):特别重要此处的网卡接口名称如enp7s0f1必须结合工控机的实际物理网口名称进行配置决不能照抄模板。如果 Node A 与 Node B 的网口名称不同必须按各自的实际情况分别修改。网口查询命令在工控机终端执行以下命令查看当前可用的网口接口名称# 方式一查看所有网口链路状态最通用、简洁iplinkshow# 方式二查看详细的 IP 地址与网口对应关系ipaddr在命令输出中找到处于UP状态且配置了对应局域网 IP例如192.160.6.7的网口名称如enp7s0f1、ens33等填入配置文件。enable_script_security:安全设置强制 Keepalived 在执行外部检查脚本时采用防越权限制。script_user root:指定运行检查脚本的用户为root请确保脚本文件路径安全不易被篡改。include /etc/keepalived/conf.d/*.conf:用于模块化管理配置文件Keepalived 会自动加载该目录下所有以.conf结尾的子配置文件。3.4 子配置文件spring_boot_ha.conf为了将不同的高可用组或服务配置进行模块化管理可以通过include指令在主配置文件中引入子配置文件。本系统的 Spring Boot 服务高可用子配置位于/etc/keepalived/conf.d/spring_boot_ha.conf。由于此高可用实例采用主备模式Master-Backup 抢占模式两台机器的配置有所不同1. 节点 A (s92 - 主节点) 子配置文件内容在Node A的/etc/keepalived/conf.d/spring_boot_ha.conf中写入以下配置加入非抢占和状态回调脚本# 写入子配置文件的内容 vrrp_script check_spring { script /etc/keepalived/check_spring_boot.sh interval 3 weight -20 fall 3 rise 2 } vrrp_instance VI_3 { state BACKUP # 修改为 BACKUP配合 nopreempt nopreempt # 开启非抢占模式 interface enp7s0f1 # 结合实际物理网口名称配置 virtual_router_id 53 priority 100 # 主节点初始优先级为 100 advert_int 1