当前位置: 首页 > news >正文

LVS高可靠

概述

以下是基于 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-1192.168.1.10主 LVS 调度器
LVS-2192.168.1.11备 LVS 调度器
Web1192.168.1.20真实服务器(Real Server)
Web2192.168.1.21真实服务器(Real Server)
VIP192.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 MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100/24}
}virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRnat_mask 255.255.255.0persistence_timeout 50protocol TCPreal_server 192.168.1.20 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.21 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
EOF

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

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

vrrp_instance VI_1 {state BACKUPpriority 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,服务应不受影响
http://www.lryc.cn/news/613941.html

相关文章:

  • Java-注解
  • Azure OpenAI gpt5和AWS Secrets Manager构建智能对话系统
  • Windows10中wls2因网络问题无法拉取Docker/Podman容器镜像
  • mysql复制连接下的所有表+一次性拷贝到自己的库
  • 深入解析C++流运算符(>>和<<)重载:为何必须使用全局函数与友元机制
  • 专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
  • 基于Flask + Vue3 的新闻数据分析平台源代码+数据库+使用说明,爬取今日头条新闻数据,采集与清洗、数据分析、建立数据模型、数据可视化
  • 在 Debian 系统上安装 Redis服务
  • 驾驭数据库迁移:在 Django 与 Flask 中的全流程实战指南
  • Spark01-初识Spark
  • 柠檬笔试——野猪骑士
  • apache cgi测试
  • Docker容器部署前端Vue服务
  • Spring Boot + Angular 实现安全登录注册系统:全栈开发指南
  • 【AI】从零开始的文本分类模型实战:从数据到部署的全流程指南
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • C++信息学奥赛一本通-第一部分-基础一-第3章-第1节
  • 支持向量机(SVM)全解析:原理、类别与实践
  • MySQL数据库操作练习
  • Go通道操作全解析:从基础到高并发模式
  • 微算法科技(NASDAQ:MLGO)使用循环QSC和QKD的量子区块链架构,提高交易安全性和透明度
  • 机器学习——KMeans聚类算法(算法原理+超参数详解+实战案例)
  • 计算机视觉CS231n学习(5)
  • 手搓MCP全流程指南:从本地开发部署到PyPI公开发布
  • 构建健壮的数据库连接池:高并发 Web 应用的制胜之匙
  • 面向真实场景的定制化图像降质模型设计方案
  • 深度剖析主流AI大模型的编程语言与架构选择:行业实践与技术细节解读
  • Linux系统编程Day9 -- gdb (linux)和lldb(macOS)调试工具
  • 什么是2米分辨率卫星影像数据?
  • Baumer相机如何通过YoloV8深度学习模型实现高速公路车辆的实时检测计数(C#代码UI界面版)