当前位置:首页 > 问答 > 正文

高可用性 负载均衡 如何在服务器上安装Keepalived实现服务高可用与自动故障转移

用Keepalived给服务器加上"不死鸟"外挂 🔥

🌐 开篇场景:当服务器突然"躺平"

想象一下:你是某电商平台的运维工程师,正逢双十一零点大促,服务器突然发出警报——主数据库节点宕机了!😱 此时如果没有高可用方案,整个网站将陷入瘫痪,用户无法下单,公司损失可能以秒计,而今天要介绍的Keepalived,正是避免这种灾难的"服务器保命符"!

🧠 一分钟理解高可用与负载均衡

高可用性(HA) 就像给服务器买了"双保险":当主服务器挂掉时,备用服务器秒级接管,服务不中断。
负载均衡(LB) 则是"端茶倒水"的管家:把流量均匀分给多台服务器,避免单台过载。
而Keepalived同时实现了这两大功能,堪称运维界的"瑞士军刀"!

🛠️ 保姆级安装教程(2025最新版)

📦 环境准备(Ubuntu/CentOS通用)

# Ubuntu 24.04
sudo apt update && sudo apt install -y keepalived haproxy
# CentOS Stream 9
sudo yum install -y keepalived haproxy

🔧 主服务器配置(192.168.1.10)

# 备份默认配置
sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
# 编辑配置文件
cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
    script "/usr/local/bin/check_haproxy.sh"
    interval 2
    weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass Keepalived_P@ssw0rd!
    }
    virtual_ipaddress {
        192.168.1.100/24 dev eth0 label eth0:0
    }
    track_script {
        chk_haproxy
    }
}
EOF

🛡️ 备用服务器配置(192.168.1.20)

# 关键差异:state改为BACKUP,priority设为90
vrrp_instance VI_1 {
    state BACKUP
    priority 90
    ... # 其他配置与主服务器一致
}

💾 健康检查脚本(双机都需要)

#!/bin/bash
# 文件路径:/usr/local/bin/check_haproxy.sh
if systemctl is-active --quiet haproxy; then
    exit 0
else
    exit 1
fi
sudo chmod +x /usr/local/bin/check_haproxy.sh

🚀 启动与验证

🔥 一键启动

sudo systemctl enable --now keepalived haproxy

🔍 验证VIP绑定

ip addr show eth0 | grep 'inet 192.168.1.100'

🧪 故障模拟测试

# 在主服务器停止HAProxy
sudo systemctl stop haproxy
# 备用服务器应自动接管VIP
ip addr show eth0

💡 高级玩法:Keepalived + LVS负载均衡

# 在keepalived.conf添加virtual_server配置
virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP
    real_server 192.168.1.11 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK { ... }
    }
}

🛡️ 脑裂问题解决方案

当两台服务器都认为自己是主节点时(脑裂),可通过以下方式解决:

# 在keepalived.conf添加
vrrp_garp_interval 0
vrrp_gna_interval 0

📌 2025年最新注意事项

  1. 云环境适配:阿里云用户建议结合HaVip使用,实现跨可用区高可用
  2. IPv6支持:编译时需安装libnl3-devel依赖
  3. 安全加固:生产环境建议关闭vrrp_strict并配置iptables白名单

🌟 最终效果演示

当主服务器故障时,备用服务器将在1-3秒内完成VIP接管,服务无缝切换,用户完全无感知!就像给服务器施了"复活咒"一样神奇~ 🧙♂️

高可用性 负载均衡 如何在服务器上安装Keepalived实现服务高可用与自动故障转移

💬 本文配置经实测适用于2025年8月最新版Keepalived(v2.3.0),如遇问题可检查防火墙设置或查看journalctl -u keepalived日志。

高可用性 负载均衡 如何在服务器上安装Keepalived实现服务高可用与自动故障转移

发表评论