16668


Linux 4.1.6-1-ARCH x86_64
GNU/Linux環境で下記LVSドキュメントに掲示されたLocalNodeの例がうまく動作しないようです。  
<http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.localnode.html>  
9.4. Testing LocalNode

手元の環境でrealserverのアドレスにloopbackアドレス127.0.0.1を指定しても、LocalNodeとして認識されない。

[code]

    $ sudo ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.20.10.5:8090 rr
      -> 127.0.0.1:8090               Route   1      0          0  
    
[/code]

↑ Localにならない

最近のカーネルに組み込まれたlvsにLocalNode機能が取り除かれたでしょうか？


CC BY-SA 3.0
2015-09-15T13:50:12.820
16650
2015-09-16T01:33:37.137
9655
question
linux
LVS LocalNode うまく動作しない問題


linux-2.6.32 と linux-4.1.6 を比較すると、  
linux-2.6.32/net/netfilter/ipvs/ip_vs_ctl.c::__ip_vs_update_dest()
でローカルアドレスの場合に conn_flags に IP_VS_CONN_F_LOCALNODE をセットする箇所が、linux-4.1.6
ではなくなっています。

IP_VS_CONN_F_LOCALNODE がセットされないと  
net/netfilter/ipvs/ip_vs_xmit.c::ip_vs_null_xmit() が使われないのですが、替わりに
ip_vs_dr_xmit() の方でローカルアドレスの場合に ip_vs_null_xmit() と同様の処理をするようになっています。

変更された理由についてはわかりませんが、おそらく、設定時に IP_VS_CONN_F_LOCALNODE
がセットされてそのまま、という仕様では不具合があって、実際の動作時にローカルアドレスかどうかを都度判定するようにしたのではないでしょうか。


CC BY-SA 3.0
2015-09-16T01:33:37.137
16668
2015-09-16T01:33:37.137
4603
16650
answer