2011年11月28日月曜日

LVS ロードバランサ (2) keepalived

Cです。

前回作成したロードバランサはリアルサーバが死んでいても、
ロードバランスアルゴリズムに基づいてパケットを投げつける。

クライアントから見ればたまに接続不能状態になる。
ロードバランスアルゴリズムが「lc」になっていた場合、
セッション数が一番少ないリアルサーバにパケットを投げつけるので、
リアルサーバが1台死んでしまうと、死んでいるやつに投げつけ続ける状態に
陥ってしまうことまである。

そこで登場「keepalived」だ。

リアルサーバをLVSから監視し続けて死んでいると判断した場合に、
重み付け設定を変えたり、LVSの設定からはずしてしまったり出来る。

■keepalived インストール
#apt-get install keepalived

■ipvsadm設定初期化
前回設定したipvsadmの設定は消しておこう。
なぜならkeepalivedによってipvsadmの設定を自動的に行うからだ。
2重になって変な動きにならないようにね。

#echo "" > /etc/ipvsadm.rules
#ipvsadm -C
#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn

設定が消えたことを確認。OK。

■keepalived.conf の作成
#vi /etc/keepalived/keepalived.conf
virtual_server_group PROXY10 {
192.168.24.160 8080
}

virtual_server group PROXY10 {
delay_loop 3
lvs_sched wrr
lvs_method DR
protocol TCP

#sorry_server none

real_server 10.10.10.10 8080{
weight 1
inhibit_on_failure

TCP_CHECK {
connect_port 8080
connect_timeout 2
}
}

real_server 10.10.10.20 8080{
weight 1
inhibit_on_failure

TCP_CHECK {
connect_port 8080
connect_timeout 2
}
}

}

こんな感じだ、今回はsorry_serverは設定していない。
2個のリアルサーバに対して、8080ポートにアクセスし応答が無ければweightを0にする。
ロードバランスアルゴリズム「wrr」を設定している場合はこういう風にすればいい。

応答が無ければipvsadmから外しちゃう設定もあるけど、
ipvsadm -Lnで視覚的に確認できない為、こっちのほうが良い。

keepalivedはrunlevel 2で自動的に起動するようになっているので再起動して
設定できているか確認しておこう。
確認できたら障害テストをしてみよう。 

■障害テスト
PROXY01へログインしてsquidをストップする。
#/etc/init.d/squid stop

LVS01へ戻って状態を確認。
#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.24.160:8080 wrr
-> 10.10.10.10:8080 Route 0 0 0
-> 10.10.10.20:8080 Route 1 0 2

PROXY01のWeightが0になっていることを確認。
クライアントからブラウザでWebへアクセスし接続できることを確認。

PROXY02のsquidも落とすと、全滅の為アクセスは出来なくなる。
その後両PROXYのsquidを復活させて、アクセスできることが確認できれば問題なかろう。

ここまでくれば後一息だ、
次はVRRPを使い、LVSをもう1機追加してLVSのAct/Std構成を取る。

以上、

0 件のコメント:

コメントを投稿