软负载之理解

软负载

域名管理策略机制
域名管理:软负载名字服务发现服务
1. 域名映射机器,全量心跳检测->分量心跳检测(分而治之思想)
2. 同机房优先策略,同网段优先、同单元优先等(服务提供方与服务调用方之间的“就近原则”)。
3. 流量分配管控承载机制:
	3.1 单打独斗不行,则找帮手。全局能力允许,则保障一致性。
	     引入“跨机房保护策略”,用于决定要不要跨机房。
	     跨机房保护策略:设定单个机房服务器可用比例阈值,低于阈值(说明单个机房的可用机器已不足以独立支撑),当前机房服务器不可用台数达到上限,进而引入其他机房服务器分摊流量。
	3.2 能力小于工作,则量力而行。全局能力不够,则保障可用性。
	     引入“可用性保障策略”,用于决定要不要强一致。
	     可用性保障策略:设定全局机房服务器可用比例阈值,低于阈值(说明健康服务器个数已经不足以支撑流量),全局机房服务器不可用达到上限,进而将流量分摊到所有服务器上(包括不健康服务器),保障系统可用性,代价是返回“不可用”结果。

4. 切流:机器权重设置。

5. 容灾:备用机房指定。

6. 域名信息查询:请求量、变更记录。

P2P直连

NAT由来
  • IPv4使用32bits整数表达一个地址,地址最大范围就是232 约为43亿。

  • 为了路由和管理方便,43亿的地址空间被按照不同前缀长度划分为A,B,C,D类地址网络和保留地址。其中,A类网络地址127段,每段包括主机地址约1678万个。B类网络地址16384段,每段包括65536个主机地址。

  • 滥用和互联网迅猛增长导致IPv4地址不够用。

  • 网络地址转换——NAT 的出现解决了部分问题!

    是一种把内部私有网络地址(IP地址)转换成公网网络IP地址的技术。
    比如我们电脑里面网卡地址是192.168.1.100,但是我们再百度搜索“IP”却显示220.112.224.53,这就是NAT的功能。
    NAT主要是部署在路由器或者交换机上。
    
P2P对等
  • 端对端的资源共享,每一端即可是服务端,也可以是客户端。既可以是资源的提供者,也可以是资源的共享者。
  • 优势:实时性最高,流量少,更加安全。在视频直播,在线教育,视频安防行业用的比较多。
  • 劣势:一旦进行p2p传输之后,用户之间的内容将无法监管,浪费用户带宽,频繁进行读写磁盘。

LVS网关直连

  • Linux虚拟服务器:开源负载均衡项目

  • LVS体系架构:

    负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。
    用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
    
  • 三种模式:

    1. 基于NAT的LVS模式负载均衡:网络地址转换技术(转发时候修改DIP:VIP->RIP,回复时候修改DIP:RIP->VIP)
    		web请求->VIP(目标地址与目标端口转换,透明的。Hash表,存储连接信息。)->Real Server
    2. 基于TUN的LVS负载均衡:TUN不修改请求报文的ip首部,而是通过在原有的ip首部(cip<–>vip)之外,再封装一个ip首部(dip<–>rip)
    		IP隧道(IP tunning)是一种数据包封装技术,它可以将原始数据包封装并添加新的包头(内容包括新的源地址及端口、目标地址及端口)。
    		请求包 一般 远远小于 响应包。为了避免VIP成为瓶颈,通过将客户端发往调度器的原始数据包封装,并在其基础上添加新的数据包头(修改目标地址为调度器选择出来的真实服务器的IP地址及对应端口),LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。
    		效果是集群系统的最大吞吐量可以提高10倍。
    		步骤:
    			 2.1 客户请求数据包,目标地址VIP发送到LB上。
    			 2.2 LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。
    			 2.3 RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。
    			 2.4 响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址(RS节点服务器需要在本地回环接口配置VIP)
    			 备注:IP tunning实际上就是将客户请求包再包一层,解析后保持源IP地址还是VIP地址,由RIP直接发送给客户。
    3. 基于DR(直接路由模式)的LVS负载均衡:DR模型通过修改请求报文的MAC地址,将请求发送到real server上,real server在完成请求后直接将响应回应给用户,减少了IP隧道的成本,也不必要求必须支持隧道协议,但是要求调度器和real server都有一块网卡在同一物理网络中。同样DR模型也可以极大地 提高集群系统的伸缩性。
    		在LVS(TUN)模式下,由于需要在LVS调度器与真实服务器之间创建隧道连接,这同样会增加服务器的负担。(避免隧道创建成本)
    		该模式中LVS依然仅承担数据的入站请求以及根据算法选出合理的真实服务器,最终由后端真实服务器负责将响应数据包发送返回给客户端。
    		用直接路由技术实现虚拟服务器,调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器,要求Director Server与Real Server都有一块网卡连在同一物理网段上。
    		步骤:
    				3.1 接收client的请求,根据设定的负载均衡算法选取一台realserver的ip。
    				3.2 以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS。DR将请求转发给RS是在数据链路层来实现的,所以DR必须和RS在同一网段里面。
    				3.3 RealServer要在lo接口上配置VIP,因为要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包,所以在lo上配置vip能够完成接收包并将结果返回client。
    				3.4 RealServer在局域网中收到包,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。client与VS同一网段,那么client将收到这个回复报文。如果跨了网段,那么报文通过经由网关路由器从Internet返回给client。
    				备注:通过将数据帧的MAC地址修改为选出的真实服务器的MAC地址来代替IP tunning。loopback(lo),一般用于管理员服务器登陆。
    

Reference

  • https://zhuanlan.zhihu.com/p/299524798(p2p之网络穿透NAT,NAT、穿透的原理)
  • http://www.linuxvirtualserver.org/(LVS官方站点)
  • https://blog.csdn.net/weixin_40470303/article/details/80541639(LVS负载均衡(LVS简介、三种工作模式、十种调度算法))
  • https://www.cnblogs.com/yaboya/p/9109462.html(TUN模式)
  • https://blog.51cto.com/lisoy79/1752801(LVS-DR实现基于LAMP的负载均衡)
  • https://wenku.baidu.com/view/c6740868af1ffc4ffe47ac4a.html(回环接口配置)
  • https://blog.51cto.com/u_11010461/2118570(理解LVS工作原理)
上一篇:小知识系列:查询数据库数据的元信息


下一篇:[Boost]boost的时间和日期处理-(2)时间的操作