お勉強
ロードバランサ LVS (keepalived ldirectord)
ldirectord
ldirectordの実態はperl script らしいです。
LVSの設定変更にはipvsadmを呼び出しているとのこと。
設定ファイルは
/etc/ha.d/ldirectord.cf
設定は
virtual=192.168.0.5:80
real=192.168.0.6:80 masq
real=192.168.0.7:80 masq
scheduler=rr
protocol=tcp
checktype=negotiate
checkport=80
service=http
request="index.html"
たとえばこんな感じ。
virtual=にバーチャルサーバを
real=に実サーバ、転送方式を
scheduler=にスケジュール方法を
指定します。
転送方式の設定はipvsadmのオプションと頭文字が一緒で -g gate -i ipip -m masq です。
スケジュール方式はipvsadm -s で記載するものと同じです。
checktype checkport service request あたりは、死活監視のための設定です。
checktype negociate はアプリケーションレベルのチェックです。
service は checktypeがnegociateのときに、どのプロトコルを使うかを指定します。httpのほか、smtp,pop,ldap,dns,mysqlとかいろいろあるようです。
request は checktypeがnegociateのときにサーバにリクエストする文字列。今回はhttpなのでindex.htmlとやってますが、dnsならAレコードとかPTRアドレス、mysqlとかならsqlクエリを。
上には書いてませんが、receive でrequest に対するレスポンスの中身を正規表現で指定できます。 ここで指定した文字列がレスポンスに含まれれば真すなわち疎通がとれたとみなされます。 指定しなければ中身が何であれレスポンスが帰ってくれば真となります。
keepalived
keepalivedではVRRP(virtual Router Redundancy Protocol)を使用してLVS自体を冗長化することもできます。
そのおかげで若干設定が多くなります。
設定ファイルは
/etc/keepalived/keepalived.conf
いくつかのセクションからなります。
global_defs 全体的な設定
virtual_server_group いくつかのバーチャルサーバをグルーピングして使う設定
virtual_server バーチャルサーバの設定
各セクションは
global_defs{
router_id LVS_SAMPLE
}virtual_server 192.168.0.5 80 {
lvs_sched rr
lvs_method NAT
real_server 192.168.0.6 80 {
HTTP_GET {
url {
path /index.html
}
}
}
real_server 192.168.0.7 80 {
HTTP_GET {
url {
path /index.html
}
}
}
}
のように {} で区切る。
keepalived では lvs_sched にスケジュール方式 lvs_methodに転送方式を記載します。
スケジュール方式の記載内容はldirectordと一緒ですが、転送方式は -g = DR, -i = TUN, -m = NAT となります。
ここではバーチャルサーバを1つにしていますが、
virtual_server_group GROUPNAME {
}
でいくつかのバーチャルサーバを1まとめにして
virtual_server group GROUPNAMe {
}
とやってまとめることも出来ます。
記載のとおり、死活監視の方法もldirectordと違いがあります。