Linux5.1 LVS负载均衡群集

news2025/7/17 2:18:39

文章目录

  • 计算机系统
    • 5G云计算
      • 第一章 LINUX LVS负载均衡群集
        • 一、LVS概述
          • 1.群集的含义
          • 2.群集的特点
          • 3.扩展服务器的方式
          • 4.群集的类型
          • 5.负载均衡的结构
          • 6.负载均衡集群工作模式分析
        • 二、LVS-NAT 的部署
          • 1.关于 LVS 虚拟服务器
          • 2.LVS的负载调度算法
          • 3.使用 ipvsadm 工具
        • 三、NAT模式 LVS负载均衡群集部署
          • 1.部署共享存储(tomcat多实例服务器:192.168.58.60)
          • 2.配置节点服务器(192.168.58.61、192.168.68.62)
          • 3.配置负载调度器(内网关 ens33:192.168.58.30,外网关 ens36:12.0.0.30)
          • 4.测试效果

计算机系统

5G云计算

第一章 LINUX LVS负载均衡群集

一、LVS概述

互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求。

如果使用小型机、大型机,价格比较昂贵,所以大多数企业会使用多台相对廉价的普通服务器构建服务群集。通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并已同一个IP地址对外提供相同的服务。

在企业中常用的一种群集技术——LVS(Linux Virtual Server,Linux虚拟服务器)

1.群集的含义

Cluster(集群、群集),由多台主机构成,但对外只表现为要给整体,只提供一个访问入口(域名和IP地址),相当于一个大型计算机

2.群集的特点

1)由多台主机构成

2)都干同样的一件事

3)对外展现是一个整体

3.扩展服务器的方式

1)纵向扩展:添加服务器硬件

2)横向扩展:添加服务器的数量

4.群集的类型

根据群集所针对的目标差异,可分为三种类型:负载均衡群集、高可用群集、高性能运算群集

1)负载均衡群集(Load Balance Cluster)

提高应用系统的响应能力、尽可能处理更多的访问请求减少延迟为目标,获得高并发、高负载(LB)的整体性能

LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。根据软件类来分应用,代表是LVS、Nginx、HAproxy;根据硬件类来分应用,代表的是F5、绿盟

2)高可用群集(High Availability Cluster)

提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果

HA的工作方式包括双工主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。应用代表是Keepalived、heartbeat

3)高性能运算群集(High Performance Computer Cluster

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力

高性能依赖于分布式运算并行计算,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。主要代表云计算、网格计算等

5.负载均衡的结构

1)第一层:载调度器 (Load Balancer或Director)

访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集 IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性

2)第二层:服务器池(Server Pool)

群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池

3)第三层:共享存储(Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用 NAS设备,或者提供NFS共享服务的专用服务器

6.负载均衡集群工作模式分析

负载均衡集群是目前企业用得最多的群集类型。在生产环境中,集群的负载调度技术有三种工作模式分别是NAT模式、TUN模式、DR模式

1)NAT模式(地址转换)

类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的默认网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口服务器节点使用私有IP地址,也就是说调度器会承载双向数据的负载压力,可能会成为整个集群的性能瓶颈。

由于节点服务器都处于内网环境,使用私网IP地址,所以安全性尚可

2)TUN模式(IP隧道)

IP Tunnel,简称TUN模式。采用开放式的网络结构,负载调度器仅作为客户几的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。

由于服务器节点分散在不同为的公网环境中,需要具有独立的公网IP地址,调度器通过专用IP隧道与节点服务器相互通信。因此IP隧道模式的成本较高、安全性较低,且IP隧道需要更多的封装和解封装过程,性能也会收到影响

3)DR模式(直接路由)

Direct Routing,简称DR模式。采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。

节点服务器与调度器是部署在同一个局域网内,因此不需要建立专用的IP隧道。DR模式是企业的首选

二、LVS-NAT 的部署

1.关于 LVS 虚拟服务器

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

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

1)加载模块的方法

###一个一个添加
modprobe ip_vs
modprobe <模块名>   ###不带后面的.ko.xz

###for循环一次性添加所有模块
for i in `ls *  awk -F.'[print $l}'`
do
modprobe $i
done
###过滤模块名的方法二
ls * | grep -o "^[^.]*"
###过滤模块名的方法三
for i in `ls *`
do
modprobe `echo ${i%%,*}`
done
2.LVS的负载调度算法
LVS的负载调度算法说明
轮询(Round Robin)将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
加权轮询(Weighted Round Robin)根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多。保证性能强的服务器承担更多的访问流量
最少连接(Least Connections)根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)在服务器节点的性能差异较大时,可以为真实服务器自动调整权重。性能较高的节点将承担更大比例的活动连接负载
3.使用 ipvsadm 工具

LVS群集创建与管理流程:常见虚拟服务器——>添加删除服务器节点——>查看群集及节点情况——>保存负载分配策略

ipvsadm工具选项说明
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a表示添加真实服务器(节点服务器)
-d删除某一个节点
-t指定VIP地址及TCP端口
-r指定RIP地址及TCP端口
-m表示使用NAT群集模式
-g表示使用DR模式
-i表示使用TUN模式
-w设置权重(权重为0时表示暂停节点)
-p 60表示保持长连接60秒
-l列表查看LVS虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与“-l”选项组合使用,ipvsadm -ln

三、NAT模式 LVS负载均衡群集部署

负载调度器:内网关 ens33:192.168.58.30,外网关 ens35:12.0.0.30
Web节点服务器1:192.168.58.61
Web节点服务器2:192.168.68.62
tomcat多实例服务器:192.168.58.60
客户端:12.0.0.130
1.部署共享存储(tomcat多实例服务器:192.168.58.60)
参考上一篇博客的tomcat多实例服务器搭建

在这里插入图片描述

2.配置节点服务器(192.168.58.61、192.168.68.62)
参考上一篇博客的七层nginx服务器轮询,动静分离

在这里插入图片描述

在这里插入图片描述

3.配置负载调度器(内网关 ens33:192.168.58.30,外网关 ens36:12.0.0.30)

1)配置SNAT转发规则

systemctl disable --now firewalld.service
setenforce 0

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
或 echo '1' > /proc/sys/net/ipv4/ip_forward

sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.58.0/24 -o ens35 -j SNAT --to-source 12.0.0.30

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)加载LVS内核模块

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

参考本文上面的一键加载所有模块

在这里插入图片描述
在这里插入图片描述

3)安装ipvsadm 管理工具

yum -y install ipvsadm

--启动服务前须保存负载分配策略---
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

在这里插入图片描述
在这里插入图片描述

4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

ipvsadm -C 					#清除原有策略
ipvsadm -A -t 12.0.0.30:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.30:80 -r 192.168.58.61:80 -m [-w 1]
ipvsadm -a -t 12.0.0.30:80 -r 192.168.58.62:80 -m [-w 1]
ipvsadm						#启用策略

ipvsadm -ln					#查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm						#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
-----------------------------------------------------------------------
ipvsadm -d -t 12.0.0.30:80 -r 192.168.80.61:80
###删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.30:80
###删除整个虚拟服务器
systemctl stop ipvsadm
###停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
systemctl start ipvsadm
###启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm
###恢复LVS 策略
-----------------------------------------------------------------------

在这里插入图片描述

4.测试效果
在一台IP为12.0.0.130的客户机使用浏览器访问 http://12.0.0.30/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)
c/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm
###恢复LVS 策略
-----------------------------------------------------------------------

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

ChatGPT助力码上行动:零基础学会Python编程

摘要&#xff1a; Python编程作为一种简洁、易学且功能强大的编程语言&#xff0c;正逐渐成为初学者进入编程领域的首选。然而&#xff0c;对于零基础的学习者来说&#xff0c;学习编程仍然存在一定的挑战。本文将介绍如何利用ChatGPT的强大语言生成能力&#xff0c;助力零基础…

元宇宙应用领域-社交

社交是一个古老的话题&#xff0c;人类从最开始的结群&#xff0c;到后来的部落&#xff0c;再到如今的网络社交&#xff0c;可以说人类的社交方式经历了漫长的演化过程。 随着互联网的普及和网络社交方式的不断发展&#xff0c;社交对于人类而言越来越重要。人们在网上不仅可…

SQL语句之DQL语言(二)(多表查询)

准备工作&#xff1a;创建表&#xff0c;添加数据 -- 部门管理 create table tb_dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime…

新招了个从腾讯拿38K离职的测试大佬,让我见识到了什么才是测试界的天花板

现在招个会几年工作经验还会自动化测试的测试工程师真是难呀&#xff0c;10个里面有8个写了会自动化&#xff0c;但一问就是三不知 5年测试工作经验&#xff0c;技术应该是能达到资深测试的水准&#xff0c;即不仅能熟练地开发业务&#xff0c;而且还能熟悉项目的开发&#xff…

【数据结构每日一题】栈——中心对称链

[数据结构习题]栈——中心对称链 &#x1f449;知识点导航&#x1f48e;&#xff1a;【数据结构】栈和队列 &#x1f449;[王道数据结构]习题导航&#x1f48e;&#xff1a; p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述&#xff1a; &#x1f387;思路…

【论文阅读】dreambooth

简介 目标&#xff1a;subject-driven generation&#xff0c;针对特定物体的图像生成&#xff0c;仅使用少量目标主体图像&#xff0c;dreambooth可以在prompt的指导下生成大量目标主体在不同场景下的图像。例如下图中小狗&#xff0c;我们给定的set就是左侧的input images&a…

Matplotlib - 绘制 高亮显示的饼图 (Highlight Pie Chart) 函数源码

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131089501 饼图 (Pie Chart) 是一种圆形统计图&#xff0c;被分割成片用于表示数值间的比例关系。每个切片的弧长以及相应的中心角和面积…

【QQ聊天界面-创建自定义Cell Objective-C语言】

一、我们刚才说到这个地方,我们说,用系统的单元格,是不是不够用吧, 1.那么这个时候,我们就要、需要自定义单元格 自定义单元格,我们就新建一个类,继承自UITableViewCell 来,写一下, 那么,这个时候,应该在哪个文件夹下,去新建类啊, 是不是在Views下面吧, 因为…

一文详解!Robot Framework Selenium UI自动化测试入门篇

目录 前言&#xff1a; 自动化框架的选择 测试环境的搭建 导入Selenium2Library包 关键字是什么&#xff1f; 创建测试用例 前言&#xff1a; 自动化测试的重要性越来越受到人们的重视&#xff0c;因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这…

软考A计划-电子商务设计师-模拟试题卷八

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Shiro自定义过滤器会执行两次?看我怎么给你解决

关注“Java架构栈”微信公众号&#xff0c;回复暗号【Java面试题】即可获取大厂面试题。 最近九哥的一个学生在使用自定义ShiroFilter处理JWT校验时&#xff0c;发现自己写的Filter在处理一次请求时会被执行两次。这个问题困扰了他一个下午都没有解决&#xff0c;最后不得不求…

新手小白如何入门学习CTF?【网络安全】

最近有很多新手小白私信我&#xff1a;如何学习CTF&#xff1f;新手小白应该怎么入门CTF&#xff1f;想打CTF&#xff0c;但是没有思路怎么办&#xff1f; 昨天下班之后&#xff0c;花了几个小时&#xff0c;整理了一下CTF学习的思路与方法&#xff0c;分享给大家&#xff0c;如…

用jprofiler来分析 jvm 堆 内存泄露,fullgc

jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客 堆太大? 方法1: 重新设置堆后,重启,复现. 方法2: 切割 split -b 1M heap.bin smallfilescp smallfile* usernamemac-host:/Users/username/cat smallfile* > heap.bin官网文档 JProfiler Help - HPROF snapshot…

【逃离】UniAccess

能看到这篇文章&#xff0c;说明你已经是老屁股了&#xff08;保命要紧&#xff09; 上面是UniAccess功能 你想要做的事情无非是三种 不顾后果强力卸载UniAccess期望只保留(内网)网络认证禁用UniAccess部分功能 第一种&#xff1a;直接卸载&#xff0c;这里不做说明了&#x…

开发轮子(一):全国省/市/区/街道三、四级联动

概述 本服务提供中国标准行政区划数据查询功能&#xff0c;支持&#xff1a; 1 . 全国省、市、区/县、乡镇/街道 四级行政区划数据&#xff1b; 2 . 支持三级区划&#xff08;省/市 - 区/县&#xff09;轮廓数据&#xff1b; 3 . 支持区划查询、省市区列表、查询子级区划等功能…

十六、立方体贴图(天空盒)

第一部分 概念&#xff1a; 1) 引用 OpenGL ES 立方体贴图本质上还是纹理映射&#xff0c;是一种 3D 纹理映射。立方体贴图所使的纹理称为立方图纹理&#xff0c;它是由 6 个单独的 2D 纹理组成&#xff0c;每个 2D 纹理是立方图的一个面。 立方图纹理的采样通过一个 3D 向量…

CodeGeeX 2.0版本重大升级:通过聊天对话的方式直接操作代码

CodeGeeX 2.0版本正式上线&#xff01;从命名上看这是一次大版本的升级。 上个月&#xff0c;CodeGeeX在VSCode和JetBrains IDEs的插件中&#xff0c;加入了智能问答&#xff08;Ask CodeGeeX&#xff09;功能&#xff0c;让用户可以在IDE中通过问答对话的方式解决技术问题。本…

Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过

Selenium 操作被屏蔽 使用selenium自动化网页时&#xff0c;有一定的概率会被目标网站识别&#xff0c;一旦被检测到&#xff0c;目标网站会拦截该客户端做出的网页操作。 比如淘宝和大众点评的登录页&#xff0c;当手工打开浏览器&#xff0c;输入用户名和密码时&#xff0c…

docker 无法将“docker”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

&#x1f4a7; d o c k e r 无法将“ d o c k e r ”项识别为 . . . . . . \color{#FF1493}{docker 无法将“docker”项识别为......} docker无法将“docker”项识别为......&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页…

Elasticsearch:路由 - routing

你是否考虑过 Elasticsearch 如何知道将文档存储在何处&#xff1f; 它如何知道在哪里寻找它们&#xff0c;以及是否检索、更新或删除它们&#xff1f; 这是一个令人兴奋的过程&#xff0c;一切都归结为路由的概念。 路由介绍 路由是确定文档属于哪个分片以便检索它或将其存储在…