なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

ロードバランサ 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 全体的な設定

  • vrrp_sync_group いくつかのVRRPをグルーピングして使う設定

  • vrrp_instance とあるVRRP用バーチャルアドレスに関する設定

  • 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と違いがあります。