Ubuntu 24.04 离线安装 Keepalived 2.2.8 完整指南

本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。

在某些生产环境中,服务器无法连接互联网,需要采用离线方式安装Keepalived。本文详细介绍在Ubuntu 24.04系统上离线安装Keepalived 2.2.8的完整步骤,包括下载安装包、安装依赖项、按顺序安装Keepalived组件以及后续配置,帮助运维人员在离线环境下成功部署Keepalived高可用服务。

离线安装概述

离线安装Keepalived适用于以下场景:

  • 内网环境或安全要求较高的生产环境
  • 无法访问外网或需要严格网络隔离的服务器
  • 需要离线部署高可用服务的场景

与在线安装相比,离线安装需要手动下载Keepalived安装包和依赖项,并按照正确的顺序进行安装,但能够保证在离线环境下正常运行。

一、下载离线安装包

1. 下载Keepalived安装包

从Ubuntu官方仓库下载适用于Ubuntu 24.04的Keepalived 2.2.8离线安装包。

下载地址

安装包名称

keepalived_2.2.8-1build2_amd64.deb

注意事项

  • 确保选择与操作系统架构匹配的版本(amd64或arm64)
  • 建议下载稳定版本,避免使用测试版本
  • 下载完整的deb包,包含所有必要的组件

2. 确定依赖项

在有网络的Ubuntu 24.04系统上,使用以下命令查看Keepalived的所有依赖项:

bash
apt-cache depends keepalived

或者查看更详细的依赖信息:

bash
apt-cache show keepalived

二、Keepalived依赖项列表

Keepalived 2.2.8在Ubuntu 24.04上的主要依赖项包括:

1. 核心依赖包

libipset13

  • 用于IP集管理
  • 下载命令:apt-get download libipset13
  • 包名:libipset13_*_amd64.deb

libnl-3-200

  • Netlink库,用于Linux内核通信
  • 下载命令:apt-get download libnl-3-200
  • 包名:libnl-3-200_*_amd64.deb

libnl-genl-3-200

  • Netlink通用库
  • 下载命令:apt-get download libnl-genl-3-200
  • 包名:libnl-genl-3-200_*_amd64.deb

libnl-route-3-200

  • Netlink路由库
  • 下载命令:apt-get download libnl-route-3-200
  • 包名:libnl-route-3-200_*_amd64.deb

libsnmp40

  • SNMP库,用于网络管理
  • 下载命令:apt-get download libsnmp40
  • 包名:libsnmp40_*_amd64.deb

libssl3

  • OpenSSL库,用于加密通信
  • 下载命令:apt-get download libssl3
  • 包名:libssl3_*_amd64.deb

libsystemd0

  • systemd系统库
  • 下载命令:apt-get download libsystemd0
  • 包名:libsystemd0_*_amd64.deb

2. 间接依赖包

这些依赖包可能还需要其他依赖,需要递归下载:

  • libc6:GNU C库
  • libgcc-s1:GCC支持库
  • libstdc++6:C++标准库
  • libdbus-1-3:D-Bus消息总线库
  • liblzma5:LZMA压缩库
  • libzstd1:Zstandard压缩库
  • libbz2-1.0:Bzip2压缩库
  • liblz4-1:LZ4压缩库
  • libz1:Zlib压缩库

3. 使用apt-get自动下载所有依赖

在有网络的Ubuntu 24.04系统上,使用以下命令自动下载Keepalived及其所有依赖:

bash
# 创建下载目录
mkdir -p ~/keepalived-offline
cd ~/keepalived-offline

# 下载keepalived及其所有依赖
apt-get download keepalived=2.2.8-1build2

# 下载所有依赖包(递归下载)
apt-get download $(apt-cache depends keepalived | grep "Depends:" | cut -d: -f2 | tr -d ' ')

# 或者使用更完整的方法
apt-get install --download-only --reinstall keepalived=2.2.8-1build2

下载的包会保存在 /var/cache/apt/archives/ 目录中,复制到目标目录:

bash
# 复制所有下载的deb包
cp /var/cache/apt/archives/*.deb ~/keepalived-offline/

4. 使用apt-rdepends获取完整依赖树(推荐)

安装apt-rdepends工具:

bash
sudo apt-get install apt-rdepends

获取完整的依赖树:

bash
# 获取所有依赖(包括间接依赖)
apt-rdepends keepalived | grep "Depends:" | awk '{print $2}' | sort -u > keepalived-deps.txt

# 下载所有依赖包
while read pkg; do
    apt-get download $pkg
done < keepalived-deps.txt

三、安装依赖项

1. 上传安装包到离线服务器

使用FTP、SCP或其他文件传输工具,将下载的所有deb包上传到目标服务器:

bash
# 使用SCP上传示例
scp -r ~/keepalived-offline user@server:/tmp/

2. 安装依赖包

在离线服务器上,进入存放deb包的目录:

bash
cd /tmp/keepalived-offline

方法一:按顺序安装依赖包

先安装基础库,再安装其他依赖:

bash
# 安装基础库
sudo dpkg -i libc6_*.deb
sudo dpkg -i libgcc-s1_*.deb
sudo dpkg -i libstdc++6_*.deb

# 安装压缩库
sudo dpkg -i libz1_*.deb
sudo dpkg -i liblzma5_*.deb
sudo dpkg -i libbz2-1.0_*.deb
sudo dpkg -i liblz4-1_*.deb
sudo dpkg -i libzstd1_*.deb

# 安装系统库
sudo dpkg -i libsystemd0_*.deb
sudo dpkg -i libdbus-1-3_*.deb

# 安装SSL库
sudo dpkg -i libssl3_*.deb

# 安装Netlink库
sudo dpkg -i libnl-3-200_*.deb
sudo dpkg -i libnl-genl-3-200_*.deb
sudo dpkg -i libnl-route-3-200_*.deb

# 安装IP集库
sudo dpkg -i libipset13_*.deb

# 安装SNMP库
sudo dpkg -i libsnmp40_*.deb

方法二:批量安装(推荐)

如果所有依赖包都在同一目录,可以使用批量安装:

bash
# 安装所有依赖包
sudo dpkg -i *.deb

如果遇到依赖问题,使用以下命令修复:

bash
sudo apt-get install -f

注意:在完全离线环境中,apt-get install -f 无法从网络下载缺失的依赖,需要确保所有依赖包都已下载。

3. 验证依赖包安装

检查关键依赖包是否已安装:

bash
# 检查核心依赖
dpkg -l | grep -E "libipset13|libnl-3-200|libnl-genl-3-200|libnl-route-3-200|libsnmp40|libssl3|libsystemd0"

# 检查所有依赖
dpkg -l | grep -E "libc6|libgcc-s1|libstdc++6"

四、安装Keepalived

1. 安装Keepalived主包

在所有依赖包安装完成后,安装Keepalived:

bash
cd /tmp/keepalived-offline
sudo dpkg -i keepalived_2.2.8-1build2_amd64.deb

2. 处理安装错误

如果安装过程中出现依赖错误:

bash
# 查看错误信息
sudo dpkg -i keepalived_2.2.8-1build2_amd64.deb 2>&1 | grep "depends on"

# 手动安装缺失的依赖
sudo dpkg -i <missing-package>.deb

# 再次尝试安装
sudo dpkg -i keepalived_2.2.8-1build2_amd64.deb

3. 验证安装

检查Keepalived是否安装成功:

bash
# 查看Keepalived版本
keepalived --version

# 查看安装的包信息
dpkg -l | grep keepalived

# 查看Keepalived配置文件位置
ls -la /etc/keepalived/

五、配置Keepalived

1. 基本配置

Keepalived的主配置文件位于 /etc/keepalived/keepalived.conf

bash
sudo vi /etc/keepalived/keepalived.conf

2. 主备模式配置示例

主服务器配置

conf
global_defs {
    router_id LVS_DEVEL
    script_user root
    enable_script_security
}

vrrp_script chk_nginx {
    script "/usr/bin/curl -f http://localhost/ || exit 1"
    interval 2
    weight -2
    fall 3
    rise 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
    track_script {
        chk_nginx
    }
}

备服务器配置

conf
global_defs {
    router_id LVS_DEVEL
    script_user root
    enable_script_security
}

vrrp_script chk_nginx {
    script "/usr/bin/curl -f http://localhost/ || exit 1"
    interval 2
    weight -2
    fall 3
    rise 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
    track_script {
        chk_nginx
    }
}

3. 启动Keepalived服务

bash
# 检查配置文件语法
sudo keepalived -t

# 启动Keepalived服务
sudo systemctl start keepalived

# 设置开机自启
sudo systemctl enable keepalived

# 查看服务状态
sudo systemctl status keepalived

4. 验证Keepalived运行

bash
# 查看Keepalived进程
ps aux | grep keepalived

# 查看虚拟IP是否已绑定
ip addr show

# 查看Keepalived日志
sudo journalctl -u keepalived -f

六、常见问题排查

1. 依赖问题

如果安装过程中提示缺少依赖:

bash
# 查看缺少的依赖
sudo dpkg -i keepalived_2.2.8-1build2_amd64.deb 2>&1 | grep "depends on"

# 检查已安装的包
dpkg -l | grep <package-name>

# 如果无法自动安装,需要手动下载缺失的依赖包

2. 服务启动失败

如果Keepalived服务启动失败:

bash
# 查看错误日志
sudo journalctl -u keepalived -n 50

# 检查配置文件语法
sudo keepalived -t

# 查看系统日志
sudo tail -f /var/log/syslog | grep keepalived

3. 虚拟IP无法绑定

如果虚拟IP无法绑定:

bash
# 检查网络接口名称
ip addr show

# 确认配置文件中的interface名称正确
# 检查是否有其他服务占用虚拟IP
ip addr show | grep <virtual-ip>

# 检查防火墙规则
sudo iptables -L -n

4. 权限问题

如果遇到权限问题:

bash
# 检查Keepalived用户
id keepalived

# 检查配置文件权限
ls -la /etc/keepalived/keepalived.conf

# 确保脚本有执行权限
chmod +x /path/to/script.sh

七、后续配置建议

1. 配置日志

编辑Keepalived配置文件,添加日志配置:

conf
global_defs {
    router_id LVS_DEVEL
    script_user root
    enable_script_security
    log_file /var/log/keepalived.log
    log_facility 0
}

2. 配置防火墙

如果需要允许VRRP协议通信:

bash
# UFW防火墙
sudo ufw allow vrrp
sudo ufw allow from <peer-ip> to any port 112

# 或iptables
sudo iptables -A INPUT -p vrrp -j ACCEPT
sudo iptables -A INPUT -s <peer-ip> -p tcp --dport 112 -j ACCEPT

3. 监控配置

配置监控脚本,确保服务健康:

bash
# 创建健康检查脚本
sudo vi /usr/local/bin/check_service.sh
bash
#!/bin/bash
# 检查Nginx服务
if systemctl is-active --quiet nginx; then
    exit 0
else
    exit 1
fi
bash
# 添加执行权限
sudo chmod +x /usr/local/bin/check_service.sh

在Keepalived配置中使用:

conf
vrrp_script chk_service {
    script "/usr/local/bin/check_service.sh"
    interval 2
    weight -2
    fall 3
    rise 2
}

总结

通过以上步骤,可以在Ubuntu 24.04系统上成功离线安装Keepalived 2.2.8。关键步骤包括:

  1. 下载安装包:从Ubuntu官方仓库下载Keepalived 2.2.8及其所有依赖包
  2. 安装依赖项:按照正确的顺序安装所有依赖包,包括libipset13、libnl-3-200、libnl-genl-3-200、libnl-route-3-200、libsnmp40、libssl3等
  3. 安装Keepalived:在所有依赖满足后安装Keepalived主包
  4. 配置服务:配置Keepalived主备模式,设置虚拟IP和健康检查
  5. 验证安装:确认Keepalived正常运行,虚拟IP正确绑定
  6. 后续优化:根据实际需求配置日志、防火墙和监控

离线安装Keepalived虽然步骤相对复杂,但能够满足内网环境或安全隔离场景的需求。建议在实际部署前在测试环境验证所有步骤,确保生产环境部署顺利。同时,务必遵循安全最佳实践,配置强密码、限制访问权限,并定期进行服务健康检查。

Docker离线安装完整指南
Ubuntu 24.04 LTS 离线安装 MySQL 8.0.44 完整指南