LVS+Keepalived高可用群集

一、Keepalived 双机热备基础知识

1. Keepalived 概述及安装

Keepalived 是一个基于 VRRP协议的开源软件,用于实现服务器的高可用性。它通过主备模式自动切换,确保服务在故障时无缝转移。主要应用于负载均衡、Web 服务器等场景

(1) Keepalived 的热备方式

Keepalived 采用 VRRP 协议实现热备。在双机热备中:

主服务器(Master):承担服务流量,定期发送心跳包

备用服务器(Backup):监控主服务器状态。当主服务器故障时,备用服务器接管虚拟 IP(VIP),成为新的主服务器

虚拟路由器 ID(VRID):主备服务器需配置相同的 VRID,以标识同一个虚拟路由器组。

优先级机制:通过优先级值(如 100 为主,50 为备)决定切换顺序

切换过程可表示为: $$ \text{主服务器故障} \implies \text{备用服务器提升为主} \implies \text{服务恢复} $$

(2) Keepalived 的安装与服务控制
在 Linux 系统上安装 Keepalived,以 Ubuntu 为例:
bash 复制代码
# 安装 Keepalived
sudo apt-get update
sudo apt-get install keepalived -y

服务控制命令:

启动服务:sudo systemctl start keepalived

停止服务:sudo systemctl stop keepalived

重启服务:sudo systemctl restart keepalived

查看状态:sudo systemctl status keepalived

2. 使用 Keepalived 实现双机热备

(1) 主服务器的配置

编辑主服务器的配置文件 /etc/keepalived/keepalived.conf

plaintext 复制代码
global_defs {
    router_id LVS_MASTER  # 唯一标识
}

vrrp_instance VI_1 {
    state MASTER          # 角色为主
    interface eth0        # 网络接口
    virtual_router_id 51  # VRID,需一致
    priority 100          # 优先级,主高于备
    advert_int 1          # 心跳间隔(秒)
    authentication {
        auth_type PASS    # 认证类型
        auth_pass 1234    # 密码,需一致
    }
    virtual_ipaddress {
        192.168.1.100     # 虚拟 IP
    }
}

重启服务:sudo systemctl restart keepalived

(2) 备用服务器的配置

备用服务器配置文件类似,但修改状态和优先级:

plaintext 复制代码
global_defs {
    router_id LVS_BACKUP
}

vrrp_instance VI_1 {
    state BACKUP           # 角色为备
    interface eth0
    virtual_router_id 51
    priority 50            # 优先级低于主
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

重启服务:sudo systemctl restart keepalived

(3) 测试双机热备功能
连通性测试

使用 ping 命令测试虚拟 IP 的连通性:

bash 复制代码
ping 192.168.1.100

如果主服务器故障,应能继续 ping 通,IP 切换到备服务器

Web 访问测试

假设虚拟 IP 指向 Web 服务:

bash 复制代码
curl http://192.168.1.100

在主服务器宕机时,服务应无中断

查看日志记录

检查 Keepalived 日志以验证切换:

bash 复制代码
tail -f /var/log/syslog | grep keepalived

日志中应有类似条目:

plaintext 复制代码
Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE

二、使用 Keepalived 实现双机热备

1. 基础环境配置

网络设置 :确保主备服务器在同一网段,虚拟 IP 为 192.168.1.100

Web 节点 :准备至少两台后端 Web 服务器(如 IP: 192.168.1.101, 192.168.1.102),安装 Nginx 或 Apache

防火墙:开放 VRRP 协议端口(如 UDP 112)和 Web 端口(如 TCP 80)

2. 配置主调度器

在主服务器上配置 Keepalived 和 LVS:

plaintext 复制代码
global_defs {
    router_id LVS_MASTER
}

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
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr           # 轮询算法
    lb_kind DR           # 直接路由模式
    protocol TCP

    real_server 192.168.1.101 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
    real_server 192.168.1.102 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
}

重启服务:sudo systemctl restart keepalived

3. 配置从调度器

在备用服务器上,使用类似配置,但修改为 state BACKUPpriority 50

4. 配置 Web 节点服务器

在每个 Web 节点上:

设置 ARP 抑制(避免 VIP 冲突):

bash 复制代码
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p

配置 Web 服务(以 Nginx 为例):

bash 复制代码
sudo apt-get install nginx -y
echo "Server response from $(hostname)" > /var/www/html/index.html

5. 测试 LVS+Keepalived 高可用群集

模拟故障:手动停止主服务器的 Keepalived 服务:

bash 复制代码
sudo systemctl stop keepalived

测试切换

使用 curl 访问虚拟 IP:

bash 复制代码
curl http://192.168.1.100

应能获得 Web 响应,无中断

查看备用服务器日志:

bash 复制代码
tail -f /var/log/syslog | grep keepalived

应有提升为主服务器的记录

恢复测试:重启原主服务器,验证是否自动恢复为备角色

相关推荐
智能运维指南2 小时前
2026 运维监控选型指南:全栈智能可观测平台如何选?
运维
卢傢蕊2 小时前
LVS+Keepalived 高可用群集
linux·运维·lvs·keepalived
Heart_to_Yang2 小时前
TPLink路由器虚拟专用网端口映射故障问题,端口转发无效
运维·服务器·网络
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(六):<线程同步与互斥>线程同步(上)
java·linux·运维·服务器·c++·学习·线程
姚不倒2 小时前
构建高可用可观测性平台:VictoriaMetrics 集群 + VictoriaLogs 统一接入实践
运维·docker·微服务·云原生·架构
Gofarlic_OMS2 小时前
中小企业控制方法:中小型制造企业Creo许可证成本控制
java·大数据·运维·算法·matlab·制造
i建模2 小时前
在 Ubuntu 上安装 pnpm
linux·运维·ubuntu
Ops菜鸟(Xu JieHao)2 小时前
Linux快速生成测试日志flog
linux·运维·服务器·日志·log
IT大师兄吖2 小时前
sam3 提示词 图片分割和视频分割 docker 懒人整合包
运维·docker·容器