负载均衡

  1. 二层负载均衡(mac) 根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应.

  2. 三层负载均衡(ip) 一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应. (即一个ip对一个ip的转发, 端口全放开)

  3. 四层负载均衡(tcp) 在三次负载均衡的基础上,即从第四层”传输层”开始, 使用”ip+port”接收请求,再转发到对应的机器。

    通过三层的IP地址,然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理

  4. 七层负载均衡(http) 从第七层”应用层”开始, 考虑应用层的特征,根据虚拟的 url 、IP、cookie,主机名接收请求,再转向相应的处理服务器。

四层与七层的区别

四层负载均衡,也就是主要通过报文中的目标地址和端口,并对报文中目标IP地址进行修改,决定最终选择的内部服务器。TCP的连接建立是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。

七层负载均衡,也称为“内容交换”。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接,才可能接受到客户端发送的真正应用层内容,类似于一个代理服务器。再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器

优点

  1. 七层应用负载的好处,是使得整个网络更智能化。
  2. 防止SYN Flood攻击(攻击者只能攻击到负载均衡机器),SQL 注入

策略

轮询法

将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

加权轮询法

不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载

ip hash

根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

一致性hash

  1. 一致性Hash算法是对2^32取模,将整个哈希值空间组织成一个虚拟的圆环
  2. 将服务器的IP或主机名作为关键字进行哈希,确定其在哈希环上的位置
  3. 将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针走,选择第一台遇到的服务器

优点

不管是宕机还是新增,影响的只有前面一台服务器。对于节点的增减都只需重定位环空间中的一小部分数据。

数据倾斜

在服务器IP或主机名的后面增加编号,若干个虚拟节点选择某个服务器。