01 LVS负载均衡群集

news2024/9/28 1:22:28

1.1 LVS群集应用基础

群集的称呼来自于英文单词“Cluster",表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,以区分于单个服务器。

1.1.1 群集技术概述

LVS(Linux Virtual Server)是Linux虚拟服务器的简称,是一个由章文嵩博士发起的自由软件项目。LVS工作在内核的TCP/IP协议栈上,采用IP负载均衡技术和基于内容请求分发技术,将请求均衡地转移到不同的服务器上执行,从而实现高性能、高可用的服务器集群。LVS已成为Linux标准内核的一部分,无需重新编译内核即可使用。

1.群集的类型

无论是哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口。根据群集所针对的目标差异,可分为以下三种类型。

  • 负载均衡群集:以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载的整体性能
  • 高可用群集;以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(H)的容错效果。
  • 高性能运算群集:以提高应用系统的 CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力

2.负载均衡的分层结构

在典型的负载均衡群集中,包括三个层次的组件,如图1.1所示。前端至少有一个负载调度器(Load Balancer,或称为Director)负责响应并分发来自客户机的访问请求;后端由大量真实服务器(RealServer)构成服务器池(Server Pool),提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的;为了保持服务的一致性,所有节点使用共享存储设备。

1.负载调度器(Load Balancer)
  • 位于集群的最前端,负责接收并分发来自客户端的请求。
  • 使用虚拟IP(VIP)地址对外提供服务,作为集群的单一入口点。
  • 安装有LVS模块和监控模块(如Ldirectord),用于监控Real Server的健康状况。
2.服务器池(Server Pool)
  • 由一组实际运行应用服务的服务器组成(Real Server)。
  • 每个Real Server具有独立的真实IP(RIP)地址,只处理由调度器分发过来的请求。
3.共享存储(Shared Storage)
  • 为服务器池中的所有节点提供一致的文件存储服务,确保服务的一致性。
  • 通常使用NAS设备、NFS或集群文件系统(如GFS、OCFS2)实现。

3.负载均衡的工作模式

关于群集的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP的负载调度是效率最高的。基于IP的负载均衡模式中,常见的有地址转换、IP 隧道和直接路由三种工作模式,如图1.2所示。

  • 地址转换(Network Address Translation):简称 NAT 模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
  • IP 隧道(IP Tunnel):简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP 隧道与负载调度器相互通信。
  • 直接路由(Direct Routing):简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。

以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就采用这种方式。

1.1.2 LVS虚拟服务器

Linux Virtual Server 是针对Linux 内核开发的一个负载均衡项目,由我国的章文嵩博士在 1998年5月创建,官方站点位于 http://www,linuxvirtualserver.org/。LVs 实际上相当于基于IP 地址的虚拟化应用,为基于 IP 地址和内容请求分发的负载均衡提出了一种高效的解决方法。

LVS 现在已成为Linux 内核的一部分,默认编译为ip_vs 模块,必要时能够自动调用。在 Cent0s 7系统中,以下操作可以手动加载 ip_vs 模块,并查看当前系统中 ip_vs 模块的版本信息。

1.LVS的负载调度算法

1. 轮询调度(Round-Robin Scheduling, RR)
  • 特点:按顺序轮流分配请求到不同的服务器上,确保每台服务器接收到的请求数大致相同。
  • 优点:简洁性,无需记录当前所有连接的状态,是一种无状态调度。
2. 加权轮询调度(Weighted Round-Robin Scheduling, WRR)
  • 特点:根据后端服务器的处理能力给每台服务器分配不同的权值,权值越高的服务器接收到的请求数越多。
  • 优点:能够更灵活地根据服务器性能进行负载均衡。
3. 最小连接调度(Least-Connection Scheduling, LC)
  • 特点:动态地将新请求分发到当前连接数最少的服务器上,以平衡各服务器的负载。
  • 优点:通过服务器当前所活跃的连接数来估计服务器的负载情况,实现更精确的负载均衡。
4. 加权最小连接调度(Weighted Least-Connection Scheduling, WLC)
  • 特点:类似于最小连接算法,但考虑了服务器的权值,权值越高的服务器将承受更大比例的活动连接负载。
  • 优点:在最小连接调度的基础上,增加了对服务器处理能力的考虑,使得负载均衡更加精细。
5. 基于局部性的最少链接(Locality-Based Least Connections Scheduling, LBLC)
  • 特点:主要用于Cache集群系统,将相同目标IP地址的请求调度到同一台服务器,以提高缓存命中率和处理能力。
6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling, LBLCR)
  • 特点:在LBLC的基础上,增加了服务器组的复制功能,以提高可用性和容错性。
7. 目标地址散列调度(Destination Hashing Scheduling, DH)
  • 特点:根据请求的目标IP地址进行散列运算,将请求分配到相应的服务器上,适用于缓存服务器的负载均衡。
8. 源地址散列调度(Source Hashing Scheduling, SH)
  • 特点:根据请求的源IP地址进行散列运算,将请求分配到同一台服务器上,以保证来自同一客户端的请求始终被同一台服务器处理。

2.使用ipsadm管理
工具ipvsadm 是在负载调度器上使用的LVS 群集管理工具,通过调用 ip_vs 模块来添加、删除服务器节点,以及查看群集的运行状态。在Cent0s7系统中,需要手动安装ipvsadm.x86 64 0:1.27-7.e17 软件包。

[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@localhost ~]# 

LVS 群集的管理工作主要包括创建虚拟服务器、添加服务器节点、查看群集节点状态、删除服务器节点和保存负载分配策略。下面分别展示使用ipvsadm命令的操作方法。

2.1:构建LVS负载均衡群集

2.1.1:地址转换模式(LVS-NAT)

1:实验环境:

2:配置负载调度器

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@localhost ~]# vi /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p

[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s rr
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1
[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -m -w 1
[root@localhost ~]# systemctl enable ipvsadm

3:配置web节点服务器

(1)在两个web节点安装httpd,并创建测试页

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# vi /var/www/html/index.html
LVS test1

注意:

另一台web节点的测试页面可以修改为其他文字,这样在测试时,就可以看到调度效果

vi /var/www/html/index.html
LVS test2

(2)启动httpd服务

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

4:测试LVS群集

客户端测试网站http://172.16.16.172

5:NFS共享存储服务

1:使用NFS发布共享资源
(1)安装nfs-utils、rpcbind软件包
[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
(2)设置共享目录
[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot   192.168.10.0/24(rw,sync,no_root_squash)
(3)启动NFS服务程序
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
(4)在web节点挂载nfs
[root@localhost ~]# yum -y install nfs-utils

[root@localhost ~]# mount -t nfs 192.168.10.105:/opt/wwwroot /var/www/html

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

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

相关文章

linux下的线程

概念理解 linux下没有线程的概念,只有轻量级进程的概念, 有接口:clone() 是clone()调用,在库中创建栈 源码解析 int clone(int (*fn)(void *), void *child_stack,int flags, void *arg, .../* pid_t *p…

【Spring】详细了解静态代理和动态代理的使用

目录 1.代理模式介绍 2. 静态代理 3.动态代理 3.1 JDK动态代理 3.2 CGLIB动态代理 4. 动态代理和静态代理的区别 1.代理模式介绍 代理模式分为动态代理和静态代理,目的是在不直接暴露真实对象的情况下,通过代理对象来间接访问真实对象,从…

【设计模式】设计模式之观察者模式

文章目录 观察者模式什么是观察者模式引入组成UML图代码实现1. 定义观察者接口2. 定义主题接口3. 实现具体观察者4. 实现具体被观察者5.测试 应用场景优点缺点 观察者模式 什么是观察者模式 观察者模式(Observer Pattern)是一种设计模式 它定义了一种…

vLLMcuda安装笔记

1. 引言 最近在部署Qwen模型时,文档上有提到强烈建议用vLLM来部署模型,按照公开的性能测试数据,用vLLM部署Qwen模型的文本推理速度要比transformers部署快3~4倍。带着这个好奇就开始安装尝试,但试下来这个安装过程并没有那么顺利…

最新个人免签约支付系统源码|PHP源码 | 码支付系统 | ThinkPHP6框架 | 开源

源码介绍: 这个最新的个人专用免签约支付系统源码!是PHP源码写的哦,而且是用ThinkPHP6框架开发的,完全开源的码支付系统。 这个系统适合个人用户使用,作为收款的免签约解决方案。它还加入了监控端,可以拒…

Linux 调试追踪: trace-cmd 和 kernelshark

文章目录 1. 前言2. 概述3. trace-cmd3.1 下载3.2 交叉编译3.3 安装、运行3.3.1 trace-cmd 示范:抓取系统调度信息 4. kernelshark5. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承…

Java多线程-----定时器(Timer)及其实现

目录 一.定时器简介: 二.定时器的构造方法与常见方法: 三.定时器的模拟实现: 思路分析: 代码实现: 在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作,这…

【QT】常用控件-上

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 目录 👉🏻QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…

Python | Leetcode Python题解之第309题买卖股票的最佳时机含冷冻期

题目: 题解: class Solution:def maxProfit(self, prices: List[int]) -> int:if not prices:return 0n len(prices)f0, f1, f2 -prices[0], 0, 0for i in range(1, n):newf0 max(f0, f2 - prices[i])newf1 f0 prices[i]newf2 max(f1, f2)f0, …

【笔记】《冲击弹性波理论与应用》[2-2] 振动信号分析

1.前级硬件滤波 - 降噪 2.软件降噪 2.1 移动平滑滤波 2.1.1 移动平滑滤波的效果 2.2 经验模态分解法 2.1.1 效果 3 信号分析 除了FFT,最大熵和小波变换现在也很流行。 3.1 最大熵 3.1.1 与FFT的比对 3.2 相关性分析 3.2.1 自相关 3.2.2 互相关 3.3. 小波 非等周期信号 3…

《python语言程序设计》2018第6章第28题 掷骰子 两个色子,分别是1到6

2、3、12 玩家输 7、11玩家赢 4、5、6、8、9、10算1点&#xff0c;之后出7玩家输或者和上一次相同。def rolled(num_t):count 0still_win 0second_win 0still_lose 0second_lose 0while count < num_t:a_1 random.randint(1, 6)b_1 random.randint(1, 6)tTen a_1 b…

力扣-41.缺失的第一个正数

刷力扣热题–第二十五天:41.缺失的第一个正数 新手第二十五天 奋战敲代码&#xff0c;持之以恒&#xff0c;见证成长 1.题目简介 2.题目解答 做这道题有点投机取巧的感觉&#xff0c;要求时间复杂度O(N),且空间复杂度O(1)&#xff0c;那么就是尽可能的去找到更多的可能性&…

C语言程序设计之数组1

程序设计之数组1 问题1_1代码1_1结果1_1 问题1_2代码1_2结果1_2 问题1_3代码1_3结果1_3 问题1_4代码1_4结果1_4 问题1_5代码1_5结果1_5 问题1_1 函数 f u n fun fun 的功能是&#xff1a;移动一位数组中的内容&#xff0c;若数组中有 n n n 个整数&#xff0c;要求把下标从 …

软件测试生命周期、BUG描述与处理策略

软件测试的生命周期 需求分析&#xff1a;需求是否完整、是否正确 测试计划&#xff1a;确定由谁测试、测试的起止时间、设计哪些模块 测试设计、测试开发&#xff1a;写测试用例&#xff08;手工、自动化测试用例&#xff09;、编写测试工具 执行测试用例 测试评估&…

衢州骨伤科医院为98岁高龄老人做髋关节置换,患者第三天便下地行走

灵活迈步、周身整洁、双手提着两口袋鸡蛋......在清晨的菜市场里&#xff0c;王阿婆&#xff08;化名&#xff09;在人群里穿梭&#xff0c;买一些自己和女儿想吃的菜。如果没有看到她的脸&#xff0c;大家都以为她只有 60 多岁&#xff1b;再定睛一看&#xff0c;她虽然脸上布…

Token的原理及区别,以及与Cookie,Session之间的区别?

Token&#xff0c;特别是JSON Web Token&#xff08;JWT&#xff09;&#xff0c;也是一种用于管理用户状态和身份的机制&#xff0c;但它与Cookie和Session的工作方式有所不同。下面将详细解释Token如何管理用户状态和身份。 Token的工作原理 Token是一种无状态的认证机制&am…

QQ邮箱 + Kafka + Redis + Thymeleaf 模板引擎实现简单的用户注册认证

1. 前提条件 1.1 Redis 1.1.1 拉取 Redis 镜像 docker pull redis:latest 1.1.2 启动 Redis 容器 docker run --name my-redis -d -p 6379:6379 redis:latest1.2 Kafka 1.2.1 docker-compose.yml version: 3.8 services:zookeeper:image: "zookeeper:latest"h…

【C++入门(上)】—— 我与C++的不解之缘(一)

前言&#xff1a; 学完C语言和初阶数据结构&#xff0c;感觉自己又行了&#xff1f; 接下来进入C的学习&#xff0c;准备好接受头脑风暴吧。 一、第一个C程序 C 的第一个程序&#xff0c;梦回出学C语言&#xff0c;第一次使用C语言写代码&#xff1b;这里使用C写第一个C代码。 …

微信文件如何直接打印及打印功能在哪里设置?

在数字化时代&#xff0c;打印需求依旧不可或缺&#xff0c;但传统打印店的高昂价格和不便操作常常让人头疼。幸运的是&#xff0c;琢贝打印作为一款集便捷、经济、高效于一体的网上打印平台&#xff0c;正逐渐成为众多用户的首选。特别是通过微信小程序下单&#xff0c;更是让…

html+css前端作业和平精英2个页面(无js)

htmlcss前端作业和平精英2个页面&#xff08;无js&#xff09;有视频播放器等功能效果 下载地址 https://download.csdn.net/download/qq_42431718/89608232 目录1 目录2 项目视频 和平精英2个页面&#xff08;无js&#xff09;带视频播放 页面1 页面2