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

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

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

相关推荐
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈2 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟2 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome