【3.工程开发】-四层负载均衡LVS

hackerdotcn 2019-11-19

高可用的工程系统一定要做流量的负载均衡,软件可做负载均衡位置:DNS,代码中,应用层。DNS受缓存影响;代码中二次转发;基于应用层负载均衡调度的多服务器解决方法也存在一些问题。第一,系统处理开销特别大,致使系统的伸缩性有限。当请求到达负载均衡调度器至处理结束时,调度器需要进行四次从核心到用户空间或从用户空间到核心空间的上下文切换和内存复制;需要进行二次TCP连接,一次是 从用户到调度器,另一次是从调度器到真实服务器;需要对请求进行分析和重写。这些处理都需要不小的CPU、内存和网络等资源开销,且处理时间长。所构成系 统的性能不能接近线性增加的,一般服务器组增至3或4台时,调度器本身可能会成为新的瓶颈。所以,这种基于应用层负载均衡调度的方法的伸缩性极其有限。第 二,基于应用层的负载均衡调度器对于不同的应用,需要写不同的调度器。nginx主要是基于HTTP协议,若对于FTP、Mail、POP3等应用,都需要重写调度器。当然四层也无法做业务相关的负载均衡。
IP层

LVS

针对高可伸缩、高可用网络服务的需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。
官方:http://www.linuxvirtualserver...
逻辑架构

【3.工程开发】-四层负载均衡LVS

三种IP转发实现方式

1.NAT 换目标地址,回来再换一次

【3.工程开发】-四层负载均衡LVS

2.IP管道。在VIP前加真实IP。回去直接去掉真实IP

【3.工程开发】-四层负载均衡LVS

3.直接路由。加MAC地址找到对应机器。回去直接去掉MAC地址(局域网中)

【3.工程开发】-四层负载均衡LVS
4.fullnat
全部转为内网(内网负载均衡只能是fullnat,https://ieevee.com/tech/2015/...
【3.工程开发】-四层负载均衡LVS
cip 客户端地址 rip 真实服务器地址 lip本地地址 SNAT来源地址转换

部署

【3.工程开发】-四层负载均衡LVS
vip这个是提前申请好放到池子里面的,业务现申请直接使用某个vip,外网lvs一般一个集群是250个vip,内网lvs是520个
每台LVS机器都有所有的VIP配置(通过OSPF一个VIP可以有8台副本),把所有VIP的IP都配在机器上。采用了 LVS ospf 方案,利用开源的软路由软件 quagga(linux设置主机当路由使用),对 IDC 接入交换机宣告 VIP 的主机路由信息,通过 OSPF 等价路由的特性可以提供最多八台 LVS All-active 的集群服务

负载均衡算法

轮叫调度(Round-Robin Scheduling)
加权轮叫调度(Weighted Round-Robin Scheduling)
最小连接调度(Least-Connection Scheduling)记录服务器连接数。会有一段时长的TCP_WAIT
加权最小连接调度(Weighted Least-Connection Scheduling)
基于局部性的最少链接(Locality-Based Least Connections Scheduling)请求IP最近使用服务器+服务器未超载,用于cache
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling) LBLC+LCS.性能和cache的折中
目标地址散列调度(Destination Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)

DGW

dpdk+fullnat的LVS
dpdk:加速数据包处理软件,取代传统的Linux内核态驱动 (https://blog.csdn.net/zhaoxin...

相关推荐