前回作成したロードバランサはリアルサーバが死んでいても、
ロードバランスアルゴリズムに基づいてパケットを投げつける。
クライアントから見ればたまに接続不能状態になる。
ロードバランスアルゴリズムが「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
#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
}
}
}
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
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 件のコメント:
コメントを投稿