LVS高可靠

发布于:2025-08-10 ⋅ 阅读:(14) ⋅ 点赞:(0)

概述

以下是基于 CentOS 7 搭建 LVS(Linux Virtual Server)高可靠 集群的完整指南。LVS 是一个高性能的负载均衡解决方案,常用于构建高可用的 Web、数据库等服务。

快速开始

一、LVS 高可用架构

我们将采用 LVS + Keepalived 的经典组合

客户端

[虚拟 IP (VIP): 192.168.1.100]

[主 LVS 调度器] (LVS + Keepalived) ←→ VRRP 通信
[备 LVS 调度器] (LVS + Keepalived)
↓ (负载均衡)
[真实服务器 1] (Web1: 192.168.1.20)
[真实服务器 2] (Web2: 192.168.1.21)

  • LVS:负责将客户端请求分发到后端真实服务器。
  • Keepalived:实现 LVS 调度器的高可用,通过 VRRP 协议管理虚拟 IP(VIP)。

二、环境准备

服务器 IP 地址 角色
LVS-1 192.168.1.10 主 LVS 调度器
LVS-2 192.168.1.11 备 LVS 调度器
Web1 192.168.1.20 真实服务器(Real Server)
Web2 192.168.1.21 真实服务器(Real Server)
VIP 192.168.1.100 虚拟 IP(对外服务地址)

三、部署步骤

步骤 1:在所有服务器上安装 Nginx(作为 Web 服务)

# 安装 Nginx
sudo yum install -y nginx

# 创建测试页面
echo "Hello from Web Server $(hostname)" | sudo tee /usr/share/nginx/html/index.html

# 启动 Nginx
sudo systemctl enable nginx --now

步骤 2:在 Web 服务器上配置 ARP 抑制(DR 模式必需)

LVS 有多种工作模式,我们使用性能最高的 DR(Direct Routing)模式

Web1 和 Web2 上执行:

# 创建 ARP 配置脚本
cat > /etc/sysconfig/network-scripts/ifcfg-lo:0 << 'EOF'
DEVICE=lo:0
IPADDR=192.168.1.100
NETMASK=255.255.255.255
ONBOOT=yes
ARPCHECK=no
EOF

# 应用配置
sudo ifup lo:0

# 抑制 ARP 响应
echo "net.ipv4.conf.all.arp_ignore = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_ignore = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" | sudo tee -a /etc/sysctl.conf

# 生效配置
sudo sysctl -p

步骤 3:在 LVS 调度器上安装 LVS 和 Keepalived

LVS-1LVS-2 上执行:

# 安装 ipvsadm (LVS 管理工具) 和 keepalived
sudo yum install -y ipvsadm keepalived

# 启用并启动 keepalived
sudo systemctl enable keepalived --now

步骤 4:配置 Keepalived(主调度器 LVS-1)

编辑 /etc/keepalived/keepalived.conf

sudo tee /etc/keepalived/keepalived.conf > /dev/null << 'EOF'
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 1111
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.20 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.1.21 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
EOF

步骤 5:配置 Keepalived(备调度器 LVS-2)

LVS-2 上,配置几乎相同,仅修改以下部分:

vrrp_instance VI_1 {
    state BACKUP
    priority 90  # 低于主节点
    ...
}

其余配置与 LVS-1 一致。

步骤 6:启动服务

LVS-1LVS-2 上执行:

sudo systemctl restart keepalived

四、验证高可用性

1. 检查 VIP 是否生效

在 LVS-1 上执行:

ip addr show eth0

你应该看到 192.168.1.100 出现在主节点上。

2. 查看 LVS 转发规则

ipvsadm -Ln

输出应显示两个 Real Server:

Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:80 rr
  -> 192.168.1.20:80              Route   1      0          0
  -> 192.168.1.21:80              Route   1      0          0

3. 测试访问

在浏览器或命令行中访问:

curl http://192.168.1.100

你应该看到来自 Web1Web2 的响应,且每次请求可能轮询到不同服务器。

4. 测试故障转移

  • 关闭 LVS-1sudo shutdown -h now
  • 观察 LVS-2 是否自动接管 VIP(ip addr show
  • 访问 http://192.168.1.100,服务应不受影响

网站公告

今日签到

点亮在社区的每一天
去签到