ldirectord - Linuxめもがっき

ldirectord

ldirectordとは?

Heartbeatに付属するソフトウェア 実サーバの死活やTCPのサービスを監視をしてくれる。

カーネルが提供するLVSでは、L4ロードバランサーと同じ動作をするため、 実サーバの稼動状態を監視することはできない。

そのため、サーバが停止していてもパケットを転送しようとするが、 ldirectordの場合は、この問題を解決してくれる。

つまり、L7ロードバランサーと同じ動作をしてくれる。

カーネルが提供するLSVの設定は、ipvsadmというコマンドで行うが比較的複雑、 こっちはその問題を解決してくれる。

ldirectordはLVMと連携して動作する。 そのため、あらかじめipvsadmをインストールしておく必要がある。

インストール

yum

yum -y install heartbeat-ldirectord

rpm

ここからRPMパッケージをダウンロードします。

http://linux-ha.org/download/index.html

perlモジュールが必要なので、依存関係がかなり出ます(;・∀・)

設定ファイル

/etc/ha.d/ldirectord.cf

下記のコマンドでサンプルファイルから設定をコピーします。

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=サービスで使われるポートを指定

/var/log/ldirectord.log

ldirectordのログファイルはココ。

またインストール時に自動的に以下のファイルが作られています。

/etc/logrotate.d/ldirectord

このファイルのおかげで自動的にログはローテーションされるようになっています。

Heartbeatとの連携

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