Keepalived + LVS + CentOS4 でロードバランサー(NAT)
keepalived は、1.1.15からinclude が使えるようになったので、設定が簡単になったのでお勧め。ありがとうid:stanaka さん。
設定は以下のとおり。
| 種別 | ホスト名 | IPアドレス | デフォルトゲートウェイ | 備考 |
| クライアント | cl0 | 10.0.0.173 | 通常通り | |
| ロードバランサー | lb0 | eth0:10.0.31.11/16 | なし | ロードバランサーのdefault g/w をすべて削除。 |
| eth0:0 10.0.7.100(VIP) | なし | |||
| eth1:192.168.31.11/16 | なし | |||
| リアルサーバー | web100 | eth0:192.168.31.100/16 | 192.168.31.11 | default g/w をロードバランサーの内側のIP(192.168.31.11)に変更。 |
| リアルサーバー | web101 | eth0:192.168.31.101/16 | 192.168.31.11 | default g/w をロードバランサーの内側のIP(192.168.31.11)に変更。 |
# yum -y install ipvsadm iproute curl # rpm -ivh keepalived-1.1.15-5.i386.rpm
keepalived-1.1.15-5.i386.rpm は、ここからダウンロード。
- ロードバランサーへのVIPの追加
/etc/sysconfig/network-scripts/ifcfg-eth0:0 というファイルを以下の内容で作成し、ネットワークを再起動。
DEVICE=eth0:0 BROADCAST=10.0.255.255 IPADDR=10.0.7.100 NETMASK=255.255.0.0 NETWORK=10.0.0.0 ONBOOT=yes TYPE=Ethernet
- keepalived の設定
/etc/keepalived/keepalived.conf を以下のように作成。(includeは、 keepalived-1.1.15 以降しか使えないので注意。)
! Configuration File for keepalived
global_defs {
notification_email {
yoshifumi1975@example.org
}
notification_email_from yoshifumi1975@example.org
smtp_server 10.0.7.250
smtp_connect_timeout 30
router_id LVS_DEVEL
}
include web.conf
- includeされる /etc/keepalived/web.conf の内容。
virtual_server_group HTTP100 {
10.0.7.100 80
}
virtual_server group HTTP100 {
delay_loop 3
lvs_sched rr
lvs_method NAT
protocol TCP
virtualhost example.org
sorry_server 192.168.31.102 80
real_server 192.168.31.100 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
}
}
real_server 192.168.31.101 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
}
}
}
- keepalived の再起動
# service keepalived restart
- 設定の確認
# ipvsadm -Ln IP Virtual Server version 1.2.0 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.7.100:80 rr -> 192.168.31.100:80 Masq 1 0 0 -> 192.168.31.101:80 Masq 1 0 0
- ロードバランサーのIPパケットのフォワーディングを有効にする。(ルータにする)
/etc/sysctl.confを以下のように編集。
(前略) net.ipv4.ip_forward = 1 (中略) net.ipv4.conf.default.rp_filter = 0 (後略)
設定をリロードする。(またはサーバー再起動しちゃえ。)
# sysctl -p
- テスト
クライアントから以下を実行して動作を確認。
# curl 'http://10.0.7.100/' <html> <body> 192.168.31.101 </body> </html> # curl 'http://10.0.7.100/' <html> <body> 192.168.31.100 </body> </html> # curl 'http://10.0.7.100/' <html> <body> 192.168.31.101 </body> </html> # curl 'http://10.0.7.100/' <html> <body> 192.168.31.100 </body> </html>
このページを参考にしました。
DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)