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

news2024/12/30 3:56:59

一、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.service
   96  systemctl disable firewalld.service
   97  setenforce 0
   98  yum install nfs-utils rpcbind -y
   99  systemctl start rpcbind.service
  100  systemctl start nfs.service
  101  systemctl enable nfs.service
  102  systemctl enable rpcbind.service
  103  mkdir -p /var/www/html/{cxk,xhz}
  104  cd /var/www/html/
  105  ls
  106  echo 'this is cxk_web01!' >cxk/test.html
  107  echo 'this is xhz_web02!' >xhz/test.html
  108  cat cxk/test.html 
  109  cat xhz/test.html 
  110  vim /etc/exports
  111  systemctl enable --now rpcbind nfs
  112  showmount -e
  113  systemctl stop firewalld
  114  setenforce 0
  115  showmount -e
  116  systemctl enable --now rpcbind nfs
  117  showmount -e
  118  vim /etc/exports
  119  systemctl status rpcbind.service 
  120  systemctl status nfs
  121  showmount -e
  122  exportfs -a
  123  showmount -e

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

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

77  systemctl restart network.service
   78  systemctl disable --now firewalld
   79  setenforce 0
   80  showmount -e 192.168.136.110
   81  cd /etc/yum.repos.d/
   82  ls
   83  mkdir bak
   84  mv *.repo bak
   85  rz -E
   86  ls
   87  yum -y install nginx
   88  vim /etc/fstab 
   89  mount -a
   90  df -h
   91  ls
   92  ls /usr/share/nginx/html/
   93  cat te
   94  ls /usr/share/nginx/html/
   95  cat /usr/share/nginx/html/test.html 
   96  vim /etc/nginx/nginx.conf 
   97  systemctl restart nginx
   98  vim /etc/sysconfig/network-scripts/ifcfg-ens33
   99  systemctl restart network nginx

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

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

 

第三步:配置负载调度器(内网关 ens33:192.168.136.100,外网关 ens36:12.0.0.100)  
101  cd /etc/sysconfig/network-scripts/
  102  ls
  103  ip a
  104  cp ifcfg-ens33 ifcfg-ens34
  105  ls
  106  vim ifcfg-ens34
  107  vim ifcfg-ens33
  108  ls
  109  systemctl restart network
  110  ip a
  111  vim /etc/sysctl.d/
  112  vim /etc/sysctl.d
  113  vim /etc/sysctl.conf 
  114  sysctl -p
  115  modprobe ip_vs
  116  cat /proc/net/ip_vs
  117  yum -y install ipvsadm.x86_64 
  118  cd /etc/yum.repos.d/
  119  ls
  120  vim /etc/sysconfig/network-scripts/ifcfg-ens33
  121  cd /etc/sysconfig/
  122  vim /etc/sysconfig/network-scripts/ifcfg-ens33
  123  systemctl restart network
  124  yum -y install ipvsadm.x86_64 
  125  vim /etc/sysconfig/network-scripts/ifcfg-ens33
  126  systemctl restart network
  127  ip a
  128  systemctl start ipvsadm.service 
  129  systemctl status ipvsadm.service 
  130  ipvsadm-save /etc/sysconfig/ipvsadm
  131  systemctl start ipvsadm.service 
  132  ipvsadm-save > /etc/sysconfig/ipvsadm
  133  systemctl start ipvsadm.service 
  134  ipvsadm -C
  135  ipvsadm -ln
  136  ipvsadm -A -t 12.0.0.100 -s rr
  137  ipvsadm -A -t 12.0.0.100:80 -s rr
  138  ipvsadm -ln
  139  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.120:80 -m
  140  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.130:80 -m
  141  ipvsadm -ln
  142  ipvsadm
  143  ipvsadm -ln
  144  ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs
  145  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 -C
  135  ipvsadm -ln
  136  ipvsadm -A -t 12.0.0.100 -s rr
  137  ipvsadm -A -t 12.0.0.100:80 -s rr
  138  ipvsadm -ln
  139  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.120:80 -m
  140  ipvsadm -a -t 12.0.0.100:80 -r 192.168.136.130:80 -m
  141  ipvsadm -ln
  142  ipvsadm
  143  ipvsadm -ln

 第四步:进行客户机测试

 

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

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

相关文章

upload-labs笔记

简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关&#xff0c;每一关都包含着不同上传方式。 文件上传漏洞是指&#xff1a; Web 服务器允许用户将文件上传至其…

使用blip2进行图片输入文本输出

多模态的重要模型blip2,官方提供模型可以直接用来图片生成文本 github地址&#xff1a;https://github.com/salesforce/LAVIS/tree/main/projects/blip2 个人相当于跑了一下blip2的demo&#xff0c;记录下过程&#xff0c;供今后需要参考&#xff1a; 1、首先是环境安装&#…

Spring上下文之注解模块ConfigurationMethod

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

如何实现免费的文档翻译

文中有彩蛋&#xff0c;请一定要看完。 目录 文中有彩蛋&#xff0c;请一定要看完。 一、问题的提出 二、文档翻译现状 三、如何免费海量文档翻译 1. 采用CAT工具机器翻译API法 2. 采用小牛文档翻译 四、学后反思 一、问题的提出 随着互联网和人工智能技术的飞速发展&…

【力扣】19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 相比于昨天&#xff0c;感觉刷题越来越轻松了~ 我进步了&#xff01; 以后刷题力度要加快了&#xff0c;因为我报了蓝桥杯&#xff01;加油~ 法一&#xff1a;计算链表长度 思路&#xff1a; 首先用个函数来计算出该链表的长度&#xff0c;然…

接口返回HTML页面详解

import requests from bs4 import BeautifulSoup import re import jsonurl https://listado.mercadolibre.com.mx/hogar-muebles-jardin/cocina/almacenamiento-organizacion/organizadores-cocina/_CustId_570995983_PrCategId_AD# 添加 headers 和 cookies headers {User-…

批量解压imagenet1k数据集中的zip文件

导言&#xff1a; 最近在处理imagenet1k数据集时&#xff0c;面对大量的zip包&#xff0c;手动一个一个解压显然不是明智的选择。作为程序员&#xff0c;我们可以采用批量解压的方法来提高效率&#xff0c;下面就是解决这一问题的方法和原因分析。 问题背景&#xff1a; image…

拆解大语言模型 RLHF 中的PPO算法

为什么大多数介绍大语言模型 RLHF 的文章&#xff0c;一讲到 PPO 算法的细节就戛然而止了呢&#xff1f;要么直接略过&#xff0c;要么就只扔出一个 PPO 的链接。然而 LLM x PPO 跟传统的 PPO 还是有些不同的呀。 其实在 ChatGPT 推出后的相当一段时间内&#xff0c;我一直在等…

11月,1Panel开源面板项目收到了这些评论

2023年11月24日&#xff0c;1Panel开源面板项目&#xff08;https://github.com/1Panel-dev&#xff09;发布了题为《10月&#xff0c;1Panel开源面板收到了这些评论》的社区评论合集。在该文章的评论区&#xff0c;很多社区用户跟帖发表了自己对1Panel开源项目的使用感受和意见…

【思考】只有实对称矩阵才能正交对角化吗?【矩阵的合同】

1&#xff1a;命题改写&#xff08;A可以正交对角化&#xff09; 2&#xff1a;左乘Q右乘Q逆&#xff08;Q转置&#xff09; 3&#xff1a;取转置 4&#xff1a;得证 总结 可以看到&#xff0c;矩阵如果可以正交对角化&#xff0c;那么一定是实对称矩阵。 另外&#xff0c;这…

stm32项目(12)——基于stm32f407zgt6的频率计设计

1.项目功能 配置stm32自带的定时器&#xff0c;以一定的周期产生中断&#xff0c;在中断服务函数里面&#xff0c;对某个IO口进行取反&#xff0c;这样就在该管脚上产生了一定频率的方波&#xff08;频率可以用按键调节&#xff09;。然后再使用stm32的捕获功能&#xff0c;对产…

Python语言学习笔记之十一(DotEnv)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 1、认识Python DotEnv dotenv是Python中的一个工具包&#xff0c;它主要用于谈取项目中的.env文件&#xff0…

科研论文中PPT图片格式选择与转换:EPS、SVG 和 PDF 的比较

当涉及论文中的图片格式时&#xff0c;导师可能要求使用 EPS 格式的图片。EPS&#xff08;Encapsulated PostScript&#xff09;是一种矢量图格式&#xff0c;它以 PostScript 语言描述图像&#xff0c;能够无损地缩放并保持图像清晰度。与像素图像格式&#xff08;如 PNG 和 J…

VR智慧眼:为各行业打造3D数字化业务协同平台

自改革开放以来&#xff0c;城镇化建设一直在不断推进实施&#xff0c;如今各城市化速度虽然在不断加快&#xff0c;但随之而来的部分城市开始出现资源短缺、环境污染、交通拥堵、安全隐患等问题&#xff0c;因此为了满足智慧城市大型区域场景数字化升级需求&#xff0c;助力区…

SQL Server数据库使用T-SQL语句简单填充

文章目录 操作步骤&#xff1a;1.新建数据库起名RGB2.新建表起名rgb3.添加三个列名4.点击新建查询5.填入以下T-SQL语句&#xff0c;点击执行&#xff08;F5&#xff09;6.刷新之后&#xff0c;查看数据 操作环境&#xff1a; win10 Microsoft SQL Server Management Studio 20…

【项目管理】CMMI对项目管理有哪些个人启发和思考

导读&#xff1a;本人作为项目经理参与公司CMMI5级评审相关材料准备工作&#xff0c;现梳理CMMI有关知识点&#xff0c;并结合项目给出部分示例参考&#xff0c;以及本人对于在整理材料过程中一些启发和体验思考。 目录 1、CMMI定义 2、CMMI-5级 3、CMMI文档清单 4、示例-度…

【Spring Boot】Starter机制的使用及案例

一、引言 1、什么是SpringBoot Starter SpringBoot中的starter是一种非常重要的机制(自动化配置)&#xff0c;能够抛弃以前繁杂的配置&#xff0c;将其统一集成进starter&#xff0c;应用者只需要在maven中引入starter依赖&#xff0c;SpringBoot就能自动扫描到要加载的信息并启…

7+m6A+分型+实验,甲基化方向的生信思路,没有思路的同学可参考

今天给同学们分享一篇生信文章“Landscape analysis of m6A modification regulators related biological functions and immune characteristics in myasthenia gravis”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; MG相…

Notes Domino 14.0正式版发布

大家好&#xff0c;才是真的好。 经过12个月的等待&#xff0c;经过三个Beta版本的迭代&#xff0c;昨天晚上11:00&#xff0c;Notes Domino 14.0版本正式发布&#xff01; 过去半年&#xff0c;经过我们对三个Beta版本不断的测试和介绍&#xff0c;一些新功能可能大家已经了…

基于Java的在线教育平台设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对学生课程学习信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…