LVS的性能提升和优化


问题描述

LVS(Linux Virtual Server)即Linux虚拟服务器。是著名的开源负载均衡软件,目前LVS已经被集成到Linux内核模块中,也是CDN服务节点的用于节点内的主机负载均衡的方案,在使用过程中发现存在性能瓶颈。

以CDN网络内的典型问题为案例,CDN经过大流量运行过程中发现,每天到了晚高峰节点就会出现大量的服务器丢包。

在排查过程中发现,在LVS所在的服务器多CPU核心的主机会存在某一个CPU的核心利用率为100%的问题,同时网卡出现大量的服务器丢包

经过后续分析占用CPU的进程是Linux的内核的软中断,该进程提供了网卡驱动程序的处理和运算,当网卡上出现大量的LVS的负载均衡的转发的行为时,驱动程序只会调用一个内核,这导致虽然主机有很多CPU的计算资源,但是只能使用其中的一个内核。当计算能力不足的时候,网卡驱动会对网络包进行丢弃,导致丢包问题的发生。

优化方案

在对Linux和LVS进行优化,通过多种手段提高LVS的性能和突破瓶颈,修复网络丢包等引发的关联问题。

  • CPU核心压力分担
    通过调整驱动程序的CPU绑定策略调整,网卡驱动程序的软中断的分担,将至少16个CPU核心投入到网卡驱动程序的运算过程中。
    具体操作:
    在LVS主机上执行优化程序:

      chkconfig irqbalance off  
      service irqbalance stop
      wget http://xxxxxxxxxxx/vod/set_irq_affinity.sh
      sh set_irq_affinity.sh 0-7,16-23 eno1
      sh set_irq_affinity.sh 8-15,24-31 eno2
  • 负载均衡算法优化
    通过负载均衡的session保持时间控制,减少由于负载转发过程中由于session保持而带来的额外运算;
    将负载均衡算法调整到计算消耗更小的rr(轮询)算法
  • 多台LVS负载均衡
    LVS和Keepalive是一套完整的负载均衡的解决方案,LVS软件提供了负载均衡的服务,Keepalive提供了高可用的服务,于是就构建了高可用的负载均衡集群,常规情况下lvs集群一般由主-备两台LVS构成,Keepalived的工作原理的核心协议是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器,VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器,Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。

在CDN的服务中,LVS充当这用户服务的入口,所有的用户请求都会首先到达LVS服务,实际上由于CDN节点的规模越来越大,单一的CDN节点承载的业务请求书越来越高,已经有部分节点出现了单台LVS的计算瓶颈。

通过方法测试和验证,总结了下述解决方案:在CDN上为每个节点配置多个VIP的方式,为LVS引入多个VRRP组,每个VRRP组都绑定节点内的一部分VIP,在集群中每个VRRP组的Master设备都指定到不同的LVS上,于是在LVS的高可用集群中,常规运行态会呈现不同的VIP绑定到不同的LVS主机上,当出现某一个LVS故障的时候,将MASTER主机指定到故障的LVS的VRRP组会自动将VIP根据备份节点的权重切换到其余活着的LVS设备上,保证服务的平滑切换。
在多LVS集群中有两种方案,两种方案都可以平滑的扩充以LVS为核心的的负载均衡集群的性能,理论上在VIP充足的情况下没有扩充上限。

LVS多分组方案

该方案主要是在LVS服务器的数目是偶数个,优点是便于管理和配置:

LVS单一集群方案:

该方案对LVS的数目没有明显的要求,缺点是配置繁琐:

在具备了多个VIP的情况下,通过调度将域名解析到不同的LVS主机的VIP上,减少单个LVS主机的用户请求压力,从观察上看单服务器的压力是:总服务压力/LVS数目,可以明显减少LVS的性能压力,解决LVS的性能问题。

方案效果

  • 改进效果
    调整之后网卡丢包的问题明显缓解。

  • 弹性扩充
    当一个节点服务压力使用两台LVS都无法处理的时候,可以通过扩充LVS的数目,为每个LVS提供一组VIP,并将这组VIP纳入调度,就可以将所有的LVS的运算能力加入到调度集群,理论上可以无限的提高LVS集群的处理能力。
  • 配置灵活
    根据LVS主机的CPU的核心和运算能力可以动态的调整加入软中断的CPU数目

声明:leopard的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - LVS的性能提升和优化


清风不问烟雨。醉酒只候深情