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

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

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

相关推荐
土星云SaturnCloud5 小时前
模型转换与部署实战(PyTorch→ONNX→BModel)
服务器·人工智能·ai·边缘计算
一条代码鱼5 小时前
Linux 文件实时同步完全指南:Lsyncd vs Inotifywait+Rsync
linux·运维·服务器
艾莉丝努力练剑5 小时前
【Linux网络】Linux 网络编程:传输层协议TCP(三)
linux·运维·服务器·网络·tcp/ip·http
朝阳5815 小时前
MySQL 主从复制 — 双服务器灾备方案(原生安装)
服务器·数据库·mysql
小程故事多_805 小时前
从想法到落地零返工,AI Agent六阶段自动化开发全流水线实践
运维·人工智能·自动化
keyipatience5 小时前
21,22 (半)深入理解Linux重定向与缓冲区机制
linux·运维·服务器
闪电悠米5 小时前
黑马点评-优惠券秒杀-04_one_user_one_order
服务器·网络·数据库
1024小神5 小时前
在阿里云买的域名和服务器配置cloudflare的DNS解析,并配置cloudflare生成ssl证书可以用15年
服务器·阿里云·ssl
风向决定发型丶5 小时前
Logrotate配置nginx日志切割
运维·nginx
yyuuuzz5 小时前
aws亚马逊云上运维常见问题梳理
运维·服务器·网络·云计算·aws