LVS技術淺析-配置管理3

上一篇《配置管理2》,我們介紹瞭如何利用keepalived來部署LVS;
本文將介紹一些LVS配置的注意點,以及 性能相關的一些配置;
1. SH調度算法-儘量不要採用
 
  一些業務爲了支持會話保持,選擇SH調度算法,以實現同一源ip的請求調度到同一臺RS上;但 SH算法本省沒有實現一致性hash,一旦一臺RSdown,當前所有連接都會斷掉;如果配置了inhibit_on_failure,那就更悲劇了,調度到該RS上的流量會一直損失;
   實際線上使用時,如需 會話保持,建議配置persistence_timeout參數,保證一段時間同一源ip的請求到同一RS上;
2. WLC調度算法-注意RSdonw->up的影響
 WLC算法下,RS一旦出現down後up的情況,瞬間所有的新建連接都會調度到該RS上,可能會超過該RS處理請求的上限;
3. 關閉網卡LRO/GRO功能
  現在大多數網卡都具有LRO/GRO功能,即 網卡收包時將同一流的小包合併成大包(tcpdump抓包可以看到>MTU 1500bytes的數據包)交給內核協議棧;LVS內核模塊在處理>MTU的數據包時,會丟棄;
  因此,如果我們用LVS來傳輸大文件,很容易出現丟包,傳輸速度慢;
  解決方法,關閉LRO/GRO功能,命令:
     ethtool -k eth0 查看LRO/GRO當前是否打開
      ethtool -Keth0 lro off 關閉GRO
      ethtool -Keth0 gro off 關閉GRO
4. 手動綁定網卡中斷
 當前大多數網卡都是支持硬件多隊列的,爲了充分發揮多核的性能,需要手動將網卡中斷(流量)分配到所有CPU核上去處理;
  查看網卡中斷:
       cat /proc/interrupts
         54: 188324418      0    IR-PCI-MSI-edge     eth0-TxRx-0
            55: 167573416      0    IR-PCI-MSI-edge     eth0-TxRx-1
  綁定網卡中斷到CPU核:
     echo  01> /proc/irq/54/smp_affinity
         echo    02> /proc/irq
/55/smp_affinity
   關閉系統自動中斷平衡:
     service irqbalance stop
 如果網卡硬件不支持多隊列,那就採用google提供的軟多隊列RPS;
  配置方法同硬中斷綁定;
  查看軟隊列:
       cat 
/sys/class/net/eth0/queues/rx-0/rps_cpus
    cat /sys/class/net/eth0/queues/rx-1/rps_cpus
  綁定軟隊列到CPU核:
    echo 01 >/sys/class/net/eth0/queues/rx-0/rps_cpus
       echo  02 >/sys/class/net/eth0/queues/rx-1/
rps_cpus
5.修改LVS內核配置,提高性能
   LVS內核默認配置連接hash表大小爲4K,16把hash桶鎖;如果應用的併發連接數>4w,則上述配置會無法滿足性能需求;
  調大連接hash表:
      在內核源碼根目錄下,修改文件 vim .config - CONFIG_IP_VS_TAB_BITS=20;
  增大hash桶鎖個數:
      ipvs源碼目錄下,修改文件vim ip_vs_conn.c - #defineCT_LOCKARRAY_BITS  8;
6. BIOS中關閉超線程
   關閉超線程 也是基於性能考慮;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章