tech_memo / linux / LVS


tech_memo/linux

モニター

接続コネクション情報

[root@testserver07 ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 11:26  ESTABLISHED 192.168.0.2:50205  192.168.22.157:8180 192.168.22.111:8180 
TCP 11:27  ESTABLISHED 192.168.0.2:50206  192.168.22.157:8180 192.168.22.111:8180
TCP 11:26  ESTABLISHED 192.168.0.2:50199  192.168.22.157:8180 192.168.22.112:8180
TCP 11:27  ESTABLISHED 192.168.0.2:50201  192.168.22.157:8180 192.168.22.111:8180
TCP 11:26  ESTABLISHED 192.168.0.2:50207  192.168.22.157:8180 192.168.22.112:8180

Timeout値変更

[root@testserver07 ~]# ipvsadm -l --timeout
Timeout (tcp tcpfin udp): 900 120 300
[root@testserver07 ~]# ipvsadm --set 1800 120 300
[root@testserver07 ~]# ipvsadm -l --timeout
Timeout (tcp tcpfin udp): 1800 120 300

手順書

手順書不明点


kenerlパラメータ設定 (LVSサーバ)

  • net.ipv4.vs.expire_nodest_conn = 1
    • 物理サーバがダウンしている場合に、各種プロトコルが持つタイムアウトの前にコネクションを切断するために使用する。

kenerlパラメータ設定 (MMサーバ)

net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.allp_announce = 2
  • http://q.hatena.ne.jp/1199870913 より抜粋
  • arp_ignore は、受け取るarpリクエストでの挙動 arp_ignoreは、0-8まで、0がデフォルト、4-7がリザーブ
    0 (デフォルト)すべてに応答
    1 受信??(送信先)IPアドレスが受け取ったinterface側に定義されていた場合のみ応答
    2 受信??(送信先)IPアドレスが受け取ったinterface側のサブッネットに属する場合応答
    3 ←わかりません。
    8は応答しない。
  • arp_announce は、発信する場合のarpリクエストでの挙動
    0 (デフォルト)すべてに発信??(受け取ったinterfaceが応答を返すと考えればいいです)
    1 相手先のIPアドレスがinterface側と同じサブネットに対してのみ応答
    (これは、間違っているかも・・・)
    2 相手先のIPアドレスに近いinterfaceを使って応答
  • net.ipv4.conf.tunl0.rp_filter = 0 (RHEL6と5で値の意味が違うらしい)
    • http://www.ksknet.net/cat13/rp_filter.html
      スプーフィング対策としてカーネルパラメータのrp_filterを有効にしましょう。
      スプーフィングとはプライベートアドレスを詐称してファイアウォールを通りぬける手法です。
      rp_filterを有効にすると送信元IPアドレスが正しいかどうかを確認してくれます。

Performance Tunning

LVSを通しての通信が遅い

  • http://heartbeats.jp/hbblog/2012/09/dellcentos6lvskeepalived.html より
  • NICのgeneric-recieve-offloadがONになっていると激遅になる。(SoapUI-->MMへのExtractリクエストだと数秒〜十数秒かかる)
  • 確認方法
    [root@testserver10 ha.d]# ethtool -k eth0
    Offload parameters for eth0:
    rx-checksumming: on
    tx-checksumming: on
    scatter-gather: on
    tcp-segmentation-offload: on
    udp-fragmentation-offload: off
    generic-segmentation-offload: on
    generic-receive-offload: on
    large-receive-offload: off
  • OFFにする
    [root@testserver10 ha.d]# ethtool -K eth0 gro off
  • OFF後
    [root@testserver10 ha.d]# ethtool -k eth0
    Offload parameters for eth0:
    rx-checksumming: on
    tx-checksumming: on
    scatter-gather: on
    tcp-segmentation-offload: on
    udp-fragmentation-offload: off
    generic-segmentation-offload: on
    generic-receive-offload: off
    large-receive-offload: off