软负载
域名管理策略机制
域名管理:软负载名字服务发现服务
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工作原理)