Awesome Sysadmin运维平台高可用:keepalived配置

Awesome Sysadmin运维平台高可用:keepalived配置

【免费下载链接】awesome-sysadmin A curated list of amazingly awesome open-source sysadmin resources. 【免费下载链接】awesome-sysadmin 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-sysadmin

在服务器运维中,单节点故障可能导致服务中断,影响业务连续性。keepalived作为一款基于VRRP(虚拟路由冗余协议)的高可用解决方案,能够通过虚拟IP(VIP)漂移实现服务自动切换,确保关键业务7×24小时无间断运行。本文将从基础概念到实操配置,详解如何在Awesome Sysadmin项目环境中部署keepalived高可用集群。

为什么需要keepalived?

传统单机部署模式下,当服务器因硬件故障、网络中断或软件崩溃无法提供服务时,需要人工介入恢复,这期间业务将处于不可用状态。keepalived通过以下机制解决这一痛点:

  • 故障自动检测:通过VRRP协议实时监控主备节点状态
  • 无缝切换:主节点故障时,备节点自动接管虚拟IP和服务
  • 轻量级实现:仅需简单配置即可实现高可用,无需复杂的集群管理软件

THE 0TH POSITION OF THE ORIGINAL IMAGE

项目中相关的高可用工具可参考Configuration Management章节,包含Ansible、Puppet等自动化部署工具。

环境准备与安装

服务器规划

节点角色IP地址操作系统硬件配置
主节点192.168.1.10Ubuntu 22.042核4G
备节点192.168.1.11Ubuntu 22.042核4G
虚拟IP192.168.1.100--

安装keepalived

在主备节点分别执行以下命令安装keepalived:

sudo apt update && sudo apt install -y keepalived

更多系统的安装方法可参考Awesome Sysadmin项目文档中的"Package Management"部分。

核心配置详解

keepalived的主配置文件位于/etc/keepalived/keepalived.conf,采用VRRP实例配置+全局参数的结构。

主节点配置

! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL  # 路由标识,同一集群保持一致
}

vrrp_instance VI_1 {
    state MASTER        # 节点角色:MASTER/BACKUP
    interface eth0      # 绑定虚拟IP的网卡
    virtual_router_id 51 # 虚拟路由ID,主备节点必须相同
    priority 100        # 优先级,主节点高于备节点(建议差50以上)
    advert_int 1        # 心跳检测间隔(秒)
    
    authentication {
        auth_type PASS  # 认证方式
        auth_pass 1111  # 认证密码,主备节点必须相同
    }
    
    virtual_ipaddress {
        192.168.1.100/24 # 虚拟IP地址
    }
    
    # 当节点转为MASTER时执行的脚本
    notify_master "/etc/keepalived/notify.sh master"
    # 当节点转为BACKUP时执行的脚本
    notify_backup "/etc/keepalived/notify.sh backup"
    # 当节点故障时执行的脚本
    notify_fault "/etc/keepalived/notify.sh fault"
}

备节点配置

备节点配置与主节点基本一致,只需修改statepriority参数:

vrrp_instance VI_1 {
    state BACKUP
    priority 50
    # 其他参数与主节点保持一致
}

状态通知脚本

创建状态切换通知脚本/etc/keepalived/notify.sh,用于记录状态变化或执行服务启停操作:

#!/bin/bash
# 状态通知脚本 [notify.sh](https://link.gitcode.com/i/d59c1cd0f4d724aadb2e757cf02ce208)

LOG_FILE="/var/log/keepalived-notify.log"
DATE=$(date "+%Y-%m-%d %H:%M:%S")

case "$1" in
    master)
        echo "[$DATE] 切换为MASTER节点" >> $LOG_FILE
        # 启动服务命令示例: systemctl start nginx
        ;;
    backup)
        echo "[$DATE] 切换为BACKUP节点" >> $LOG_FILE
        # 停止服务命令示例: systemctl stop nginx
        ;;
    fault)
        echo "[$DATE] 节点故障" >> $LOG_FILE
        ;;
    *)
        echo "[$DATE] 未知状态: $1" >> $LOG_FILE
        exit 1
        ;;
esac

赋予脚本执行权限:

sudo chmod +x /etc/keepalived/notify.sh

服务管理与验证

启动keepalived服务

# 启动服务
sudo systemctl start keepalived
# 设置开机自启
sudo systemctl enable keepalived
# 查看状态
sudo systemctl status keepalived

验证高可用功能

  1. 查看虚拟IP绑定情况

    ip addr show eth0 | grep 192.168.1.100
    

    正常情况下,虚拟IP应绑定在主节点的网卡上。

  2. 模拟主节点故障

    # 停止主节点keepalived服务
    sudo systemctl stop keepalived
    
  3. 验证备节点接管情况: 在备节点执行ip addr命令,确认虚拟IP是否已自动漂移过来。同时查看日志文件验证状态切换:

    tail -f /var/log/keepalived-notify.log
    

常见问题解决

虚拟IP无法漂移

  1. 检查防火墙配置:确保VRRP协议(组播地址224.0.0.18)允许通过

    sudo ufw allow proto vrrp from any to any
    
  2. 验证配置文件:检查主备节点的virtual_router_idauth_pass是否一致

  3. 查看系统日志

    sudo journalctl -u keepalived -f
    

服务切换不及时

  • 调整advert_int参数减小心跳间隔(建议1-3秒)
  • 增加主备节点优先级差值(建议至少50)
  • 优化健康检查脚本执行时间

最佳实践与进阶配置

结合Nginx实现Web服务高可用

通过keepalived+Nginx组合,可以实现Web服务的高可用架构。配置示例:

# 在keepalived.conf中添加健康检查脚本
vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"  # 检查nginx进程是否存在
    interval 2                          # 检查间隔(秒)
    weight -20                          # 检查失败时优先级减少值
}

vrrp_instance VI_1 {
    # ... 其他配置 ...
    track_script {
        chk_nginx  # 启用健康检查
    }
}

多实例配置

keepalived支持配置多个VRRP实例,实现多组服务的独立高可用:

vrrp_instance VI_1 {
    # 实例1配置,虚拟IP 192.168.1.100
}

vrrp_instance VI_2 {
    # 实例2配置,虚拟IP 192.168.1.101
}

更多高级配置可参考keepalived官方文档

总结

通过本文的配置指南,您已掌握在Awesome Sysadmin环境中部署keepalived高可用集群的核心步骤。高可用架构是企业级运维的基础保障,结合项目中的监控工具自动化部署工具,可以构建更完善的运维体系。

建议定期测试故障切换功能,并将配置文件纳入版本控制管理,可使用项目中的git-branch-cleanup.sh脚本维护配置版本。

项目中相关的自动化脚本和工具可在tmp_repo/目录下找到,包含各类系统管理实用程序。

【免费下载链接】awesome-sysadmin A curated list of amazingly awesome open-source sysadmin resources. 【免费下载链接】awesome-sysadmin 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-sysadmin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值