LVS on Xen上の設定(失敗)
ということでLVSの設定を仕込んでロードバランスしてみたいと思います。
lvsにて
インストール
# yum -y install ipvsadm
サービス用仮想アドレス追加 (192.168.0.31をサービス受けつけアドレスにする)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:0 DEVICE=eth0:0 BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.31 IPV6INIT=yes IPV6_AUTOCONF=yes NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes
バランシングの設定。ラウンドロビン+NATで設定
# ipvsadm -C # ipvsadm -A -t 192.168.0.31:80 -s rr # ipvsadm -a -t 192.168.0.31:80 -r 192.168.1.11 -m # ipvsadm -a -t 192.168.0.31:80 -r 192.168.1.12 -m
設定の確認
# ipvsadm -L IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.31:http lc -> 192.168.1.12:http Masq 1 0 0 -> 192.168.1.11:http Masq 1 0 0
設定終了。クライアントから192.168.0.31をたたいてみるも応答が返ってこない。なんでか良くわからんので順番に調べてみる
lvsにて
クライアントからのリクエスト確認。来てるっぽい
# tcpdump -n -i eth0 port 80 07:33:30.438260 IP 192.168.0.21.54451 > 192.168.0.31.http: S 1048579348:1048579348(0) win 65535
l vsからクライアントへ向かうリクエスト。行ってるっぽいけどソースアドレスがクライアントから直になってる。NATで設定してるはずなのになんかおかしい気がする。
# tcpdump -n -i eth1 port 80 07:35:18.039102 IP 192.168.0.21.54451 > 192.168.1.12.http: P 1:6(5) ack 0 win 65535
-c でLVSのコネクションテーブルがみれるらしい。stateがFIN_WAITなので実ホストからのACKを待っている状態かな。
# ipvsadm -L -c -n pro expire state source virtual destination TCP 01:57 FIN_WAIT 192.168.0.21:54461 192.168.0.31:80 192.168.1.12:80
web1にて
クライアントからのリクエスト確認。あいかわらずソースアドレスがlvsで書き換えられてなくクライアントから直できてる。これのせいかな?
NATで設定したはずだからlvsのアドレスで上書きされるはずがされてないのが原因な気がする。
# tcpdump -n -i eth0 port 80 07:42:59.979908 IP 192.168.0.21.54509 > 192.168.1.11.http: S 4268655527:4268655527(0) win 6553507:42:59.980027 IP 192.168.1.11.http > 192.168.0.21.54509: S 3585005400:3585005400(0) ack 4268655528 win 5792
色々調べてみたけどめぼしいもの見当たらず。Xen上で同じ様なことして同じ様な症状に見舞われてる人もいるみたいなのでウマくいかないのかなー?
http://www.grandarbre.net/2007/11/centos50lvslinux-virtual-serve.html
もしくはカーネルモジュールまわりでNAT関係とか何かが足りないから追加しないといけないのかも。準仮想化でそんなことできるのだろうか orz。もしくはiptablesのPOSTROUTINGとか使ってアドレス上書きしてやればつながるかな....。やっぱ粘って完全仮想化をすべきだったか...。なんかそんな予感はしたんだよなぁ。とりあえず上記サイトはDSRで試してるみたいなんでそっちやってみますかね。本当はabを使ってパフォーマンスとか見てみたいのだがXen触ったおかげで当初と目的がずれて来ている気するけどまあいっか。そもそも物理的には1台なんだし....。
追記
DSRもうまくいかない...ぷぎゃー。流石にお手上げかなぁ。ま、LVSの触り方もわかったしボチボチ調べますかねぇ。