负载均衡是什么就不具体介绍了,四层负载均衡的工作模式包括:数据链路层负载均衡、网络层负载均衡、应用层负载均衡
1.数据链路层负载均衡
数据链路层传输的是以太网帧,负载均衡器修改帧的MAC目标地址,转发到对应服务器的网卡上。流程如下:
2.网络层负载均衡
一个 IP 协议数据包由 Headers 和 Payload 两部分组成,在 IP 分组数据包的 Headers 带有源和目标的 IP 地址即可。源和目标 IP 地址代表了"数据是从分组交换网络中的哪台机器发送到哪台机器的",所以可以通过改变这里面的 IP 地址,来实现数据包的转发,流程如下:
3.应用层负载均衡策略
3.1轮循均衡(Round Robin)
每一次来自网络的请求,会轮流分配给内部中的服务器,从 1 到 N 然后重新开始。
这种均衡算法适用于服务器组中的所有服务器都有相同的软硬件配置,并且平均服务请求相对均衡的情况。
3.2权重轮循均衡 Weighted Round Robin
根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。
比如,服务器 A 的权值被设计成 1,B 的权值是 3,C 的权值是 6,则服务器 A、B、C 将分别接收到 10%、30%、60%的服务请求。这种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。
3.3随机均衡 Random
即把来自客户端的请求随机分配给内部中的多个服务器。这种均衡算法在数据足够大的场景下,能达到相对均衡的分布。
3.4权重随机均衡 Weighted Random
这种均衡算法类似于权重轮循算法,不过在处理请求分担的时候,它是个随机选择的过程
3.5一致性哈希均衡Consistency Hash
根据请求中的某些数据(可以是 MAC、IP 地址,也可以是更上层协议中的某些参数信息)作为特征值,来计算需要落在哪些节点上,算法一般会保证同一个特征值,每次都一定落在相同的服务器上。
这里一致性的意思就是,保证当服务集群的某个真实服务器出现故障的时候,只影响该服务器的哈希,而不会导致整个服务集群的哈希键值重新分布。
3.6 响应速度均衡 Response Time
即负载均衡设备对内部各服务器发出一个探测请求(如 Ping),然后根据内部中各服务器对探测请求的最快响应时间,来决定哪一台服务器来响应客户端的服务请求。
这种均衡算法能比较好地反映服务器的当前运行状态,但要注意,这里的最快响应时间,仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
3.7 最少连接数均衡 Least Connection
客户端的每一次请求服务,在服务器停留的时间可能会有比较大的差异。那么随着工作时间加长,如果采用简单的轮循或者随机均衡算法,每一台服务器上的连接进程可能会产生极大的不平衡,并没有达到真正的负载均衡。
所以,最少连接数均衡算法就会对内部中需要负载的每一台服务器,都有一个数据记录,也就是记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,就把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载也能更加均衡。这种均衡算法适合长时间处理的请求服务,比如 FTP 传输。