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 BACKUP 和 priority 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

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

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

相关推荐
山岚的运维笔记15 分钟前
ComfyUI NVIDIA安装教程:官方便携版下载+run_nvidia_gpu.bat启动,8G显存Windows实操
运维·服务器·windows·笔记·prompt·aigc·comfyui
海宇大数据44 分钟前
零信任架构实战:基于海宇活体识别V步骤1构建自动化远程公证会话初始化网关
运维·人工智能·架构·自动化
꯭自꯭闭꯭1 小时前
DM7主备升级方案
linux·服务器·数据库
lisanmengmeng1 小时前
Nagios邮件报警的配置
linux·运维·服务器
范什么特西1 小时前
第二段经历
服务器
Ruiery1 小时前
Linux 6.6内核 CPU 深度解析(六):cpufreq
linux·运维·服务器
天远数科2 小时前
零信任架构实战:基于天远全能消金报告构建自动化消费分期网关
运维·人工智能·架构·自动化
硅基手札2 小时前
【linux内核专栏 08】时间与定时器
linux·运维·服务器
想做小南娘,发现自己是女生喵3 小时前
Linux之Ubuntu入门篇知识总结
linux·运维·服务器
CHEEVEN_QY3 小时前
搅拌摩擦焊FSW工艺参数对焊缝成形影响的实验研究10.1
linux·服务器·数据库