软负载方案整理配置手册

因为需要,尝试了预研下面常用几个软负载,大概整理了如下:

(自己只是在虚机部署,大概跑跑,没做详细性能测试,性能数值为网上看到的文章归纳,仅供参考):

1.   LVS 性能最强

1. LVS :Linux Virtual Server(VS),请求对于RealServer(RS)都是透明的(不修改Src),使用内核转发,相比应用实现性能要高很多。

分为3种模式:

l  DR:性能最好

在VS 和RS 使用相同的VIP,RS上抑制ARP。请求通过VS 分发,应答绕过直接回复。

优点:性能最高、流量小

缺点:机器都需要在同一个Vlan下,Real Server 之间无法通过VIP通信。需要抑制VIP ARP 有风险。

 

l  IP Tunnel 性能适中

使用IPIP封包,解决跨Vlan问题,相比DR 就多了一层IP封装,也是只处理请求。

优点:跨Vlan

缺点:虽然应用最为广泛,但windows 不支持IPIP。

 

l  NAT

与前两种相比,不需要绑定VIP,但也要修改路由,RealServer 所有流量都需要经过,需要处理很多无用流量,一般实用性很差。

优点:不需要要绑定VIP、跨VLAN

             支持RS 通过VIP访问RS本身,需要对RS做抑制路由操作,所有流量直接发给网关。

缺点:对于请求为SNAT,应答为DNAT。为实现DNAT,需要将RS 的默认网关指向VS

             VS 被当成网关处理,RealServer所有的流量都将发给VS,VS的带宽压力会很大。

 

配置工具:如果使用ReadHat版本,可以使用Piranha 提供的WEB UI工具配置,配置为需要手动同步一下主板配置。

    如果需要部署多个实例,而且经常改动,Piranha 将提供很友好的配置环境。

 

2. HaProxy 性能高,处理高并发、高连接

优点:

l  性能高,20w连接下,处理10w/s请求

 (单进程处理性能1w/s样子,为更好利用多核,多进程模式提升空间很少,需要开启多个实例,这样一来前端必须上LVS负载多个实例端口)

l  7层、4层都行

l  不限于VLan ,只要网络策略通即可

l  可配性高

l  监控完善

 注意点:

l Src IP被修改,业务中publicIP应该从 x-forward-for中获取(Haproxy也支持透明代理,就像LVS的NAT模式,存在问题)

l 流量double,千M网卡最多也只能支持500M流量

 连接数超过65535时,需要考虑绑定多个IP

Tcp 转发性能要比nginx要好。

HaProxy 是默认单线程、也是最高效方式;也可以支持多线程(进程),但监控会随机请求到的业务、部分功能无法正常使用。

 

3. Nginx 专注于7层高并发,但不善于处理1w+连接数

要支持4层需要另外的patch,而且高连接数时性能无法和haproxy相比。

默认1个master+ 多个(核心)Worker,可充分利用多核资源。

Master和worker之间通过进程通信实现,有点像IIS5,相比II6 性能要差些。

 

**不管HaProxy还是Nginx 都存在一个问题,就是只有一个线程在做Receive,也就是无法均衡软中断。

 对于主要的四层负载,用户态执行时间很短,性能瓶颈在于主要软中断的处理、多个work其实也无济于事;

 当然也可以使用redis那样,开启多实例方式。

 

5. Windows Server 内置NBL 负载均衡功能

原理和LVS的DR相似,但是相比更加暴力,请求使用广播方式,同一个交换机下RS都将受到请求,RS通过一致性算法

确认自己改处理请求还是丢弃请求。

本身性能没有参考数据,配置繁琐,再者广播对交换机、RS都带来不少额外压力。相比使用LVS DR更方便。

 

详细文档及工具下载:配置手册  脚本工具

你可能感兴趣的:(配置)