[Linux] LVS负载均衡群集+NAT部署

一、LVS负载均衡群集知识

1.1 群集的的定义及意义

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

群集的作用:

对于企业服务的的性能提升一般会有两种方式:

纵向扩展 :  对服务器的CPU 内存 硬盘 等硬件进行升级或者扩容来实现的     性能上限会有瓶颈,成本昂贵,收效比不高等问题

横向扩展 :  通过增加服务器主机数量来应该高并发的场景

群集的目的 :

        提高性能:计算密集应用。如天气预报,核试验模拟

        降低成本:相对百万美元的超级计算机,价格便宜

        提高可扩展性:只要增加集群节点即可

        增强可靠性:多个节点完成相同功能,避免单点失败

企业级群集的类型 :

负载均衡(LB):提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力。 同时也是如今企业运用最多的群集类型。
高可用(HA): 提高应用系统的可靠性,减少服务中断时间,确保服务的连续性
高性能运算(HPC):将多台主机的硬件计算资源整合到一起实现分布式运用,比如 云计算 

二、LVS负载均衡的三种模式

群集的负载调度技术有三种工作模式:地址转换(NAT模式) ,直接路由(DR模式),IP隧道(IP-TUN)。对于商用来说,最常用是NAT模式和DR模式。

NAT(地址转换) 

缺点:调度器作为所有节点服务器的网关,既作客户端的访问入口,也作节点服务器响应的访问出口,也就意味着调度器将成为整个集群系统的瓶颈。

优点:由于再转发过程中做了地址转发,对于节点服务器的安全性比其它模式较好。

调度器至少要有2个网卡,一个承载VIP用于接收客户端的请求,另一个用于使用私有IP在同一个局域网中与节点服务器相互通信。

工作原理:

(1)用户通过Internet DNS服务器在我们的负载均衡设备上解析为外网地址。 相对于真实的服务器,LVS外网IP也被称为VIP(虚拟IP地址)。 通过访问VIP,用户可以连接到后端的真实服务器,所有这些对用户都是透明的。 用户认为他正在访问真正的服务器,但不知道访问的VIP只是一个dispatcher.It目前尚不清楚后端真正的服务器在哪里以及其中有多少是真实的。

(2)用户向LVS负载均衡调度器(也是网关服务器)的外部网卡发送请求。 此时LVS根据预先配置的算法选择后端的真实服务器(内网实际处理数据的web服务器),并将数据请求包转发给真实服务器。转发前,LVS改变数据报文的目的地址和目的端口,并将目的地址和目的端口改变为所选择的真实服务器的IP地址和对应端口。

(3)真实服务器向LVS调度器返回响应数据包。 调度员收到响应数据包后,将源地址和源端口更改为VIP和调度员对应的端口。 当更改完成时,调度器将响应数据包发送回终端用户。 此外,由于LVS调度程序有一个连接哈希表,连接请求和传输信息都记录在该表中。 当同一连接的下一个数据包发送到调度器时,可以直接从哈希表中查找到上一个连接记录,并将记录的信息发送到调度器。 

 DR(直接路由)

特点:调度器只根据调度算法接收客户端的请求,并将其转发给节点服务器。节点服务器处理完请求后直接向客户端响应,已经响应的数据包不经过dispatcher.In DR模式下,调度器和后端服务器必须在同一个局域网中,并且VIP地址必须在调度器和所有后端服务器之间共享。 性能高于NAT模式 调度器和节点服务器使用私有IP与同一局域网中的节点服务器进行通信。

工作原理:

(1)用户向Director服务器(负载均衡器)发送请求,请求的数据包(源IP为CIP,目标IP为VIP)到达内核空间。

(2)由于Director服务器和real服务器在同一网络中,通过二层的数据链路层进行传输。 内核空间确定所述数据包的目标IP为本地IP。 此时,IPVS比较数据包请求的业务是否为集群业务。 在那种情况下,重新打包数据包并将源MAC地址更改为DIP的MAC地址,将目标MAC地址更改为RIP的MAC地址。 如果源和目的IP地址没有改变,则将数据包发送到真实服务器。

(3)当真实服务器检测到请求报文的MAC地址为自己的MAC地址时,接收报文,重新打包报文(源IP地址为VIP,目标IP为CIP),通过lo接口将响应报文发送到物理网卡, 真实服务器直接向客户端发送响应消息。 

TUN(IP隧道) 

TUN(IP隧道) 架构类似于DR,但节点服务器分散在Internet上的不同地方,都具有独立的公共IP,并通过专用IP隧道与调度器通信。

采用开放的网络结构,负载调度器只作为客户端访问入口,每个节点通过负载调度器传输压力小于NAT。

服务器节点分散在Internet上的不同位置,具有独立的公共IP地址,并通过专用IP隧道和负载调度器相互通信。

缺点:成本很高。

该模型常用于特殊场景,如在全国范围内分布节点服务器,以防止物理攻击(地震、战争等)。).为灾难做好准备。 

(1)当用户请求到达Director服务器时,请求的数据包首先被移动到内核空间优先路由链。 此时源IP为CIP,目标IP为VIP。

(2)PREROUTING确认数据包的目标IP为本机,并将数据包转发到输入链。

(3)IPVS比较数据包请求的服务是否足以为集群服务。 在这种情况下,ip数据包在请求数据包的头部被封装一次,并且封装的数据包的源IP是DIP和目标IP是RIP.それをPOSTROUTINGに送信しますCHAIN.At 本次源IP为DIP,目标IP为RIP

(4)POSTROUTING chain根据最新封装的IP报文向RS发送数据报文(由于在外部封装中多了一层IP头,此时可以理解为是通过隧道发送的)。

(5)RS收到数据包后,RS检测到是自己的IP地址。 执行完解封装操作后,去掉最外层的IP后,可以看到里面还有一层IP头,目标是自己的LO接口VIP,此时RS会处理这个请求。 程完成后,通过lo接口发送到eth0网卡,并通过出线。源IP地址为VIP,目标IP为CIP。

(6)响应消息到达客户端。 

2.2 LVS的负载调度算法 

 固定调度算法:rr, wrr, dh,sh

 rr:轮询算法(Round Robin)

请求分配给不同的RS节点在turn.distributed.It 它适用于所有RS节点的处理性能接近的情况。

将接收到的访问请求的安装顺序依次分配给集群中的每个节点(真实服务器),并平等对待每个服务器,而不考虑实际连接数和服务器上的系统负载。 

wrr:加权轮询调度(Weighted Round Robin) 

        依据不同RS的权重值分配任务。权重值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

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

dh:目的地址哈希调度(destination hashing) 

        以目的地址为关键字查找一个静态hash表来获得所需RS。

sh:源地址哈希调度(source hashing)

        源地址为关键字查找--个静态hash表来获得需要的RS

 动态调度算法: wlc,lc,lblc 

lc:最小连接数调度( Least Connections) 

        ipvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。

        根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。

wlc:加权最小连接数调度(Weighted Least Connections)

        假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次取Ti/Wi为最小的RS作为下一个分配的RS。

        在服务器节点的性能差异较大时,可以为真实服务器自动调整权重。

        性能较高的节点将承担更大比例的活动连接负载。

lblc:基于地址的最小连接数调度(locality-based least-connection)

将来自同一个目的地址的请求分配给同一-台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

三、LVS部署前

3.1 ipvsadm 工具选项说明 

pvsadm的选项作用
-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 

 3.2 ip_vs通用模块 

ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs

 modprobe ip_vs     //手动加载 ip_vs 模块​cat /proc/net/ip_vs    //查看当前系统中ip_vs模块的版本信息

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

四、 LVS负载均衡-NAT模式的部署

4.1 NAT模式实验部署操作前的准备设计以及需求 

实验需求

通过NAT模式使外网客户机能够访问到相关的web服务,并且LVS调度器使内网中的web服务器达到负载均衡的效果。此外NFS共享存储为web服务提供更大的存储空间 

实验设备准备

需要五台虚拟机(一台web1服务器,一台web2服务器,一台负载均衡调度器,一台NFS共享存储机,一台外网客户机做测试作用)

 各设备的IP设置如下:

负载调度器:内网关 ens33:192.168.136.100,外网关 ens36:12.0.0.100
Web节点服务器1:192.168.136.120
Web节点服务器2:192.168.136.130
NFS服务器:192.168.136.110
客户端:12.0.0.66

 4.2 NAT模式实验部署操作步骤

第一步:部署共享服务(主机IP:192.168.136.110)
 95  systemctl stop firewalld.service96  systemctl disable firewalld.service97  setenforce 098  yum install nfs-utils rpcbind -y99  systemctl start rpcbind.service100  systemctl start nfs.service101  systemctl enable nfs.service102  systemctl enable rpcbind.service103  mkdir -p /var/www/html/{cxk,xhz}104  cd /var/www/html/105  ls106  echo 'this is cxk_web01!' >cxk/test.html107  echo 'this is xhz_web02!' >xhz/test.html108  cat cxk/test.html 109  cat xhz/test.html 110  vim /etc/exports111  systemctl enable --now rpcbind nfs112  showmount -e113  systemctl stop firewalld114  setenforce 0115  showmount -e116  systemctl enable --now rpcbind nfs117  showmount -e118  vim /etc/exports119  systemctl status rpcbind.service 120  systemctl status nfs121  showmount -e122  exportfs -a123  showmount -e

第二步:配置节点服务器(192.168.136.120 192.168.136.130) 

两台web节点服务器相同的操作:

77  systemctl restart network.service78  systemctl disable --now firewalld79  setenforce 080  showmount -e 192.168.136.11081  cd /etc/yum.repos.d/82  ls83  mkdir bak84  mv *.repo bak85  rz -E86  ls87  yum -y install nginx88  vim /etc/fstab 89  mount -a90  df -h91  ls92  ls /usr/share/nginx/html/93  cat te94  ls /usr/share/nginx/html/95  cat /usr/share/nginx/html/test.html 96  vim /etc/nginx/nginx.conf 97  systemctl restart nginx98  vim /etc/sysconfig/network-scripts/ifcfg-ens3399  systemctl restart network nginx

 web1节点服务器的后续操作:

  web2节点服务器的后续操作:

 

第三步:配置负载调度器(内网关 ens33:192.168.136.100,外网关 ens36:12.0.0.100)  
101  cd /etc/sysconfig/network-scripts/102  ls103  ip a104  cp ifcfg-ens33 ifcfg-ens34105  ls106  vim ifcfg-ens34107  vim ifcfg-ens33108  ls109  systemctl restart network110  ip a111  vim /etc/sysctl.d/112  vim /etc/sysctl.d113  vim /etc/sysctl.conf 114  sysctl -p115  modprobe ip_vs116  cat /proc/net/ip_vs117  yum -y install ipvsadm.x86_64 118  cd /etc/yum.repos.d/119  ls120  vim /etc/sysconfig/network-scripts/ifcfg-ens33121  cd /etc/sysconfig/122  vim /etc/sysconfig/network-scripts/ifcfg-ens33123  systemctl restart network124  yum -y install ipvsadm.x86_64 125  vim /etc/sysconfig/network-scripts/ifcfg-ens33126  systemctl restart network127  ip a128  systemctl start ipvsadm.service 129  systemctl status ipvsadm.service 130  ipvsadm-save /etc/sysconfig/ipvsadm131  systemctl start ipvsadm.service 132  ipvsadm-save > /etc/sysconfig/ipvsadm133  systemctl start ipvsadm.service 134  ipvsadm -C135  ipvsadm -ln136  ipvsadm -A -t 12.0.0.100 -s rr137  ipvsadm -A -t 12.0.0.100:80 -s rr138  ipvsadm -ln139  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.120:80 -m140  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.130:80 -m141  ipvsadm -ln142  ipvsadm143  ipvsadm -ln144  ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs145  cat /proc/net/ip_vs

保存LVS的配置策略以及删除策略的方法: 

ipvsadm-save > /opt/ipvsadm						#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
----------------------------------------------------------------------------------------------------------
ipvsadm -d -t 12.0.0.100:80 -r 192.168.136.120:80				#删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.100:80									#删除整个虚拟服务器
systemctl stop ipvsadm										#停止服务(清空策略)
systemctl start ipvsadm										#启动服务(根据/etc/sysconfig/ipvsadm重建配置)
ipvsadm-restore < /opt/ipvsadm					            #恢复LVS 策略134  ipvsadm -C135  ipvsadm -ln136  ipvsadm -A -t 12.0.0.100 -s rr137  ipvsadm -A -t 12.0.0.100:80 -s rr138  ipvsadm -ln139  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.120:80 -m140  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.130:80 -m141  ipvsadm -ln142  ipvsadm143  ipvsadm -ln

 第四步:进行客户机测试

 

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

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

相关文章

vue3使用Mars3D写区块地图

效果图 引入相关文件 因为我也是第一次使用&#xff0c;所以我是把插件和源文件都引入了&#xff0c;能使用启动 源文件 下载地址&#xff1a; http://mars3d.cn/download.html 放入位置 在index.html中引入 <!--引入cesium基础lib--><link href"/static/C…

Kubernetes 容器编排 -- 1

前言 知识扩展 早在 2015 年 5 月&#xff0c;Kubernetes 在 Google 上的搜索热度就已经超过了 Mesos 和 Docker Swarm&#xff0c;从那儿之后更是一路飙升&#xff0c;将对手甩开了十几条街,容器编排引擎领域的三足鼎立时代结束。 目前&#xff0c;AWS、Azure、Google、阿里…

软考科目如何选择?

软考科目繁多&#xff0c;让许多学弟学妹感到困惑&#xff0c;不知道该选择哪个科目。以下是一些建议&#xff0c;可以根据个人实际需求选择备考的科目。 1、初级是可选的 软考初级非常简单&#xff0c;适合刚刚入门学习的朋友报考。对于一些有基础的朋友&#xff0c;建议直接…

【从零开始学习--设计模式--装饰者模式】

返回首页 前言 感谢各位同学的关注与支持&#xff0c;我会一直更新此专题&#xff0c;竭尽所能整理出更为详细的内容分享给大家&#xff0c;但碍于时间及精力有限&#xff0c;代码分享较少&#xff0c;后续会把所有代码示例整理到github&#xff0c;敬请期待。 此章节介绍装…

java实现局域网内视频投屏播放(二)爬虫

代码链接 视频播放原理 大多视频网站使用的是m3u8&#xff0c;m3u8其实不是一个真正的视频文件&#xff0c;而是一个视频播放列表&#xff08;playlist&#xff09;。它是一种文本文件&#xff0c;里面记录了一系列的视频片段&#xff08;segment&#xff09;的网络地址。这些…

原来定时发朋友圈设置这么简单?看完我也会了

目前微信作为最大的社交平台之一&#xff0c;吸引了众多使用者。你是否听过有些朋友感叹这么多微信号&#xff0c;需要每天手动发布朋友圈&#xff0c;任务很繁琐呢&#xff1f;是否希望可以事先设置好定时发送的功能&#xff0c;让朋友圈自动更新&#xff0c;省去手动发送的麻…

初探栈溢出(下)

0x04 漏洞利用 作为脚本小子&#xff0c;先跑一下写好了的exploit脚本。 打开HackSysEVDExploit.sln文件&#xff0c;直接在vs2019上编译即可。 将生成的HackSysEVDExploit.exe拷贝至win7&#xff0c;执行如下命令 直接可以获取system权限。 那么只跑一下脚本肯定不行&#…

世微 锂电池保护IC DW01 充电器检测过充保护SOT23-6

一、 描述 DW01A 是一个锂电池保护电路&#xff0c;为避免锂电池因过充电、过放电、电流过大导致电池寿命缩短或电池被损坏而设计的。它具有高精确度的电压检测与时间延迟电路。 二、 主要特点 工作电流低 过充检测 4.3V&#xff0c;过充释放 4.05V&#xff1b; 过放检测 2.4…

黑马头条--day01.环境搭建

一.前言 该项目学习自黑马程序员&#xff0c;由我整理如下&#xff0c;版权归黑马程序员所有 二.环境搭建 1.数据库 第一天&#xff0c;先创建如下库和表: sql文件如下: CREATE DATABASE IF NOT EXISTS leadnews_user DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_…

LeetCode(62)删除排序链表中的重复元素 II【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 删除排序链表中的重复元素 II 1.题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1…

【JavaEE】锁的策略

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

20.Java程序设计-基于SSM框架的安卓掌上校园生活系统的设计与实现

摘要&#xff1a; 随着移动互联网技术的快速发展&#xff0c;校园生活信息化成为提高学校管理效率、方便学生生活的关键。本研究以基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的技术体系为基础&#xff0c;致力于设计与实现一款功能强大、高效稳定的安卓…

现代雷达车载应用——第2章 汽车雷达系统原理 2.6节 雷达设计考虑

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.6 雷达设计考虑 上述部分给出了汽车雷达基本原理的简要概述。在雷达系统的设计中&#xff0c;有几个方面是必不可少的&#xff0c;它们决定了雷达系…

VUE学习三、前端项目部署

1.前端项目打包 执行命令 npm run build:prod正常命令结束 , 会在前端项目里面出现dist文件夹 2.nginx下载安装 nginx下载 : http://nginx.org/en/download.html Windows 下载版本 Mainline version&#xff1a;Mainline 是 Nginx 目前主力在做的版本&#xff0c;可以说…

《使用ThinkPHP6开发项目》 - ThinkPHP6使用使用中间件验证登录Token

https://blog.csdn.net/centaury32/article/details/134997438 按照https://blog.csdn.net/centaury32/article/details/134999029的方法验证登录Token&#xff0c;那么每一步都需要写同样一段代码&#xff0c;这里可以结合中间件进行验证 一、创建中间件&#xff1a;php thi…

QT----第三天,Visio stdio自定义封装控件,鼠标事件,定时器,事件分发器过滤器,绘图事件

目录 第三天1 自定义控件封装2 QT鼠标事件3 定时器4 event事件分发器5 事件过滤器6 绘图事件Qpainter 源码&#xff1a;CPP学习代码 第三天 1 自定义控件封装 新建一个QT widgetclass&#xff0c;同时生成ui,h,cpp文件 在smallWidget.ui里添加上你想要的控件并调试大小 回到…

ISSUE的基本概念

ISSUE:将符合一定条件的指令从发射队列&#xff08;IssueQueue)中选出来&#xff0c;并送到FU中执行的过程; ISSUE QUEUE也称之为reservation station, 其按照一定的规则&#xff0c;选择那些源操作数都已经准备好的指令&#xff0c;将其送到FU中执行&#xff0c;这个过程称为…

11.jvm第三方工具使用实践

目录 概述GCEasy官网jvm内存占用情况关键性能指标堆内存与元空间优化 MAT安装MAT相关概念说明内存泄漏与内存溢出shallow heap及retained heapoutgoing references与incoming referencesDominator Tree GCViewerArthas下载安装与启动jdk8jdk 11jdk11自定义boot jarjdk17 常用命…

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

目录 一、群集的类型及含义 二、LVS的三种工作模式 一、根据群集所针对的目标差异&#xff0c;可分为三种类型 二、LVS的负载调度算法 三、ipvsadm 工具选项 四、NAT模式 LVS负载均衡群集部署 1.共享服务器配置&#xff1a; 2.节点服务器1配置 3.节点服务器2 4.配置负…

spring 笔记八 SpringMVC异常处理和SpringMVC拦截器

文章目录 SpringMVC拦截器拦截器&#xff08;interceptor&#xff09;的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC拦截器拦截器&#xff08;interceptor&#xff09;的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC异常处理异常处理…