概要:对基于LVS+Nginx的负载均衡进行流量限速,保证对每个客户提供承诺的带宽值。
1 简介
负载均衡的基本功能为根据配置规则进行流量分发,提高整个系统并发度和可靠性。负载均衡整机系统规格是确定的,特别是像带宽这种受限于硬件网卡的规格,当多个客户的负载均衡器在同一负载均衡设备上面运行时会出现资源争抢的问题。为了保证对每个客户提供承诺的带宽值,需要对每个负载均衡器进行流量限速处理。
2 LVS+Nginx负载均衡流量模型
本文中所述负载均衡使用LVS+Nginx实现,LVS完成四层流量转发,Nginx完成七层流量分发。LVS和Nginx分别在各自网络命名空间下运行,相互之间可以通过各自网络命名空间下macvlan虚拟网卡通信。为了提高负载均衡转发能力和可靠性,每个LVS配置两个Nginx后端,同时LVS自身采用主备方式工作。
业务流程图
LVS采用VS/DR(Virtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。具体的报文转发方法为VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户。这种方式是三种负载调度机制中性能最高的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
流量模型图
3 Linux TC说明
对LVS+Nginx负载均衡进行流量限速处理有两种方法:第一种是修改LVS内核模块,增加流量限速处理功能;第二种是借助LVS和Nginx所在网络命名空间下macvlan虚拟网卡,使用Linux TC命令进行相关限速配置来实现流量限速功能。鉴于第一种方法代码实现难度较大而且不利于后期维护,本文采用第二