【网络干货】网络安全之负载均衡技术详解
一、负载均衡基本概念
负载均衡成员
负载均衡成员是指负载均衡设方案中向用户提供真实服务的实体,如服务器、防火墙或某一条具体的网络链路对应的网关设备。负载均衡设备收到用户的数据报文时,并不是直接将报文转发给目的地址,而是对流量进行代理、分类和策略控制,终根据均衡算法的决策结果,选择满足条件的负载均衡成员处理或转发用户的数据报文。
对负载均衡成员可设置如下属性:
负载均衡成员的信息描述
负载均衡成员的 IP 地址
负载均衡成员大可接纳的连接数
负载均衡成员每秒允许接纳的连接速率限制
负载均衡成员入方向和出方向带宽和大可提供服务的带宽百分比
负载均衡成员的权重
负载均衡成员的优先级
负载均衡组
负载均衡组是指向用户提供相同服务的网络设备或链路的集合。负载均衡设备对业务流量进行分类后,对于符合条件的用户业务流量,选择对应的负载均衡组提供服务。
对负载均衡组可设置如下的属性:
1、负载均衡组的信息描述。
2、负载均衡组下绑定了健康性检测探测器和探测模式,设备支持 fail-on-one 和 fail-on-all 两种探测模式:fail-on-one 模式时,当负载均衡组下绑定的某一个探测器探测到此负载均衡成员处于 Down 状态,则认为该成员 Down。fail-on-all 模式时,当负载均衡组下绑定的所有探测器均探测到此负载均衡成员处于 Down 状态,则认为该成员 Down。
3、负载均衡组成员,在这里称其为负载均衡成员实例。
一个负载均衡成员可以加入到一个负载均衡组也可加入到多个负载均衡组。
可指定负载均衡成员实例的连接数限制、带宽限制、权重、优先级。
可指定负载均衡成员实例在负载均衡组中使用的四层端口号。
可指定负载均衡成员实例的备份成员。
可指定负载均衡成员实例绑定的 NAT 地址池。用户报文转发时,系统使用指定的 NAT 地址池对报文进行源地址 NAT 转换。
4、指定如下两种负载均衡组成员失效时的处理方式:
清除对应成员的所有连接信息。
将失效成员服务的用户流切换给备用成员处理。
5、指定如下三种负载均衡组业务流量转发方式:
选择负载均衡成员后,不更改用户报文的源 IP 地址和目的 IP 地址,仅修改用户报文的目的 MAC 地址为负载均衡成员的 MAC 地址。
选择负载均衡成员后,更改用户报文的目的 IP 地址为负载均衡成员的 IP 地址,从服务器返回给用户的流量在负载均衡设备上将服务器 IP 地址还原为 VIP。
选择负载均衡成员后,既不修改用户报文的目的 IP 地址,也不修改用户报文的目的 MAC 地址,而是将报文的下一跳设置为选中的负载均衡成员。该转发方式适用于出口链路负载分担的流量。
6、指定主备负载均衡组切换的控制参数。
当主负载均衡组中活跃负载均衡成员的百分比小于等于 percent1 时,系统自动切换到备负载均衡组提供服务。
当主负载均衡组中活跃负载均衡成员的百分比大于 percent2 时,恢复使用主负载均衡组提供服务。
负载均衡算法
负载均衡算法指负载均衡设备在决策选择哪个负载均衡成员以好地为用户提供服务时所采用的方法。设备支持如下几种负载均衡算法:
1、加权轮询算法
加权轮询算法中,设备按照负载均衡成员的优先级和权重来进行均衡决策。设备先在优先级高的负载均衡成员间按照权重依次选择成员提供服务(权重越大,被选择的几率越大,分配的连接越多)。选择某成员后,再根据带宽限制、连接数限制和连接速率限制判断该成员是否可用。如果高优先级负载均衡成员中没有可用的资源,再在低优先级负载均衡成员中进行加权轮询选择。
该算法可以解决服务器间性能或链路间带宽不一的问题,适用于服务器集群中各服务器性能或链路集群中各链路带宽存在差异的场景。
2、小连接数算法
设备实际使用的是加权小连接数算法。
该算法中,设备按照负载均衡成员的优先级、权重、当前活动连接数来进行均衡决策。系统先在优先级高的负载均衡成员间选择成员提供服务,选择时,总是选择加权活动连接数(当前活动连接数/权重)小的成员。选择某成员后,再根据带宽限制、连接数限制和连接速率限制判断该成员是否可用。如果高优先级负载均衡成员中没有可用的资源,再在低优先级负载均衡成员中进行加权小连接数选择。
该算法能把负载差异较大(连接保持时长差异较大)的请求平滑分发到各个服务器或链路上,适用于服务器集群中各服务器性能或链路群中各链路带宽存在差异,不同用户发起的连接保存时长差异较大的场景。
3、基于 IP 地址的 Hash 算法
基于 IP 地址的 Hash 算法中,设备使用用户报文中源 IP 地址、目的 IP 地址或者源和目的 IP 地址进行 Hash,依据 Hash 值进行均衡决策。选择某成员后,再根据带宽限制、连接数限制和连接速率限制判断该成员是否可用。如果不可用,依据 Hash 值选择下一个有效成员。
该算法可将以下请求映射到一台服务器或链路上。
同一个源 IP 地址
同一个目的 IP 地址
同一个源 IP 地址和目的 IP 地址
源 IP 地址在同一网段
目的 IP 地址在同一网段
源 IP 地址和目的 IP 在同一网段
该算法适用于需要保证来自同一个用户的请求分发到同一个服务器或链路的场景,也常用于防火墙负载均衡中。
4、基于 HTTP URL 的 Hash 算法
基于 HTTP URL 的 Hash 算法中,设备使用用户 HTTP 请求报文中的 URL 进行 Hash,依据 Hash 值进行均衡决策。选择某成员后,再根据带宽限制、连接数限制和连接速率限制判断该成员是否可用。如果不可用,依据 Hash 值选择下一个有效成员。
二、流量分类和管理
负载均衡设备根据业务流量的 L4~L7 特征,对网络流量进行分类和管理,终将业务流量转发给合适的负载均衡成员进行处理或转发,流量分类和流量管理是负载均衡的核心内容。
设备负载均衡支持如下流量的分类和管理:
L4 流量
根据报文的 IP 地址、协议号、端口号等三、四层信息对流量进行分类,对符合条件的 L4 报文进行转发、丢弃、源地址 NAT 转换、负载均衡。L4 负载均衡不关心 TCP 或 UDP 报文的净荷信息。
HTTP 流量
HTTP 流量分类时,负载均衡需启用 TCP/HTTP 代理功能。
流量分类和管理
如图所示,负载均衡设备首先与用户建立 TCP 连接,解析 TCP 数据报文中的净荷。如果 TCP 报文的净荷是 HTTP 报文,会对 HTTP 报文进行解析。负载均衡设备根据管理员预配置的 HTTP 分类条件,对符合分类条件的 HTTP 报文使用指定的负载均衡组进行均衡决策,负载均衡设备再与选中的服务器建立 TCP 连接,代理用户的 HTTP 报文。
说明:
设备支持 TCP 连接的老化设置, HTTP URL 规则的匹配、 method 的匹配和 HTTP 的每包重均衡(即对每个HTTP 请求重新做负载均衡)。
三、健康性检测
如图所示,健康性检测是指负载均衡设备定时对真实服务器或链路的服务状态进行探测,收集服务器和链路的健康状况及运行信息,及时隔离工作异常的服务器或链路,终选择高效能的成员和链路完成业务处理和转发。
针对不同的业务,可以配置不同的探测器来检测服务器的健康状态。目前设备支持 ICMP、 TCP、 UDP、 HTTP四种探测器。
针对每种探测器,设备上可设置探测器正常情况下的探测间隔时间、探测器失效情况下的探测间隔时间、探测器探测到负载均衡成员状态恢复的重试次数、探测器确认失效的探测重试次数、探测器的应答超时时间。
针对 TCP/UDP 探测器,系统可设置探测器发送的探测报文的内容和期望结果。
针对 HTTP 探测器,系统可选择设置 HTTP 的 GET/Head 请求方法、 HTTP URL、用户名、密码和期望返回的状态码等属性来实施健康性检查。
四、会话持续性
航空订票、电子商务等系统通常要求用户的会话始终由次提供服务的负载均衡成员完成,这时就涉及到会话持续性。
负载均衡设备启用持续性功能后,可自动生成用户业务报文和负载均衡成员的对应关系表,从而将用户一段时间内的连接请求始终交给同一个负载均衡成员处理或同一条链路转发,满足业务系统的需求。对应关系表的保持时长由管理员根据业务需要进行设置,管理员需根据业务特征设置合理的表项老化时长,防止不活跃的连接长时间占用系统资源。
管理员也可以手工静态配置业务流量和负载均衡成员的对应关系,固定指定某些条件的业务报文始终由一台负载均衡成员提供服务。
说明:
目前设备支持根据业务报文的源 IP 地址、目的 IP 地址实施会话持续性功能。
相关文章