LVS搭建负载均衡
LVS搭建负载均衡
引言
在现代互联网应用中,用户对服务的可用性和响应速度要求越来越高。为了应对高并发请求,保证系统的稳定性和容错能力,负载均衡技术应运而生。LVS(Linux Virtual Server)是一种高性能、高可用性的负载均衡解决方案,能够将多个后端服务器聚合成一个虚拟服务器,以提高服务的可用性和扩展性。本文将详细介绍LVS的搭建过程,包括环境准备、配置步骤、监控与维护等方面。
一、LVS的基本概念
1.1 什么是LVS?
LVS是Linux内核的一部分,它提供了一种通过IP负载均衡的方式,将用户请求分发到多台后端服务器。LVS可以实现高效的负载均衡和高可用性,适用于大规模网站和应用。
1.2 LVS的工作原理
LVS主要有三种工作模式:
-
NAT模式(Network Address Translation):在这种模式下,LVS将请求转发给后端服务器,然后将响应再转发给客户端。适合于后端服务器和客户端在同一网络中时。
-
DR模式(Direct Routing):在这种模式下,LVS将请求直接送到后端服务器,响应也直接返回给客户端,减少了负载均衡器的负担,提高了性能。
-
TUN模式(Tunneling):通过隧道技术,将负载均衡器与后端服务器分开。
1.3 LVS的优势
- 高可用性:通过负载均衡,系统不会因为单点故障而导致服务中断。
- 可扩展性:可以根据需求动态添加或移除后端服务器。
- 灵活性:支持多种负载均衡算法,如轮询、最少连接、加权轮询等。
二、环境准备
在开始搭建LVS之前,需要准备以下环境:
2.1 服务器准备
- 一台LVS负载均衡器(假设IP为
192.168.1.100)。 - 多台后端真实服务器(假设IP为
192.168.1.101和192.168.1.102)。 - 确保所有服务器之间的网络连接畅通。
2.2 安装依赖
在LVS负载均衡器上,需要安装ipvsadm工具。可以使用以下命令在CentOS上安装:
sudo yum install ipvsadm -y
三、LVS的基本配置
3.1 启动IPVS服务
首先,启动IPVS服务:
sudo ipvsadm -A -t 192.168.1.200:80 -s rr
上述命令中,192.168.1.200是我们将用于负载均衡的虚拟IP(VIP),80是监听的端口,-s rr表示使用轮询算法。
3.2 添加真实服务器
接下来,添加后端真实服务器:
sudo ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.101:80 -g
sudo ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.102:80 -g
这里,-g表示使用直接路由模式。
3.3 查看配置
使用以下命令查看当前的LVS配置:
sudo ipvsadm -L -n
你应该能看到类似于以下的输出:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.200:80 rr-> 192.168.1.101:80 Route 1 0 0-> 192.168.1.102:80 Route 1 0 0
3.4 配置后端服务器
确保后端服务器(192.168.1.101和192.168.1.102)上安装了Web服务(如Apache或Nginx),并确保相应服务正常运行。可以创建一个简单的HTML页面来确认服务器是否能够正常响应请求。
<!-- /var/www/html/index.html -->
<!DOCTYPE html>
<html>
<head><title>Hello from Server</title>
</head>
<body><h1>Hello from Server 1</h1>
</body>
</html>
四、健康检查与监控
为了确保LVS能够将流量分发到健康的后端服务器,需要实现健康检查。可以使用keepalived来实现这一功能。
4.1 安装Keepalived
在LVS负载均衡器上安装keepalived:
sudo yum install keepalived -y
4.2 配置Keepalived
编辑/etc/keepalived/keepalived.conf文件,设置虚拟IP和健康检查。以下是一个基本的配置示例:
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.200 # VIP}
}virtual_server 192.168.1.200 80 {delay_loop 6lb_algo wrr # 使用加权轮询算法lb_kind NATprotocol TCPreal_server 192.168.1.101 80 {weight 3HTTP_GET {url {path /health_check}timeout 3fall 2rise 2}}real_server 192.168.1.102 80 {weight 2HTTP_GET {url {path /health_check}timeout 3fall 2rise 2}}
}
4.3 启动Keepalived
启动Keepalived服务:
sudo systemctl start keepalived
sudo systemctl enable keepalived
五、LVS的负载均衡算法
LVS支持多种负载均衡算法,包括:
5.1 轮询(Round Robin)
默认的负载均衡算法,适用于请求处理时间相近的场景。通过ipvsadm命令设置:
sudo ipvsadm -A -t 192.168.1.200:80 -s rr
5.2 最少连接(Least Connection)
将请求分发到当前连接数最少的服务器,适合处理时间长的请求。通过ipvsadm命令设置:
sudo ipvsadm -A -t 192.168.1.200:80 -s lc
5.3 加权轮询(Weighted Round Robin)
根据服务器的权重进行负载均衡,权重越高的服务器接收的请求越多。通过ipvsadm命令设置:
sudo ipvsadm -A -t 192.168.1.200:80 -s wrr
5.4 IP哈希(IP Hash)
根据客户端的IP地址进行负载均衡,确保来自同一IP的请求总是被路由到同一台服务器。通过ipvsadm命令设置:
sudo ipvsadm -A -t 192.168.1.200:80 -s sh
六、监控与维护
6.1 使用监控工具
可以使用监控工具(如Zabbix、Prometheus等)监控LVS的性能指标,及时发现并解决问题。监控内容包括:
- 负载均衡器的CPU和内存使用情况。
- 后端服务器的健康状态和连接数。
6.2 定期检查
定期检查LVS的配置和运行状态,确保其正常运行。可以使用以下命令:
sudo ipvsadm -L -n
6.3 性能调优
根据实际流量情况,适时调整后端服务器的权重,以实现更好的负载均衡。
6.4 安全性考虑
在生产环境中,需要考虑安全性,防止未授权访问。可以使用iptables等工具限制访问。
七、故障处理与常见问题
7.1 服务器故障
当某台服务器出现故障时,可以通过以下命令查看LVS状态:
sudo ipvsadm -L -n
确保能够看到健康的真实服务器。
7.2 配置错误
如果LVS无法正常工作,检查配置文件是否存在错误。查看LVS的日志信息:
sudo tail -f /var/log/messages
7.3 网络问题
检查网络连接,确保LVS能够访问后端服务器:
ping 192.168.1.101
八、总结
LVS作为一种高效的负载均衡解决方案,能够有效提升系统的可用性和扩展性。通过合理的配置和优化,可以充分发挥LVS的优势,满足不同场景的需求。在搭建LVS的过程中,注意网络的配置、负载均衡算法的选择及后端服务器的健康监控,确保系统的稳定运行。
相关文章:
LVS搭建负载均衡
LVS搭建负载均衡 引言 在现代互联网应用中,用户对服务的可用性和响应速度要求越来越高。为了应对高并发请求,保证系统的稳定性和容错能力,负载均衡技术应运而生。LVS(Linux Virtual Server)是一种高性能、高可用性的…...
Unity MVC框架演示 1-1 理论分析
本文仅作学习笔记分享与交流,不做任何商业用途,该课程资源来源于唐老狮 1.一般的图解MVC 什么是MVC我就不说了,老生常谈,网上有大量的介绍,想看看这三层都起到什么职责?那就直接上图吧 2.我举一个栗子 我有…...
基于springboot+vue人脸识别的考勤管理系统(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
【api连接ChatGPT的最简单方式】
通过api连接ChatGPT的最简单方式 建立client 其中base_url为代理,若连接官网可省略;配置环境变量 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )或给出api和base_url client OpenAI(api_key&…...
技术成神之路:设计模式(二十)装饰模式
介绍 装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变对象自身的情况下,动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。 1.定义 装饰模式通过创建一个装饰类,将功能动态地添加…...
利用特征点采样一致性改进icp算法点云配准方法
1、index、vector 2、kdtree和kdtreeflann 3、if kdtree.radiusSearch(。。。) > 0)...
LabVIEW惯性导航系统仿真平台
LabVIEW开发捷联惯性导航系统仿真平台,采用模块化设计,利用LabVIEW的图形化编程特性,提高了系统仿真的效率和精度,同时具备良好的可扩展性和用户交互性。 项目背景 当前,惯性导航系统(INS)的研…...
es简单实现文章检索功能
使用的api是:Elasticsearch Java API client 8.0 官网:Package structure and namespace clients | Elasticsearch Java API Client [8.15] | Elastic 1.建立索引库 实现搜索功能字段: title:文章标题content:文章内…...
太速科技-607-基于FMC的12收和12发的光纤子卡
基于FMC的12收和12发的光纤子卡 一、板卡概述 本卡是一个FPGA夹层卡(FMC)模块,可提供高达2个CXP模块接口,提供12路收,12路发的光纤通道。每个通道支持10Gbps,通过Aurora协议,可以组成X4࿰…...
UEFI学习笔记(十):系统表与ACPI表的遍历
一、概述 在 UEFI 系统表中,有几个关键的表用于提供系统信息、服务和硬件抽象。这些表可以通过 EFI_SYSTEM_TABLE 访问,常见的 UEFI 系统表如下: 1、EFI_SYSTEM_TABLE (系统表) EFI_SYSTEM_TABLE 是一个指针,包含多个服务和系统…...
【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。
【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。 【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。 文章目录 【深度学习基础模型】液态状态机࿰…...
深入理解链表(SList)操作
目录: 一、 链表介绍1.1、 为什么引入链表1.2、 链表的概念及结构1.3、 链表的分类 二、 无头单向非[循环链表](https://so.csdn.net/so/search?q循环链表&spm1001.2101.3001.7020)的实现2.1、 [单链表](https://so.csdn.net/so/search?q单链表&spm1001.2…...
03. prometheus 监控 Linux 主机
文章目录 一、prometheus 监控 Linux 主机二、防火墙打开端口1. 方式一:使用 iptables 添加白名单(推荐使用):2. 方式二:重载防火墙 一、prometheus 监控 Linux 主机 1. 官网下载 node_exporter 官网:htt…...
AI占据2024诺贝尔两大奖项,是否预示着未来AI即一切?
本次诺贝尔物理学和学奖的获得者都与AI息息相关,可谓是“AI领域的大丰收”。 2024年诺贝尔物理学奖揭晓:瑞典皇家科学院公布了2024年诺贝尔物理学奖的获得者。他们是美国的约翰霍普菲尔德(John J. Hopfield),以及加拿…...
[已解决] Install PyTorch 报错 —— OpenOccupancy 配环境
目录 关于 常见的初始化报错 环境推荐 torch, torchvision & torchaudio cudatoolkit 本地pip安装方法 关于 OpenOccupancy: 语义占用感知对于自动驾驶至关重要,因为自动驾驶汽车需要对3D城市结构进行细粒度感知。然而,现有的相关基准在城市场…...
6. PH47 代码框架硬件开发环境搭建
概述 PH47代码框架的硬件开发环境搭建同样简单, 建立基本的 PH47 框架学习或二次开发的硬件开发环境所需设备如下: BBP 飞控板及相关软硬件: BBP飞控板,或者至少一块Stm32F411核心板(WeAct Studio)Stm32程序烧录工具…...
package.json配置
package.json配置 描述配置文件配置脚本配置依赖配置发布配置系统配置第三方配置 描述配置 name : 项目名称,第三方包可以通过npm install 包名安装 "name":"react"version : 项目版本,项目版本号 "version" : "18.2…...
视频怎么转gif动图?5个简单转换方法快来学(详细教程)
相信大家在社交平台上会经常看到一些有趣的gif动图表情包,有些小伙伴就会问:这些GIF动图是如何制作的呢?一般GIF动图表情包可以用视频来制作,今天小编就来给大家分享几个视频转成GIF动图的方法,相信通过以下的几个方法…...
10月更新:优维EasyOps®需求解决更彻底,功能体验再升级
升 级 不 止 步 欢迎来到 需求至上,功能完善 的 \ EasyOps 7.5版本 / 👇 >> 联动架构视图:深度融合监控与资源拓扑 传统上,依赖监控态势感知系统固有的分层拓扑结构虽有其优势,但在处理复杂系统尤其是核心数…...
黑马javaWeb笔记重点备份1:三层架构、IOC、DI
来自:【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)】 https://www.bilibili.com/video/BV1m84y1w7Tb/?p75&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c398…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
