LVS-NAT 负载均衡群集

news2025/6/3 7:48:03

目录

简介

一、LVS 与群集技术基础

1.1 群集技术概述

1.2 负载均衡群集的分层结构

1.3 负载均衡工作模式

二、LVS 虚拟服务器核心组件与配置

2.1 LVS 内核模块与管理工具

2.2 负载调度算法解析

2.3 ipvsadm 管理工具实战

三、NFS 共享存储服务配置

3.1 NFS 服务基础配置

3.2 客户端访问 NFS 共享

四、案例:LVS-NAT 负载均衡群集

4.1 案例环境准备

4.2 配置负载调度器

4.3 配置真实服务器节点

4.4 测试 LVS 群集效果

五、总结


简介

在当今互联网应用场景中,单台服务器早已无法满足高并发、高可用的服务需求。LVS(Linux Virtual Server)作为 Linux 平台下的高性能负载均衡解决方案,通过整合多台服务器资源,以统一入口提供服务,成为企业构建高可用集群的核心技术之一。

一、LVS 与群集技术基础

1.1 群集技术概述

群集(Cluster)是一组服务器的集合体,对外表现为一个整体服务单元。根据目标不同,群集主要分为三类:

  • 负载均衡群集:提升系统响应能力,处理高并发请求(如 DNS 轮询、反向代理)
  • 高可用群集:确保服务连续性,减少中断时间(如双机热备、故障切换)
  • 高性能运算群集:整合计算资源,实现分布式运算(如云计算、网格计算)

1.2 负载均衡群集的分层结构

典型的负载均衡群集包含三个层次:

  1. 负载调度器:唯一入口,使用群集 IP(VIP),支持主备热备
  2. 服务器池:真实服务器(RIP)组成,处理调度器分发的请求
  3. 共享存储:确保各节点数据一致性,常用 NFS 或 NAS

1.3 负载均衡工作模式

LVS 支持三种核心工作模式:

  • NAT 模式(地址转换):调度器作为网关,服务器使用私有 IP,安全性高
  • TUN 模式(IP 隧道):服务器分散在公网,通过隧道与调度器通信
  • DR 模式(直接路由):服务器与调度器同网络,性能更高

二、LVS 虚拟服务器核心组件与配置

2.1 LVS 内核模块与管理工具

LVS 作为 Linux 内核模块(ip_vs),默认已编译。可通过以下命令加载并查看版本:

modprobe ip_vs  # 手动加载ip_vs模块
cat /proc/net/ip_vs  # 查看LVS模块版本信息

2.2 负载调度算法解析

LVS 提供多种调度算法,常用四种:

  • 轮询(RR):顺序分配请求,不考虑服务器负载
  • 加权轮询(WRR):按权重分配,性能高的节点承担更多请求
  • 最少连接(LC):将请求分配给连接数最少的节点
  • 加权最少连接(WLC):结合权重与连接数,动态调整分配

2.3 ipvsadm 管理工具实战

(1)安装 ipvsadm 工具

dnf install ipvsadm  # 在OpenEuler系统中安装ipvsadm管理工具
ipvsadm -v  # 查看ipvsadm版本信息

(2)创建虚拟服务器

ipvsadm -A -t 172.16.16.172:80 -s rr  # -A添加虚拟服务器,-t指定VIP和端口,-s指定轮询算法

(3)添加真实服务器节点

ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1  # -a添加真实服务器,-r指定RIP和端口,-m指定NAT模式,-w设置权重为1

(4)查看群集状态

ipvsadm -ln  # -l列表显示,-n以数字形式显示IP和端口,避免DNS解析

(5)保存与恢复策略

ipvsadm-save > /etc/sysconfig/ipvsadm  # 保存当前LVS策略到配置文件
systemctl start ipvsadm  # 启动ipvsadm服务,应用保存的策略

三、NFS 共享存储服务配置

3.1 NFS 服务基础配置

NFS(网络文件系统)用于群集节点间数据共享,基于 RPC 机制实现:

(1)安装 NFS 服务组件

yum -y install nfs-utils rpcbind  # 安装NFS服务和RPC支持组件
systemctl enable nfs-server rpcbind  # 设置服务开机自启动

(2)配置共享目录

vi /etc/exports  # 编辑NFS配置文件
# 添加以下内容(示例):
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)  # 共享/opt/wwwroot目录给192.168.10.0/24网段,允许读写

(3)启动 NFS 服务

systemctl start rpcbind  # 先启动RPC服务
systemctl start nfs-server  # 再启动NFS服务
netstat -anpt | grep rpc  # 检查RPC相关端口是否正常监听

(4)查看共享目录

showmount -e  # 查看本机发布的NFS共享目录

3.2 客户端访问 NFS 共享

(1)客户端环境准备

yum -y install rpcbind nfs-utils  # 安装客户端所需组件
systemctl enable rpcbind  # 启用RPC服务并设置自启动
systemctl start rpcbind

(2)手动挂载 NFS 共享

mount 192.168.10.104:/opt/wwwroot /var/www/html  # 挂载NFS共享目录到本地路径
tail -1 /etc/mtab  # 确认挂载结果

(3)设置自动挂载

vi /etc/fstab  # 编辑fstab文件
# 添加以下内容:
192.168.10.104:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0  # _netdev参数表示设备依赖网络

四、案例:LVS-NAT 负载均衡群集

4.1 案例环境准备

主机

操作系统

IP 地址

应用

lvs

OpenEuler 24.03

192.168.10.101

ipvsadm(调度器)

web1

OpenEuler 24.03

192.168.10.102

Apache(真实服务器)

web2

OpenEuler 24.03

192.168.10.103

Apache(真实服务器)

nfs

OpenEuler 24.03

192.168.10.104

NFS(共享存储)

4.2 配置负载调度器

(1)开启路由转发

vi /etc/sysctl.conf  # 编辑系统参数配置文件
# 添加:
net.ipv4.ip_forward=1  # 启用IP转发功能
sysctl -p  # 立即生效配置

(2)配置 VIP 地址

ifconfig ens36 inet 192.168.74.129 netmask 255.255.255.0  # 为ens36网卡配置VIP地址
# 若网卡配置文件不存在,创建并编辑:
vi /etc/sysconfig/network-scripts/ifcfg-ens36
# 内容示例:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.74.129
NETMASK=255.255.255.0

(3)配置 LVS 负载策略

ipvsadm -C  # 清除原有LVS策略
ipvsadm -A -t 192.168.74.129:80 -s rr  # 创建虚拟服务器,使用轮询算法
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1  # 添加真实服务器1,NAT模式,权重1
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1  # 添加真实服务器2,NAT模式,权重1
ipvsadm --save  # 保存LVS策略
systemctl enable ipvsadm  # 设置ipvsadm服务开机自启动

4.3 配置真实服务器节点

(1)设置网关指向调度器

route del default gw 192.168.10.254  # 删除原有默认网关
route add default gw 192.168.10.101  # 设置LVS调度器为新网关

(2)安装 Web 服务并配置

yum -y install httpd  # 安装Apache服务
mount 192.168.10.104:/opt/wwwroot /var/www/html  # 挂载NFS共享目录
vi /var/www/html/index.html  # 创建测试网页(不同节点可设置不同内容用于测试)
# 示例内容:
<h1>LVS负载均衡群集--节点1测试网页</h1>
systemctl start httpd  # 启动Apache服务
systemctl enable httpd  # 设置开机自启动

4.4 测试 LVS 群集效果

(1)查看 LVS 节点状态

ipvsadm -ln  # 查看LVS群集配置和节点状态
# 输出示例:
TCP 192.168.74.129:80 rr
->192.168.10.102:80 Masq 1 0 0
->192.168.10.103:80 Masq 1 0 0

(2)查看连接记录

ipvsadm -lnc  # 查看客户端连接详细信息

(3)浏览器访问测试

通过浏览器多次访问​​http://192.168.74.129​​,观察网页内容是否在不同节点间切换,验证负载均衡效果。

五、总结

LVS-NAT 模式作为最基础的负载均衡方案,通过地址转换实现请求分发,具有配置简单、安全性高的特点,适合中小规模应用场景。在实际生产环境中,可根据需求进一步扩展:

  1. 性能优化:切换至 DR 模式或 TUN 模式,提升吞吐量
  2. 高可用增强:结合 Keepalived 实现调度器热备
  3. 复杂场景:与 Docker、Kubernetes 等容器技术结合,构建弹性集群
  4. 监控体系:集成 Prometheus、Grafana 等工具,实时监控集群状态

LVS 作为 Linux 内核级的负载均衡方案,凭借其高效性和稳定性,在金融、电商、云计算等领域广泛应用。掌握 LVS 核心原理与配置,是构建高可用、可扩展服务架构的重要基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2394581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费文本转语音工具体验:祈风TTS使用

简介&#xff1a;语音生成的另一种方式 现在很多人通过视频记录生活&#xff0c;表达观点。拍摄剪辑不难&#xff0c;配音成了常见难题。部分人对自己的声音不够自信&#xff0c;也有人在特定场景下不便出声。文本转语音工具可以成为解决方案。 常见的TTS&#xff08;Text To…

JS和TS的区别

JavaScript 与 TypeScript 的主要区别和特性对比 1. 基础定义 JavaScript 是一种动态、弱类型的编程语言&#xff0c;广泛应用于前端开发以及通过 Node.js 扩展到后端开发。TypeScript 则是 JavaScript 的超集&#xff0c;它在 JavaScript 的基础上添加了静态类型系统和其他增…

Python实现P-PSO优化算法优化BP神经网络分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能技术的快速发展&#xff0c;神经网络在分类任务中展现了强大的性能。BP&#xff08;Back Propagation&…

Linux --进度条小程序更新

这里使用随机数来模拟下载量&#xff0c;来实现一个下载进度更新的小程序 main.c 的代码&#xff0c;其中downlod这个函数使用的是函数指针&#xff0c;如果有多个进度条函数可以传入进行多样化的格式下载显示&#xff0c;还需要传入一个下载总量&#xff0c;每次"下载以…

关于镜像如何装进虚拟机

本篇文章为感谢小仙猪老师特别编写 本篇文章仅以Ubuntu为例 目录 创建虚拟机 汉化 如果没有China选项 检查网络 创建虚拟机 第一步&#xff0c;创建虚拟机 因为&#xff0c;第一个选项是会把虚拟机的文件放在c盘因此&#xff0c;这里博主选择自定义&#xff0c;然后下一…

智慧体育馆数字孪生,场馆管理智能化

图扑数字孪生智慧体育馆可视化管理平台。通过高精度三维建模&#xff0c;对体育馆建筑结构、设施设备等进行 1:1 虚拟映射&#xff0c;全方位还原场馆物理实体。系统集成多维度传感器数据&#xff0c;实现对人流量、客流密度、区域拥堵指数等信息的实时采集与分析&#xff0c;动…

回归算法模型之线性回归

哈喽&#xff01;我是 我不是小upper&#xff5e; 今天来和大家聊聊「线性回归」—— 这是机器学习里最基础、最直观的算法之一&#xff0c;咱们用一个超简单的例子就能搞懂它&#xff01; 先看一个生活场景 假设你是房产中介&#xff0c;遇到一个灵魂拷问&#xff1a; 客户有…

【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA

深度推理&#xff08;含链式法则详解&#xff09;RNN, LSTM, GRU&#xff0c;VQA RNN 输入表示方式 在循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;中&#xff0c;我们处理的是一段文字或语音等序列数据。对于文本任务&#xff0c;输入通常是单词序列…

【Qt】Bug:findChildren找不到控件

使用正确的父对象调用 findChildren&#xff1a;不要在布局对象上调用 findChildren&#xff0c;而应该在布局所在的窗口或控件上调用。

【linux】linux进程概念(四)(环境变量)超详细版

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系列专栏<—请点击 倘若命中无此运&#xff0c;孤身亦可登昆仑&#xff0c;送给屏幕面前的读者朋友们和小编自己! 目录 前言一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示…

从零开始的二三维CAD|CAE软件: 解决VTK,DICOM体素化-失效问题.

背景: 在从零开始的二三维软件开发中, 需要加载CT的dicoms影像文件, 并将其序列化之后的数据,体素化 可惜..vtk的c#库,将其体素化的时候,竟然失败... 使用vtkDicomReader ,设置 Dicom文件夹读取,竟然不停的失败...从网上找了一些版本.也没啥可用的资料... 解决办法: 直接…

【计算机网络】应用层协议Http——构建Http服务服务器

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a; 【Linux笔记】——进程间关系与守护进程 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、Http协…

linux版本vmware修改ubuntu虚拟机为桥接模式

1、先打开linux版本vmware操作界面 2、设置虚拟路由编辑器的桥接模式 输入账号密码 自动模式 不需要进行任何操作 3、修改虚拟机设置网络模式为桥接模式 然后save保存一下配置 4、现在进入虚拟机查看ens33配置 网卡启动但是没有ip 5、自己进行设置修改ubuntu网络配置文件 cd …

从0到1上手Trae:开启AI编程新时代

摘要&#xff1a;字节跳动 2025 年 1 月 19 日发布的 Trae 是一款 AI 原生集成开发环境工具&#xff0c;3 月 3 日国内版推出。它具备 AI 问答、代码自动补全、基于 Agent 编程等功能&#xff0c;能自动化开发任务&#xff0c;实现端到端开发。核心功能包括智能代码生成与补全、…

Linux之MySQL安装篇

1.确保Yum环境是否能正常使用 使用yum环境进行软件的安装 yum -y install mysql-server mysql2.确保软件包已正常完成安装 3.设置防火墙和selinux配置 ## 关闭防火墙 systemctl stop firewalld## 修该selinux配置 vim /etc/selinux/config 将seliuxenforcing修改为sel…

Asp.Net Core 如何配置在Swagger中带JWT报文头

文章目录 前言一、配置方法二、使用1、运行应用程序并导航到 /swagger2、点击右上角的 Authorize 按钮。3、输入 JWT 令牌&#xff0c;格式为 Bearer your_jwt_token。4、后续请求将自动携带 Authorization 头。 三、注意事项总结 前言 配置Swagger支持JWT 一、配置方法 在 …

第12讲、Odoo 18 权限控制机制详解

目录 引言权限机制概述权限组&#xff08;Groups&#xff09;访问控制列表&#xff08;ACL&#xff09;记录规则&#xff08;Record Rules&#xff09;字段级权限控制按钮级权限控制菜单级权限控制综合案例&#xff1a;多层级权限控制最佳实践与注意事项总结 引言 Odoo 18 提…

8086 处理器 Flags 标志位全解析:CPU 的 “晴雨表” 与 “遥控器”总结:

引入&#xff1a; 你是否好奇&#xff0c;当 CPU 执行一条加法指令时&#xff0c;如何自动判断结果是否超出范围&#xff1f;当程序跳转时&#xff0c;如何快速决定走哪条分支&#xff1f;甚至在调试程序时&#xff0c;为何能让 CPU “一步一停”&#xff1f;这一切的答案&…

具有离散序列建模的统一多模态大语言模型【AnyGPT】

第1章 Instruction 在人工智能领域、多模态只语言模型的发展正迎来新的篇章。传统的大型语言模型(LLM)在理解和生成人类语言方面展现出了卓越的能力&#xff0c;但这些能力通常局限于 文本处理。然而&#xff0c;现实世界是一个本质上多模态的环境&#xff0c;生物体通过视觉、…

物流项目第九期(MongoDB的应用之作业范围)

本项目专栏&#xff1a; 物流项目_Auc23的博客-CSDN博客 建议先看这期&#xff1a; MongoDB入门之Java的使用-CSDN博客 需求分析 在项目中&#xff0c;会有两个作业范围&#xff0c;分别是机构作业范围和快递员作业范围&#xff0c;这两个作业范围的逻辑是一致的&#xf…