Heartbeatに付属するソフトウェア 実サーバの死活やTCPのサービスを監視をしてくれる。
カーネルが提供するLVSでは、L4ロードバランサーと同じ動作をするため、 実サーバの稼動状態を監視することはできない。
そのため、サーバが停止していてもパケットを転送しようとするが、 ldirectordの場合は、この問題を解決してくれる。
つまり、L7ロードバランサーと同じ動作をしてくれる。
カーネルが提供するLSVの設定は、ipvsadmというコマンドで行うが比較的複雑、 こっちはその問題を解決してくれる。
ldirectordはLVMと連携して動作する。 そのため、あらかじめipvsadmをインストールしておく必要がある。
yum -y install heartbeat-ldirectord
ここからRPMパッケージをダウンロードします。
http://linux-ha.org/download/index.html
perlモジュールが必要なので、依存関係がかなり出ます(;・∀・)
下記のコマンドでサンプルファイルから設定をコピーします。
cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/ldirectord.cf
/etc/ha.d/ldirectord.cf
# Global Directives checktimeout=3 checkinterval=1 #fallback=127.0.0.1:80 autoreload=yes #logfile="/var/log/ldirectord.log" #logfile="local0" quiescent=yes
checktimeout= | サービス監視で使用するタイムアウトを指定 |
checkinterval= | サービス監視の実行感覚を指定 |
fallback= | 全ての実サーバが落ちた場合にリクエストの転送先を指定 |
autoreload= | ldirectordが設定ファイルを自動で読み込み直すかを指定 |
#logfile= | ログの保存先 |
quiescent= | 実サーバ、フェイルバックサーバ共に落ちた場合の処理を指定 |
noの場合にはLVSのサービステーブルから設定を削除。 | |
yesの場合は全てのサーバの重みを0にして、接続を受け付けなくする |
仮想サーバに設定できる項目もあるが、 基本的にグローバルより仮想サーバの方が優先される。
この設定ファイルの下の方には以下のような文がある。 定義されていない物はデフォルトの設定ではない物です(´∀`*)ウフフ
# Sample for an http virtual service virtual=192.168.6.240:80 real=192.168.6.2:80 gate real=192.168.6.3:80 gate real=192.168.6.6:80 gate fallback=127.0.0.1:80 gate service=http request="index.html" receive="Test Page" virtualhost=some.domain.com.au login= scheduler=rr #persistent=600 #netmask=255.255.255.255 protocol=tcp checktype=negotiate checkport=80 virtualhost=www.x.y.z
virtual= | 仮想サービスの定義 |
real= | 実サーバを定義する |
fallback= | フェイルバックサーバを指定 |
service= | checktypeでnegotiateを使用した時のみ使われる監視方法を指定 |
request= | 監視のリクエストで使われるページを指定 |
receive= | 監視リクエストの応答のチェックに使う文字列を指定 |
virtualhost= | http監視のリクエストを作成する際にHOSTヘッダに設定する文字列を指定 |
login= | ftp、pop、mysql等の監視で使用するユーザー名を指定 |
passwd= | ftp、pop、mysql等の監視で使用するパスワードを指定 |
database= | sql監視で使用するデータベース名を指定 |
scheduler= | LVSのサーバスケジュールで使われる方法を指定 |
persistent= | persistentの設定値を指定 |
checktype= | サービス監視の方法を指定 |
checkport= | サービスで使われるポートを指定 |
ldirectordのログファイルはココ。
またインストール時に自動的に以下のファイルが作られています。
/etc/logrotate.d/ldirectord
このファイルのおかげで自動的にログはローテーションされるようになっています。
haresourcesファイルの最後に以下を追記する。
test1 192.168.1.100 \ ldirectord::ldirectord.cf \ IPaddr::192.168.1.100/24/eth0
もしくはコッチでも大丈夫。
test1 IPaddr::192.168.1.100/24/eth0 ldirectord