技术交流:网络与负载均衡

【区块链实战】什么是 P2P 网络,区块链和 P2P 网络有什么关系_p2p和区块链(1) 在白皮书中,中本聪就已经说明了这个系统的网络结构是 peer to peer, 也就是 P2P 网络。【一种完全的点对点电子货币应当允许在线支付从一方直接发送到另一方 而不需要通过一个金融机构。数字签名提供了部分解决方案,但如果仍需一个 可信任第三方来防止双重支付,那就失去了电子货币的主要优点。我们提出一 种使用点对点网络解决双重支付问题的方案。】… 阅读详情

网络

OSI七层网络模型

网路的七层架构从下到上主要分为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

在这里插入图片描述

  • 物理层:主要定义物理设备标准,主要作用是传输比特流,具体做法是在发送端将0/1码转化为电流的强弱来进行传输,在接收端再转化为0/1码,也就是常说的数模转化,模数转换,这一层的数据叫做比特。

  • 数据链路层:主要用于对数据包中的MAC地址进行解析和封装。这一层的数据叫做帧。在这一层工作的设备主要有网卡、网桥、交换机。

  • 网络层:主要用于对数据包中的IP地址进行封装和解析,这一层的数据叫做数据包。在这一层工作的设备主要有路由器、交换机、防火墙等。

  • 传输层:定义了传输数据的协议和端口号,主要用于数据的分段、传输和重组。在这一层的工作协议有TCP和UDP等。TCP是传输控制协议,传输效率低,可靠性强,用于传输对可靠性要求高、数据量小的数据;UDP是用户数据报协议,不可靠传输,用于传输数据量大的数据。

  • 会话层:在传输层的基础上建立连接和管理会话,具体包括登录验证、断点续传、数据沾包与分包等。在设备之间需要相互识别的是IP,也可以是MAC或者主机名。
    ==思考:登录验证、断点续传、数据沾包与分包 ==

  • 表示层:主要对接收的数据进行解释、加密、解密、压缩、解压缩等,即把计算机能够识别的内容转换成人能够识别的内容(图片、声音、文字等)。

  • 应用层:基于网络构建具体应用,例如FTP文件上传下载服务、Telnet服务、HTTP服务、DNS服务、SNMP邮件服务等。

TCP/IP四层网络模型

TCP/IP指的是因特网的整个TCP/IP协议簇。从协议分层模型方面来讲,TCP/IP由4个层次组成:网络接口层、网络层、传输层和应用层。

  • 网络接口层(Network Access Layer):定义了主机间网络连通的协议,具体包括Echernet、FDDI、ATM等通信协议。
  • 网络层(Internet Layer):主要用于数据的传输、路由及地址的解析,以保障主机可以把数据发送给任何网络上的目标。数据经过网络传输,发送的顺序和到达的顺序可能发生变化。在网络层使用IP(Internet Protocol)和地址解析协议(ARP)。
  • 传输层(Transport Layer):使源端和目的端机器上的对等实体可以基于会话相互通信。在这一层定义了两个端到端的协议TCP和UDP。TCP是面向连接的协议,提供可靠的报文传输和对上层应用的连接服务,除了基本的数据传输,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要类似TCP的可靠性保障和流量控制等功能的应用程序。
  • 应用层(Application Layer):负责具体应用层协议的定义,包括Telnet(TELecommunications NETwork,虚拟终端协议)、FTP(File Transfer Protocol文本传输协议)、SMTP(Simple Mail Transfer Protocol,电子邮件协议)、DNS(Domain Name Service,域名服务)、NNTP(Net News Transfer Protocol,网上新闻传输协议)、HTTP(HyperText Transfer Protocol,超文本传输协议)等。

TCP三次握手和四次挥手

TCP的数据表结构

  • 源端口号(16位):和源主机的IP地址一起标识源主机的一个应用进程。
  • 目的端口号(16位):和源主机的IP地址一起标识目的主机的一个应用进程。IP报头中的源主机IP地址、目的主机的IP地址和源端口、目的端口确定了唯一一个TCP连接。
  • 顺序号seq(32位):标识从TCP源端向TCP目的端发送的数据字节流,表示这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则TCP用顺序号对每个字节进行计数。序号是32bit的无符号数,序号达到2的32次幂-1后又从0开始。建立一个新的连接时,SYN标志变为1,顺序号字段包含由这个主机选择的该链接的初始顺序号ISN(Initial sequence number)。
  • 确认号(32位):存储发送确认的一段所期望收到的下一个顺序号。确认序号是上次已成功收到的数据字节顺序号+1。只有ack标志为1时确认序号字段才有效。TCP为应用层提供全双工服务,这意味着数据能在两个方向上独立进行 传输。因此,连接的每一端都必须保持每个方向上的传输数据顺序号。
  • TCP报头长度(4位):存储报头中头部数据的长度,它指明了数据从哪里开始。需要这个值是因为任选字段的长度是可变的,该字段 占4bit,因此TCP最多有60字节的首部,但没有任选字节,正常的长度是20字节。
  • 保留为(6位):数据保留位,目前必须被设置为0.
  • 控制位(control flags :6位):在TCP报头中有6个标志比特,他们中的多个可被同时设置为1,具体含义如下:
控制位说明
URG1表示紧急指针有效,0表示忽略紧急指针的值
ACK1表示确认号有效,0表示在报文中不包含确认信息,忽略确认号字段
PSH1表示时带有PSH标志的 数据, 表示接收方应该尽快将这个报文段交给应用层,而不用等待缓冲区 装满
RST用于复位由于主机崩溃或者其他原因而出现的错误连接,还可以用于拒绝非法的报文段和拒绝连接请求。在一般情况下,如果收到一个RST为1的报文,那么一定发生了某种问题。
SYN同步序号,1表示连接请求,用于建立连接和使顺序号同步
FIN用于释放连接,1表示发送方已经没有数据要发送了,即关闭本方数据流
  • 窗口大小(16位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口的大小。窗口大小时16bit的字段,因而窗口最大为65535字节。
  • 校验和(16位):次校验和是对整个的TCP报文段,包括TCP头部和TCP数据,以16位字符计算所得的。这是一个强制性的字段,一定是由发送端计算和存储的,并由接收端验证。
  • 紧急指针(16位):只有在URG为1时,紧急指针才有效,这是告诉TCP该条数据需要紧急发送。
  • 选项:最常见的可选字段是最长报文大小,又叫做MSS(Maximum Segment Size)。每个连接方通常在通信的第一个报文段(为建立连接而设置SYN标志的那个段)中指明这个选项,表明该TCP连接能接收的最大长度的报文段。选项长度不一定是32字节的整数倍,因此需要加填充位,使得报文长度成为整数字节。
  • 数据:TCP报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有TCP首部。如果一方没有数据要发送了,则也使用没有任何数据的首部确认收到的数据。在处理超时的许多情况下也会发送不带有任何数据的报文段。

TCP三次握手

TCP是因特网的传输层协议,使用三次握手协议建立连接。在客户端主动发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的SYN执行ACK确认。这种建立连接的方式可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

三次握手的过程:

  1. 客户端发送SYN(SYN=x)报文给服务器端,进入SYN_SEND状态。
  2. 服务器端收到SYN报文,回应一个SYN(seq=y)和ACK(ack=x+1)报文,进入SYN_RECV状态;
  3. 客户端收到服务器端的SYN报文,回应一个ACK(ack=y+1)报文进入Established状态

TCP四次挥手

TCP在建立连接时需要进行三次握手,在断开连接时要进行四次挥手,这是由于TCP的半关闭造成的。因为TCP连接是全双工的(即数据可在两个方向上独立传递),所以在进行关闭时对每个方向都要单独进行关闭,这种单方向的关闭叫做半关闭。在一方完成它的数据发送任务时,就发送一个FIN来向另一方通告将要终止这个方向的连接。

TCP断开连接既可以由客户端发起的,也可以是服务器端发起的。如果由客户端发起断开连接操作,则称客户端主动断开连接;如果是服务器端主动发起的断开操作,则称服务端主动断开连接。

四次挥手的过程:

  1. 客户端应用进程调用断开连接的请求,向服务器端发送一个终止标志位FIN=1,seq=u的消息,表示在客户端关闭链路前要发送的数据已经发送完毕,可以开始关闭链路操作,并请求服务器端确认关闭客户端到服务器的链路操作。此时客户端处于FIN-WAIT=1状态
  2. 服务器在收到这个FIN消息后返回一个ACK=1,ack=u+1;seq=v的消息给客户端,表示接收到客户端断开链路的操作请求,这是TCP服务器端进程通知高层应用进程释放服务端到服务器端的链路,服务器端处于CLOSE-WAIT状态,即半关闭状态。客户端在收到消息后处于FIN-WAIT-2状态。
  3. 服务器端在关闭链路前将需要发送给客户端你的消息发送给客户端,等待该数据发送完成后,发送一个终止标志位FIN=1,ACK=1,seq=w,ack=u+1的消息个客户端,表示关闭链路前服务器需要向客户端发送的消息已经发送完毕,请求客户端确认关闭从服务器到客户端的链路操作,此时服务器端处于LAST-WAIT状态,等待客户端最终断开链路。
  4. 客户端在接收到这个最终FIN消息后,发送一个ACK=1,seq=u+1,ack=w+1的消息给服务器端,表示接收到服务器端的断开连接请求,并准备断开服务器端到客户端的链路。此时客户端处于TIME-WAIT状态,TCP连接还没有释放,然后经过等待计时器(2MSL)设置的超时时间后,客户端将进入CLOSE状态 。

HTTP的原理

HTTP是一个无状态的协议,无状态指在客户端web浏览器和服务器之间不需要建立持久的连接,在一个客户端向服务器端发出请求且服务器收到请求并返回响应(Response)后,本次通信结束,HTTP连接将被关闭,服务器不保留连接的相关信息。

HTTP遵循请求/应答(Request/Response)模型, 客户端相服务器发送请求,服务器处理请求并返回适当的应答。

HTTP的传输流程

HTTP的传输流程包括地址解析、封装HTTP数据包、封装TCP包、建立TCP连接、客户端发送请求、服务端响应、服务端关闭TCP连接。

  1. 地址解析:地址解析通过域名系统DNS解析服务器域名从而获得主机的IP地址。例如,用客户端的浏览器请求http://localhost.com:8080/index.html,可以从中分解出协议名、主机名、端口、对象路径等部分结果

    • 协议名:HTTP
    • 主机名:localhost.com
    • 端口号:8080
    • 对象路径:、index.html
  2. 封装HTTP数据包:解析协议名、主机名、端口、对象路径等并结合本机自己的信息封装成一个HTTP请求数据包。

  3. 封装TCP包:将HTTP请求数据包进一步封装成TCP数据包。

  4. 建立TCP连接:基于TCP的三次握手机制建立TCP连接。

  5. 客户端发送请求:在建立连接后,,客户端发送一个请求到服务器。。

  6. 服务器响应:服务器在接收到请求后,结合业务逻辑进行数据处理,然后向客户端返回相应的响应信息。在响应信息中包含请求行、协议版本号、成功或错误代码、消息体等内容。

  7. 服务器关闭TCP连接:服务器在向浏览器发送请求响应数据后关闭TCP连接。但如果浏览器或者服务器在消息头中加入Connection:keep-alive,则TCP连接在请求响应数据发送后仍然保持连接状态,在下一次请求中浏览器可以继续使用相同的连接发送请求。采用keep-alive方式不但减少了请求响应的时间,还节约了网络带宽和系统资源。

HTTP中常见的状态码

一般情况下,“20x”表示请求成功,“30x”表示网络重定向,“40x”表示客户端请求错误,“50x”表示服务器错误。

HTTPS

HTTPS是以安全为目标的HTTP通道。它在HTTP中加入了SSL层以提高数据传输的安全性。HTTP被用于在web浏览器和网站服务器之间传递信息,但以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP不适合传输一些敏感信息,比如身份证号码、密码等。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信进行数据加密,,以保障数据传输的安全性。

HTTP的加密流程如下:

  1. 发起请求:客户端在通过TCP和服务器建立连接后(默认使用443端口),发出一个请求证书的消息给服务器,在该请求消息里包含自己可实现的算法列表和其他需要的消息。
  2. 证书返回:服务器端在接收消息后回应客户端并返回证书,在该证书中包含服务器信息、域名、申请证书的公司、公钥、数据加密算法等。
  3. 证书验证:客户端在收到证书后,判断证书签发机构是否正确,并使用该签发机构的公钥确认签名是否有效,客户端还会确保在证书中列出的域名为正在连接的域名。如果客户端确认证书有效,则生成对称密钥,,并使用公钥将对称密钥加密。
  4. 密钥交换:客户端将加密后的对称密钥发送给服务器端,服务器端在接收到对称密钥后使用私钥解密。
  5. 数据传输:经过上述步骤,客户端和服务器就完成了密钥对的交换,在之后的数据传输过程中,客户端和服务器就可以基于对称加密(加密和解密使用相同密钥的加密算法)将数据加密后在网络上传输,保证了网络数据传输的安全性。

在这里插入图片描述

CDN原理

CDN(Content Delivery Network , 内容分发网络)指基于部署在各地的机房服务器通过中心平台的负载均衡、内容分发、调度的能力,使用户就近获取所需内容,降低网络延迟,提升用户访问的响应速度和体验度。

CDN的关键技术

CDN的关键技术包含内容发布、内容路由、内容交换和性能管理。具体如下

  • 内容发布:借助建立索引、缓存、流分裂、组播等技术,将内容发布到网络上距离用户最近的中心机房。
  • 内容路由:通过内容路由器中的重定向(DNS)机制,在多个中心机房的服务器上负载均衡用户的请求,使用户从最近的中心机房获取数据。
  • 内容交换:根据内容的可用性、服务器的可用性及用户的背景,在缓存服务器上利用应用层交换、流分裂、重定向等技术,智能的平衡负载流量。
  • 性能管理:通过内部和外部监控系统,获取网络部件的信息,测量内容发布的端到端性能(包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳运行状态。

CDN的主要特点:

  • 本地缓存(cache)加速:将用户经常访问的数据(尤其是静态数据)缓存在本地,以提升系统的响应速度和稳定性。
  • 镜像服务:消除不同运营商之间的网络差异,实现跨运营商的网络加速,保证不同运营商网络中的用户都能得到良好的网络体验。
  • 远程加速:理由DNS负载均衡技术为用户选择服务质量最优的服务器,加快用户远程访问的速度。
  • 带宽优化:自动生成服务器的远程镜像缓存服务器,远程用户在访问时从就近的缓存服务器上读取数据,减少远程访问的带宽。,分担网络流量,并降低原站点的WEB服务器负载等。
  • 集群抗攻击:通过网络安全技术和CDN之间的智能冗余机制,可以有效减少网络攻击对网站的影响。

内容分发系统

将用户请求的数据分发到就近的各个中心机房,以保障为用户提供快速、高效的内容服务。缓存的内容包括静态图片、视频、文本、用户最近访问的JSON数据等。缓存的技术包括内容缓存、分布式缓存、本地文件缓存等。缓存的策略主要考虑缓存更新、缓存淘汰机制。

负载均衡系统

负载均衡系统是整个CDN系统的核心,负载均衡根据当前网络的流量分布、各中心机房服务器的负载和用户请求的特点将用户的请求负载到不同的中心机房或不同的服务器上,以保障用户内容访问的流畅性。负载均衡系统包括全局负载均衡(GSLB)和本地负载均衡(SLB)。

  • 全局负载均衡主要指跨机房的负载均衡,通过DNS解析或者应用层重定向技术奖用户的请求负载到就近的中心机房上。
  • 本地负载均衡主要指机房内部的负载均衡,一般通过缓存服务器,基于LVS、Nginx、服务网关等技术实现用户访问的负载

管理系统

管理系统分为运营管理和网络管理子系统。网络管理系统主要对整个CDN网络资源的运行状态进行实时监控和管理。运营管理指对CDN日常运维业务的管理,包括用户管理、资源管理、流量计费和流量限流等。

负载均衡

负载均衡建立在现有网络结构之上,提供一种廉价、有效、透明的方法来扩展网络设备和服务器的带宽,增加吞吐量,加强了网络数据处理能力,并提高网络的灵活性和可用性。项目中常用的负载均衡有四层负载均衡和七层负载均衡。

四层负载均衡和七层负载均衡的对比

四层负载均衡基于IP和端口的方式实现网络的负载均衡,具体实现为对外提供一个虚拟IP地址和端口接收所有用户的请求,然后根据负载均衡配置和负载均衡策略将请求发送给真实的服务器。

七层负载均衡基于URL等资源来实现应用层基于内容的负载均衡,具体实现为通过虚拟的URL或者主机名接收所有用户的请求,然后将请求发送给真实的服务器。

两者最大的区别是:四层负载均衡只能针对IP地址和端口上的数据做统一的分发,而七层负载均衡能根据消息的内容做更详细的有针对性的负载均衡。通常使用LVS等技术实现基于socket的四层负载均衡,使用nginx等技术试下能给予内容分发的七层负载均衡。比如 “ /user/*** ” 开头的url请求负载到单点登录服务器,而将以 “ /business/** ”开头的URL请求负载到具体的业务服务器。

四层负载均衡

四层负载均衡主要通过修改报文中的目标地址和端口来实现报文的分发和负载均衡。以TCP为例,负载均衡设备在接收到第一个来自客户端的SYN请求后,会根据负载均衡配置和负载均衡策略选择一个最佳的服务器,并将报文的目标IP地址修改为该服务器的IP地址直接转发给该服务器、TCP连接的建立(即三次握手过程)是在客户端和服务器端之间完成的,负载均衡设备只起到路由器的转发功能。

常用的软硬件如下:

  • F5:硬件负载均衡器,功能完备,价格昂贵。
  • LVS:基于IP+端口实现的四层负载软件,常和keep-alive配合使用
  • Nginx:同时实现四层负载和七层负载均衡,带缓存功能,可基于正则表达式灵活转发。

七层负载均衡

七层负载均衡又叫作“内容负载均衡”,主要通过解析报文中真正有意义的应用层内容,并根据负载均衡配置和负载均衡策略选择一个最佳的服务器响应用户的请求。

七层应用负载可以使整个网络更加智能化,七层负载均衡根据不同的数据类型将数据存储在不同的服务器上来提高网络整体的负载能力。比如将客户端的基本信息存储在内存较大的缓存服务器上,将文件信息存储在磁盘空间较大的文件服务器上,将图片视频存储在网络I/O能力较强的流媒体服务器上。在接收到不同客户端的请求时从不同的服务器上获取数据并将其返回给客户端,提高客户端的访问效率。

七层负载均衡常用的软件如下:

  • NAProxy:支持七层代理、会话保持、标记、路劲转移等。
  • Nginx:同时实现四层负载和七层负载均衡,在HTTP和Mail协议上功能比较好,性能与HAProxy相当。
  • Apache:使用简单,性能较差。

负载均衡算法

常见的负载均衡算法有:轮询均衡(Round Robin)、权重轮询均衡(Weighted Round Robin)、随机均衡(Random)、权重随机均衡(Weighted Random)、响应速度均衡(Response Time)、最少连接数均衡(Least Connection)、处理能力均衡、DNS响应均衡(Flash DNS)、散列算法均衡、IP地址散列、URL散列。

轮询均衡(Round Robin)

轮询均衡指将客户端请求轮流分配到n个服务器上,每台服务器均被均衡的分配一定数量的客户端请求。轮询均衡算法适用于集群中所有服务器都有相同的软硬件配置和服务能力的情况下。

权重轮询均衡(Weighted Round Robin)

权重轮询均衡指根据每台服务器的不同配置及能力,为每台服务器都设置不同的权重值,然后按照设置的权重值轮询地将请求分配到不同的服务器上。例如:ABC三台服务器的权重值为3/3/4、则服务器ABC将分别承担30%、30%、40%的客户端请求。

权重轮询均衡算法主要用于服务器配置不均等的环境中。

随机均衡(Random)

随机均衡指将来自网络的请求随机分配到内部的多态服务器,不考虑服务器的配置和负载情况。

权重随机均衡(Weighted Random)

权重随机均衡算法类似于权重轮询算法,只是在分配请求时不再轮询发送,而是随机选择某个权重的服务器发送。

响应速度均衡(Response Time)

响应速度均衡指根据服务器设备响应速度的不同将客户端请求发送到响应速度最快的服务器上。对响应速度的获取是通过负载均衡设备定时为每台服务都发出一个探测请求(例如Ping)实现的。响应速度均衡能够为当前的每台服务器根据其不同的负载均衡情况分配不同的客户端请求,这有效避免了某个服务器单点负载过高的情况。但需要注意的是,这里探测到的响应速度是负载均衡设备到各个服务器之间的响应速度,并不完全代表客户端到服务器的响应速度,因此存在一定偏差。

最少连接数均衡(Least Connection)

最少连接数均衡指在负载均衡器内部记录当前每台服务器正在处理的连接数量,在有新的请求时,将该请求分配给连接数最少的服务器。这种均衡算法适用于网路连接带宽有限、CPU处理任务简单的请求服务。例如FTP

处理能力均衡

处理能力均衡算法将服务请求分配给内部负荷最轻的服务器,负荷是根据服务器的CPU型号、CPU数量、内存大小及当前连接数等换算而成的。处理能力均衡算法由于考虑到内部服务器的处理能力及当前网络的运行状况,所以相对来说更加精确,尤其适用于七层负载均衡的场景。

DNS响应均衡(Flash DNS)

DNS响应均衡算法指在分布在不同中心机房的负载均衡设备都收到同一个客户端的域名解析请求时,所有负载均衡设备均解析此域名并将解析后的服务器IP地址返回给客户端,客户端向收到第一个域名解析的IP地址发起请求服务,而忽略其他负载均衡设备的响应。这种均衡算法适用于全局负载均衡的场景。

散列算法均衡

散列算法均衡指通过一致性散列算法和虚拟节点技术奖相同参数的请求总是发送到同一台服务器,该服务器将长期、稳定地为某些客户端提供服务。在某个服务器被移除或异常宕机后,该服务器的请求基于虚拟节点技术均摊到其他服务器,而不会影响集群整体的稳定性。

IP地址散列

IP地址散列指在负载均衡器内部维护了不同链接上客户端和服务器的IP对应关系表,将来自同一个客户端的请求统一转发给相同的服务器。该算法能够以会话为单位,保证同一客户端的请求能够一直在同一台服务器上处理。主要适用于客户端和服务器需要保持长连接的场景,比如基于TCP长连接的应用。

URL散列

URL散列指通过管理客户端请求URL信息的散列表,将相同URL的请求转发给同一台服务器。该算法主要适用于在七层负载中根据用户请求类型的不同将其转发给不同类型的应用服务器。

LVS的原理及应用

LVS(Linux Virtual Server)是一个虚拟的服务器集群系统,采用IP负载均衡技术将请求均衡地转移到不同的服务器上执行,且通过调度器自动屏蔽故障服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。整个服务器集群的结构对用户是透明的,无序修改客户端和服务器端的程序,便可实现客户端到服务器的负载均衡。

LVS原理

LVS由前端的负载均衡器(Load Balance ,LB)和后端的真实服务器(Real Server,RS)群组成,在真实服务器间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只需要关注作为LB的虚拟服务器,而不需要关注提供服务的真实服务器群。在用户的请求被发送给虚拟服务器后,LB根据设定的包转发策略和负载均衡调度算法将用户的请求转发给真实服务器处理,真实服务器在处理完成后再将用户请求的结果返回给用户。

实现LVS的核心组件有负载均衡调度器、服务器池和共享存储。

  • 负载均衡调度器(Load Balancer/Director):是整个集群对外提供服务的入口,通过对外提供一个虚拟IP来接收客户端的请求。在客户端将请求发送到该虚拟IP后,负载均衡调度器会负责将请求按照负载均衡策略发送到一组真实的服务器上。
  • 服务器池(Server Pool):服务器池是一组真正处理用户端请求的真实服务器,具体执行的服务有WEB、MAIL、FTP、DNS等
  • 共享存储(Shared Storage):为服务器池提供一个共享的存储区,使得服务器池拥有相同的内容,提供相同的服务。

在接收LVS内部数据的转发流程前,了解LVS技术中常用的一些名词:

缩写名称说明
CIP客户端IP(Client IP Address)用于记录发送给集群的源IP地址
VIP虚拟IP(Virtual IP Address)用于Director对外提供服务的IP地址
DIPDirector IPDirector用于连接内外网络的IP地址,即负载均衡器上的IP地址
RIP真实IP(Real Server的IP Address)集群中真实服务器的物理IP地址
LIPLVS内部IP(Local IP Address)LVS集群的内部通信IP

LVS的IP负载均衡技术是通过IPVS模块实现的。IPVS是LVS集群系统的核心软件,被安装在Director Server 上,同样在Director Server 上虚拟出一个IP地址。用户通过这个虚拟的IP地址访问服务器。这个虚拟的IP地址一般被称为LVS的VIP,即Virtual IP。
访问的请求首先经过VIP到达负载调度器,然后由负载调度器从真实服务器列表中选取一个服务节点响应用户的请求。

LVS数据转发

LVS的数据转发流程是LVS设计的核心部分:

  1. PREROUTING链接收用户请求:客户端向PREROUTING链发送请求。
  2. INPUT链转发:在PREROUTING链通过RouteRable列表发现请求数据包的目的地址是本机时,将数据包发送给INPUT连接。
  3. IPVS检查:IPVS检查INPUT链上的数据包,如果数据包中的目的地址和端口不在规则列表中,则将该数据包发送到用户空间的ipvsadm。ipvsadm主要用于用户定义和管理集群。
  4. POSTROUTING链转发:如果数据包中的目的地址和端口都在规则里面,那么将数据包中的目的地址修改位事先定义好的真实服务器地址,通过FORWARD将数据发送到POSTROUTING链。
  5. 真实服务器转发:POSTROUTING链根据数据包中的目的地址将数据包转发到真实服务器。
    图

LVS NAT模式

LVS NAT(Network Address Translation)即网络地址转换模式,具体实现流程如下:

图

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]文件上传 [第二章 web进阶]文件上传开始行动绕过第1个限制绕过第2个限制 介绍:记录一下笔记,方便以后迅速回忆使用。 《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》 先看一下题目源码: <?php header("Content-Type:text/html; charset=utf-8"); // 每5分钟会清除一次目录下上传的文件 require_once('pclzip.lib.php'); if(!$_FILES){ echo ' 阅读详情

相关推荐

宝塔部署若依前端出现502解决方法

若依系统是一个基于Java语言的开源项目,旨在帮助开发者减少开发时间,特别适用于需要快速开发出一套具有用户管理、菜单管理、权限管理、定时任务、日志管理等功能的简单系统。系统分为前后端分离、分布式等架构前后端分离部署教程然而通过宝塔来部署若依系统会遇见一些问题,特此在这里记录一下。

m0_74823683的博客 776

高可用方案:跨机房部署和多机房部署

总结来说,跨机房部署和多机房部署都是为了提高系统的可用性和容错能力,它们在具体实施上有所差异,但目标是一致的。跨机房部署指的是将应用或服务的实例分布在两个或多个不同的数据中心。这种部署方式的目的是为了提高服务的可用性和容错能力,尤其是在面对数据中心级别的故障时。跨机房部署和多机房部署是分布式系统中常用的两种部署策略,它们旨在提高系统的可用性、可靠性和容错能力。多机房部署通常是指在一个大型分布式系统中,将服务部署在多个地理位置分散的数据中心内,每个数据中心都具备完整的运行能力。

猿脑2.0的博客 707

Visio 2013 Professional密钥安装激活全攻略:版本匹配与故障排查

产品密钥是软件授权体系中的核心凭证,用于验证用户对软件的使用权限。在微软Office产品线中,Visio 2013 Professional采用25位字符的密钥机制,通过联网或电话方式完成激活。正确使用密钥不仅能确保软件功能完整,还能避免因授权问题导致的工作中断。对于企业IT运维和个人用户而言,掌握密钥类型辨析、安装包匹配规则以及激活失败排查方法,是保障老版本软件稳定运行的关键。本文围绕Visio 2013 Professional,详细讲解密钥输入、激活流程及常见错误代码处理,帮助读者高效完成部署与维护。

weixin_28487433的博客 329

(笔记)网络技术学习交流会

1、网络工程师发展历程 (1)网络管理员阶段 ①计算机硬件的维护 ②计算机系统的维护 ③局域网的维护 ④打印服务的维护 ⑤业务数据的管理(更新、备份) ⑥网站的维护(在网站上进行更新) ⑦在网络上对公司进行推广 (2)网络工程师阶段 精通于一个方向: ①路由交换 ②Windows 防火墙 数据库系统 网络监控 网络安全 ③Linux 红帽 ④其他 (3)技术总监阶段 ①侧重点在于管理和规划 ②重点...

weixin_30240349的博客 197

WSOLA原理及matlab仿真

WSOLA原理 对于 OLA 算法来说,常常无法保持原信号中的周期性结构,在帧裁剪的过程中,不能保证每一个帧都能覆盖完整周期并保证其相位对齐,会产生相位跳跃失真。 为保证**基频不变**,就要使用 WSOLA 算法。 WSOLA 并不直接在 Ha 处找一帧进行直接拼接,而是在一个区间内寻找与理想帧最接近的一帧进行叠加。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8a234f4fde104fc69a9f3ddb7bcf3014.png?x-oss-process=ima

ManiacLook的博客 3214

C# 调用halcon中visualize_object_model_3d显示点云

3.1 判断线程是否为空,如果为空,则新创建,如果不为空,则中断线程,清空窗口后再次执行创建操作3.2 创建:调用show()方法实例化显示类的对象,传入显示参数,将线程testvisual 绑定 在 类对象的action方法上(此处action方法内部,只调用了visualize_object_model_3d算子)3.3 启动线程。

weixin_42362219的博客 1402

分布式软件架构——常见的四层负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。真正的大型系统的负载均衡过程往往都是多级的。

四问四不知的博客 2399

1、开启 Microsoft Power Automate 自动化之旅

本文介绍了 Microsoft Power Automate 的基本概念和其在信息时代自动化需求中的重要作用。Power Automate 是 Power Platform 的一部分,能够通过无代码/低代码的方式自动化处理重复性任务,例如邮件处理、文件复制等,从而提升工作效率。文章还详细讲解了 Power Automate 的核心术语、登录方式、创建第一个流程的操作步骤,并通过示例帮助用户快速上手。无论是终端用户还是管理员,都可以通过本文了解如何利用 Power Automate 实现业务流程自动化。

corn8的博客 169

负载均衡的会话保持和长短连接简介

会话保持是指连接断开,在规定时间内再次连接的时候,保证路由到同一服务器。长连接在keep-alive状态下也是会路由到同一服务的。会话不保持的话,连接断开,再次连接的时候,会重新进行服务器路由。负载均衡开启会话保持,是保证同一客户端多次连接路(断开之后的多次连接)由到同一服务的。负载均衡关闭会话保持,长链接在keep-alive的状态下,也会路由到同一服务,连接断开重连的情况下会负载均衡分布。

花&败 2726

3D Slicer学习记录(4)-PLUSapp连接双目相机Intel Realsense

plusapp是基于openIGTLink协议的免费的开源库和应用程序API接口,用于数据采集、预处理、校准和实时流成像、位置跟踪和其他传感器数据。这里以intel realsense双目相机为例详细的演示整个图像流导入到3D Slicer的流程。

weixin_39090239的博客 1344

PyRoki 入门教程(二)安装与使用

PyRoki是一个用于机器人运动学优化的Python库,具有模块化设计、可扩展性和跨平台支持等特点。它支持逆运动学、轨迹优化和动作重定位等任务,采用Levenberg-Marquardt优化器提高效率。主要功能包括:基于URDF的可微分正向运动学模型、自动生成碰撞基元、通用成本因子和自定义成本函数等。PyRoki支持CPU、GPU和TPU运行,适用于从单机器人到大规模并行处理场景。目前存在一些限制,如仅支持软约束、静态形状和特定关节类型等。官方提供了多个应用示例,包括基础逆运动学、碰撞检测、轨迹优化和手部/

机器人控制与仿真应用 1251

多宽带叠加的分布式云盘:文件秒传、断点续传、大文件下载

家中有三条宽带,想通过搭建私有云盘,叠加上传和下载的速度。对比了多种私有云的系统,没找到满足的要求的,所以便萌生出搭建一个可宽带叠加的分布式私有云存储。

liuyuncc的博客 2672

Open3D 曲率下采样

曲率下采样是一种基于几何特征的点云处理技术,通过计算每个点的曲率来判断其所在位置的局部表面特征,从而进行选择性保留。曲率的计算通常基于点的法向量和其邻域点的分布。

纵马踏花向自由 841

2024年几种负载均衡技术的实现_负载均衡技术五,2024年最新软件测试开发人员不得不收集的代码

如图:优点:比较简单缺点:浏览器需要零次请求服务器才能完成一次访问,性能较差。http重定向服务器自身的处理能力可能成为瓶颈。使用http302响应重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。

2401_84731999的博客 925

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【云服务器 ECS 实战】一文掌握负载均衡服务原理及配置方法_负载均衡到ecs

比如使用 Http 协议类型,用户想要在前端访问到负载均衡,我们就需要配置 Http 协议与 80 端口,负载均衡也是使用 Http 协议转发至后台服务器,那么后端启用的服务或者监听也需要使用 Http 协议来进行匹配。也就是说前端与后端的协议类型都是相对应的。

2401_84183628的博客 991

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

软件测试最新负载均衡技术对比:F5与Nginx_f5和nginx区别,高级软件测试开发面试题

冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击、SYN Flood保护、防火墙一包过滤、包消毒。智能网络、地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓。加上多样化的负载均衡策略,智能化的流量管理,可以达到最佳的负载均衡需求。* F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。

2401_84141219的博客 878

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

一文带你了解 ------ 那些做网络与基础架构安全产品的企业_哪些公司会用负载均衡(1)

为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓👉优快云大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享**(安全链接,放心点击)**👈​。

2401_84545364的博客 1392

【云服务器 ECS 实战】负载均衡 SLB 概述及配置选型_云技术 slb(1)

负载均衡就是将访问流量根据转发策略分发到后端的多台服务器中。负载均衡建立在现有网络结构之上,提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。简单理解就是将负载(工作任务)进行平衡并分摊到多个操作单元上进行执行。

2401_84183726的博客 896

2024年最全负载均衡技术对比:F5与Nginx_f5和nginx区别(1),2024年最新2024软件测试最新大厂面试真题

冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击、SYN Flood保护、防火墙一包过滤、包消毒。智能网络、地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓。加上多样化的负载均衡策略,智能化的流量管理,可以达到最佳的负载均衡需求。* F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。

2401_84563875的博客 1202

2024年最全负载均衡常见架构_yinwenjie,2024年最新阿里开发7年大牛

这样的例子有很多,例如YouTube发现市面上的商用CDN网络无法满足他们对视频加速的需求,于是YouTube的工程师们自己动手写了一专门针对自己业务的CDN加速技术;Mysql从5.1.X版本开始,就已经支持单数据节点的“表分区”功能了,但这个支持仅限于每个节点的配置,提高单个Mysql上的读写性能(还要配合底层的块存储选型,例如DAS)。但实际上负载均衡技术在信息处理领域内,不是只有这样的请求响应层才使用,在其它的技术领域也大量使用,这个小节,我们就来梳理这些技术,作为一个扩展话题。

2401_84563734的博客 1120

一文带你了解 ------ 那些做网络与基础架构安全产品的企业_哪些公司会用负载均衡

为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓👉优快云大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享**(安全链接,放心点击)**👈​。

2301_82243523的博客 830

实现Nginx基于TCP层的负载均衡-尚文网络xUP楠哥

#实战描述: 现如今有很多的大企业、互联网大厂例如百度、京东、新浪、网易、腾讯、淘宝包括UPWEN公司-等,都在使用Nginx作为用于发布自己门户网站的webserver。Nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布,为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日,2011年成立同名公司以提供支持。2019年3月11日,Nginx公司被F5 Networks以6.

weixin_42081313的博客 359

运行标准:企业落地资源分配、传输策略与负载均衡规范

本文围绕运行标准,从资源分配机制、传输策略标准化、负载均衡调度规则三个维度,为企业IT部门提供落地路径,通过标准化规范提升ICT基础设施管理确定性,降低故障率,助力构建可持续运维体系。

HXKF123的博客 528

2024年Python最全网络爬虫之Splash负载均衡配置_nginx splash

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84563220的博客 897

2024年最新几种负载均衡技术的实现_负载均衡技术五(1),阿里程序员的软件测试之路

使用http302响应重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。

2401_84715926的博客 862

负载均衡原理及应用

Linux基础 Shell脚本 Linux命令 运维自动化 Docker容器 Kubernetes Linux安全 Nginx配置 Apache部署 CI/CD流程 Ansible自动化 Linux网络配置 RAID配置 负载均衡 MySQL优化 服务器监控 系统性能调优 硬件故障诊断 虚拟化技术 Linux备份策略 Git版本控制 Jenkins自动化 Linux磁盘管理 网络存储 云服务部署 网络安全 服务器迁移 Python运维脚本 系统日志分析 Linux软件包管理

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 2071
上一篇: 技术交流:Python编写tb抢购脚本,文末源码
下一篇: 技术交流:分布式缓存的原理及应用
Frank.ZH.Cai
博客等级 码龄7年 2255粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值