zoukankan      html  css  js  c++  java
  • 软负载方案整理配置手册

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

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

    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更方便。

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

  • 相关阅读:
    Map1: iOS开发中定位和地图介绍
    GCD11: 创建计时器
    GCD10: 用GCD构建自己的分派队列
    GCD9: 用GCD将任务分组
    GCD8: 在GCD上让一个任务最多执行一次
    GCD7: 利用GCD延时后执行任务
    GCD6: 在GCD上异步执行非UI相关任务
    GCD5: 用GCD同步执行非UI相关的任务
    回文数
    字符串置换
  • 原文地址:https://www.cnblogs.com/lulu/p/3204333.html
Copyright © 2011-2022 走看看