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

news2024/11/19 5:30:08

目录

1、什么是集群

2、集群的使用场景

3、集群的分类

4、负载均衡器的集群架构

5、负载均衡器的集群的工作模式

6、 LVS虚拟服务器

7、LVS的负载均衡算法

8、LVS集群创建与管理

 9、LVS的管理工具

10、实验: nat模式 LVS负载均衡群集部署


1、什么是集群

将多台主机作为一个整体,对外提高相同的服务(由多台主机构成,对外只表现为一个整体,只提供一个访问入口(域名和IP地址)相当于一台大型计算机)

2、集群的使用场景

高并发场景

3、集群的分类

根据群集所针对的目标差异,可分为三种类型

· 负载均衡群集(减少响应延迟,提高并发处理能力)

· 高可用群集(系统的稳定性,减少服务器中断的时间,减少损失)

· 高性能运算群集(高性能运算能力作为分布式、并发量)

详述:

负载均衡群集:

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

· LB的负载分配依赖于主节点的分流算法

访问请求分担给多个服务期节点,从而缓解整个系统的负载压力。例如:“DNS轮询”“反向代理等”

高可用群集

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

· HA的工作方式包括双工和主从两种模式

高性能运算群集
· 提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得
相当于大型、超级计算机的高性能运算(HPC)能力
 ·高性能依赖于“分布式运算”、 “并行计算”,通过专用硬件和软件将
多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

4、负载均衡器的集群架构

负载调度器:通过调度算法以及RIP进行发送

节点服务池:所有服务器用的资源

共享存储:提供网站存储资源

数据流向是用户通过vip进行访问

数据流向:

在LVS-DR(Linux Virtual Server - Direct Routing)模式下,数据包的流向分析如下:

· 客户端发送请求到负载均衡器(LVS)。请求中的目标IP地址是负载均衡器的虚拟IP(VIP)。

· 负载均衡器接收到请求后,根据预设的负载调度算法选择一个后端服务器进行转发。

· 负载均衡器将请求的目标IP地址改写为选定的后端服务器的实际IP地址,并将数据包转发给后端服务器。

· 数据包通过物理网络直接传输到后端服务器。由于负载均衡器和后端服务器位于同一物理网络中,数据包不需要经过负载均衡器。

·  后端服务器接收到数据包后,对请求进行处理,并生成响应数据。

· 后端服务器将响应数据返回给客户端。响应数据通过物理网络直接传输到客户端,无需经过负载均衡器。

总结起来,LVS-DR模式中,客户端的请求首先到达负载均衡器,负载均衡器根据负载调度算法选择后端服务器后,将请求转发给后端服务器。后端服务器处理请求并直接将响应返回给客户端。负载均衡器在这个过程中只负责请求的转发和负载均衡的调度,不参与实际的数据包传输。通过这种方式可以提高系统性能和吞吐量,并减轻负载均衡器的压力。

详述:

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

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

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

5、负载均衡器的集群的工作模式

群集的负载调度技术有三种工作模式:

· 地址转换(NAT模式):调度作为网关,是访问请求的入口,也是响应访问的出口,在高并发场景下负载压力很高,NAT转换可以提高安全性

· ip隧道(TUN模式):仅是访问请求的入口,响应数据不经过调度器。但是需要大量的公网ip,还需要专用的ip隧道(成本太高),数据转发受ip隧道的额外影响

· 直接路由(DR模式):仅是访问请求入口,响应数据不经过调度器,节点服务器和调度器在一个物理网络中,数据进行转发不受额外影响

 详述:

· nat模式 地址转换:(性能不高,承受不了高并发)

与负载调度器位于同一个物理网络,安全性要优于其他两种方式

负载调度器作为所以服务器节点的网关,即作为客户机的访问入口,也是割接点回应客户机的访问出口

· tun模式 ip隧道:(公网地址太贵,还得使用ip隧道费用更高)

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

服务器节点分散在互联网不同的位置,需要独立的公网IP地址,通过专用ip隧道与负载调度器互相通信

· DR模式  直接路由:

采用半开放式的网络结构,与tun模式的结构类似,但各个节点并不是分塞在各地,而是与调度器位于同一个物理网络

负载均衡器与各节点服务器通过本地网络连接,不需要建立专用的ip隧道

好处只用一个公网ip,调度器只负责转发

6、 LVS虚拟服务器

modprobe ip_vs来确认是否支持LVS

7、LVS的负载均衡算法

· 轮询:将收到的访问请求按照顺序轮流分配给群集中的个基点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载

· 加权轮询:

根据调度器设置的权重值来分发请求,权重值搞得节点优先获得任务,分配的请求数越多

保证性能强的服务器承担更多的访问流量

· 最小连接数

· 加权最小链接

8、LVS集群创建与管理

创建步骤

 9、LVS的管理工具

LVS的管理工具是ipvsadm:

工具选项:

10、实验: nat模式 LVS负载均衡群集部署

LVS负载调度器:ens33:192.168.10.19 ens37:10.0.0.1(vmnet3)
Web1 节点服务器1:192.168.10.16
Web2 节点服务器2:192.168.10.17
NFS服务器:192.168.10.18
客户端(win10):10.0.0.12 (Vmnet3)

PS: 
① win10虚拟机(客户端)网关设置为10.0.0.1
② web服务器 网关设置为 192.168.10.19


1、部署共享存储(NFS服务器:192.168.10.18)
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

yum install -y nfs-utils rpcbind

systemctl start nfs.service 
systemctl start rpcbind.service
systemctl enable nfs.service 
systemctl enable rpcbind.service

mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.10.0/24(rw,sync)
/opt/benet 192.168.10.0/24(rw,sync)


#发布共享
exportfs -rv
showmount -e


2、配置节点服务器(后端服务器)
192.168.10.16、192.168.10.17
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#修改网卡网关为LVS服务器

yum install -y httpd
systemctl start httpd.service 
systemctl enable httpd.service

yum install -y nfs-utils rpcbind

systemctl start rpcbind.service
systemctl enable rpcbind.service

showmount -e 192.168.10.18


#web1:192.168.10.16
mount.nfs 192.168.10.18:/opt/kgc /var/www/html/

echo 'this is kgc' > /var/www/html/index.html

vim /etc/fstab 
192.168.10.18:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a


#web2:192.168.10.17
mount.nfs 192.168.10.18:/opt/benet /var/www/html/

echo 'this is benet' > /var/www/html/index.html

vim /etc/fstab 
192.168.10.18:/opt/benet /var/www/html nfs defaults,_netdev 0 0

mount -a

######配置负载调度器LVS(ens33:192.168.10.19 ens37:10.0.0.1)
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0


------(1)、配置SNAT转发规则-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -F
iptables -F
[root@lvs ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination  


iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens37 -j SNAT --to-source 10.0.0.1

nat表:修改数据包中的源、目标IP地址或端口
POSTROUTING: 在进行路由判断之"后"所要进行的规则(SNAT/MASQUERADE)
PREROUTING: 在进行路由判断之"前"所要进行的规则(DNAT/REDIRECT)
-A: 在规则链的末尾加入新规则
-s: 匹配来源地址IP/MASK.
-o 网卡名称匹配从这块网卡流出的数据
-i 网卡名称匹配从这块网卡流入的数据
-j 控制类型

-------(2)、加载LVS内核模块-------------
modprobe ip_vs   #手动加载ip_vs模块
cat /proc/net/ip_vs    #查看ip_vs版本信息

-------(3)、安装ipvsadm管理工具-------------
yum install -y ipvsadm

#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service


------(4)、配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)-------------
ipvsadm -C     #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.16:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.17:80 -m -w 1

-A    添加虚拟服务器
-s    指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a    表示添加真实服务器 (后端节点服务器)
-t    指定 VIP地址及 TCP端口
-m    表示使用 NAT群集模式.
-w    设置权重 (权重为 0 时表示暂停节点)

ipvsadm     #启动策略

ipvsadm -ln    #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

-----------------------------------------------------------
ipvsadm -d -t 10.0.0.1:80 -r 192.168.10.16:80 -m -w 1     #删除群集中某一节点服务器
ipvsadm -D -t 10.0.0.1:80     #删除整个虚拟服务器
systemctl stop ipvsadm     #停止服务(清除策略)
systemctl start ipvsadm    #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm      #恢复LVS策略


测试:
在win10上使用浏览器访问10.0.0.1,刷新浏览器测试负载均衡
PS:刷新间隔时间需要稍长一点
 

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

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

相关文章

使用 pyodbc 解析chrome浏览器导出的书签并保存到 Microsoft Access 数据库

使用 wxPython 和 pyodbc 解析书签并保存到 Microsoft Access 数据库的示例博客: 本篇博客介绍了如何使用 wxPython 和 pyodbc 库创建一个简单的应用程序,用于解析 HTML 文件中的书签并将其保存到 Microsoft Access 数据库中。通过这个示例,您…

手把手教你使用人工智能生成游戏 3D 素材

引言 生成式 AI 已成为游戏开发中艺术工作流的重要组成部分。然而,正如我在之前的文章: 《AI 制作 3D 素材|基于 AI 5 天创建一个农场游戏,第 3 天》中描述的,从文本到 3D 的实用性仍落后于 2D。不过,这种情况正在改变…

集成大淘客实现多个电商平台的数据互连

大淘客是一家导购优惠平台。 它通过整合多个电商平台的商品和优惠信息,为用户提供高品质、低价格的商品推荐和购物指南。 场景描述: 基于大淘客开放平台的API能力,零代码实现多个电商平台的导购数据、商品数据、账号销售数据和其它应用数据…

51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真+程序+报告+讲解视频)

目录 51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真程序报告讲解视频)1.主要功能:2.仿真3. 程序代码4. 设计资料内容清单&下载地址 51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真程序报告讲解视频) …

KeilMDK V5编译器的安装

1、安装原因 目前keil官网最新版本的Keil都是默认安装V6编译器,不再自动安装V5编译器,而V5与V6编译器在编译的时候有很多代码不兼容,导致工程编译失败,所以我们使用新版keil5的时候,要用V5编译器就要自己安装V5编译器。…

微信小程序自定义tabBar详细教程,且自适应尺寸和实现高斯模糊版

IOS示例&#xff1a; 安卓示例&#xff1a; 高斯模糊示例&#xff1a; WXML代码&#xff1a; <view class"tabbar"><view style"{{selectindex&&index0?color: #ef3166;:}}"class"tabbar-item {{ select index ? tabbar-select …

WMS系统条码管理

一、条码的基本概念和应用&#xff1a; WMS系统条码管理是指在仓库管理系统中使用条码技术对货物、物料和库存信息进行标识、跟踪和管理的过程。它基于条码识别和数据采集技术&#xff0c;通过在物料或货物上粘贴或打印条码标签&#xff0c;并使用条码扫描设备进行扫描和读取&…

深入理解内存 —— 函数栈帧的创建与销毁

前言 一位优秀的程序员&#xff0c;必须对内存的分布有深刻的理解&#xff0c;在初学编程的时候&#xff0c;往往有诸如以下很多问题困扰着初学者&#xff0c;而通过今天的分享&#xff0c;我们就可以通过自己的观察&#xff0c;将这些问题统统解决掉 局部变量是怎么创建的&…

架构师必备--高可用高性能分布式数据库Tidb安装部署实践

本文针对分布式、高可用的tidb数据库&#xff0c;从搭建实际生产环境的集群服务&#xff0c;介绍下tidb的安装流程、安装前的环境检测和系统优化、服务访问等方面介绍下具体的流程&#xff0c;希望对大家熟悉和了解tidb数据库有所帮助&#xff0c;减少不必要的弯路。 1.概述 …

图形推理|解题思路汇总

一、图形推理题常见题型 &#xff08;一&#xff09;图形的位置 图形的位置主要是指与图形位置相关的图形推理考点规律。 这类题目的图形特点通常有以下两类: (1)题干图形相似程度很高&#xff0c;只是某些部分的位置有差异-&#xff0c;考虑移动、旋转与翻转。…

自动编码器中的马尔可夫链蒙特卡罗期望最大化 (MCMC-EM):使用贝叶斯推理增强学习

一、介绍 自动编码器 自动编码器是强大的无监督学习算法&#xff0c;用于表示学习和降维。它们的工作原理是将输入数据编码为低维表示形式&#xff0c;然后将其解码回以重建原始数据。训练自动编码器通常涉及优化参数以最小化重建误差。然而&#xff0c;传统的优化技术&#xf…

如何通过MAT排查生产环境服务内存溢出

前言 前段时间&#xff0c;运维反馈生产环境翻译服务某个节点触发内存告警了。运维在重启节点之前&#xff0c;生成了dump快照&#xff0c;这里介绍下如何使用MAT内存分析工具来排查服务内存高占用问题。 MAT简介 MAT是Memory Analyzer的简称&#xff0c;它是一款功能强大的…

前端技术Vue学习笔记--005

Vue学习笔记 一、非父子通信-event bus 事件总线 作用&#xff1a;非父子组件之间&#xff0c;进行简易消息传递。&#xff08;复杂场景用----Vuex&#xff09; 使用步骤&#xff1a; 创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09;-----utils/EventBus.js /…

浅谈更糟糕的 CS_CLASSDC 标志位的作用

在上一篇文章中&#xff0c;我们了解了 CS_OWNDC 标志位的历史&#xff0c;也说明了设计它的初衷。 这个标志位一开始看起来是个挺好的设计&#xff0c;但是如果你多琢磨一会儿&#xff0c;就会发现它不是一个好主意。今天我们来看看更糟的。 CS_CLASSDC 标志位有点类似 CS_OW…

shell脚本文本三剑客sed

shell脚本文本三剑客sed 一.Sed编辑器1.1sed概述1.2sed工作流程1.3sed基本法1.4sed常用选项1.5sed命令的常用操作 二.sed命令使用2.1打印内容2.2删除内容示例5&#xff1a;先备份内容在删除2.3插入内容2.4取反2.5搜索替代2.6分组调用 一.Sed编辑器 1.1sed概述 sed编辑器是一种…

Linux 虚拟机Ubuntu22.04版本通过远程连接连接不上,输入ifconfig只能看到127.0.0.1的解决办法

之前给虚拟机配置静态IP之后&#xff0c;可以直接通过主机Vscode远程连接。但是前一段时间把主机的TCP/IPV4静态IP设置了一下之后&#xff0c;再连接虚拟机就连不上了&#xff0c;于是参考解决虚拟机不能上网ifconfig只显示127.0.0.1的问题&#xff0c;又可以连接上了&#xff…

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

SpringBoot复习:(56)使用@Transactional注解标记的方法的执行流程

首先&#xff0c;如果在某个类或某个方法被标记为Transactional时&#xff0c;Spring boot底层会在创建这个bean时生成代理对象&#xff08;默认使用cglib) 示例&#xff1a; 当调用studentService的addStudent方法时&#xff0c;会直接跳到CglibAopProxy类去执行intercept方…

vscode里配置C#环境并运行.cs文件

vscode是一款跨平台、轻量级、开源的IDE, 支持C、C、Java、C#、R、Python、Go、Nodejs等多种语言的开发和调试。下面介绍在vscode里配置C#环境。这里以配置.Net SDK v5.0&#xff0c;语言版本为C#9.0&#xff0c;对应的开发平台为VS2019&#xff0c;作为案例说明。 1、下载vsc…

vue3小知识点汇总——基础积累

下面的小知识点比较零散&#xff0c;但是脑子不太好使&#xff0c;只能先记录一下啦&#xff0c;后面知识丰富起来后&#xff0c;慢慢就懂了。 1.最新版node.js已经不兼容vue2的项目了&#xff0c;学习vue3势在必行 node.js的安装及vue的搭建详细步骤&#xff1a;http://t.cs…