「waku2とらふぃっくすHAクラスタ化プロジェクト」のひとつです。 本日は、「LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その2[ldirectordの設定]」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。 本日は、「LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その2[ldirectordの設定]」についてです。
関連記事:
- LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その1[基本インストール・heartbeatの設定]
- LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その2[ldirectordの設定]
- LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その3[httpの負荷分散]
- LVS + heartbeat2(v1モード) + ldirectord(apache連携)による負荷分散&冗長化その4[動作確認]
貴重な情報ありがとうございます。深く感謝の意を表します。
参考サイト:
- CentOS5.0とLVS(Linux Virtual Server)でWeb負荷分散装置を作る - sous le grand arbre
- LVSで構築するgatewaying型負荷分散システム:企業IT部門の変革を支援するエンタープライズ実践情報サイト EnterpriseZine
ここでの構成は以下の通りとなります。(xenが前提です。洒落のつもりはないです)
- (Domain-0)mikeneko.waku2traffics.com LVS(ipvsadm)/heartbeat
- (Domain-0)toraneko.waku2traffics.com LVS(ipvsadm)/heartbeat
- (Domain-U)sabineko.waku2traffics.com apache
- (Domain-U)kuroneko.waku2traffics.com apache
- (eth0)192.168.1.20/(eth1)10.0.0.20 mikeneko.waku2traffics.com
- (eth0)192.168.1.21/(eth1)10.0.0.21 buchineko.waku2traffics.com
- (eth0)192.168.1.22/(eth1)10.0.0.22 sabineko.waku2traffics.com
- (eth0)192.168.1.30/(eth1)10.0.0.30 toraneko.waku2traffics.com
- (eth0)192.168.1.31/(eth1)10.0.0.31 shironeko.waku2traffics.com
- (eth0)192.168.1.32/(eth1)10.0.0.32 kuroneko.waku2traffics.com
OS:CentOS5.2 x86_64版
なお、構成についてですが、正直こんな文字だけでは分からないと思います。 申し訳ありませんが図は用意できませんのでご了承願います。構成を自分なりの図にすることをオススメしますが、さっぱりわからないと思いますので、この本を参考に作る事を強くオススメします。
【中古】 Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編/デージーネット(著者)
【中古】 Xen徹底入門 オープンソースで実現するOS仮想化環境/宮本久仁男,大島孝子,平初,長谷川猛【著】
各アプリケーションのなんとなくの仕様の理解、上記構成をなんとなく図解できる程の把握、Xenでの仮想化完了が前提となります。また基本的にはLinuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編の内容をyumからインストール・設定した記事になります。
以下の記事も合わせてお読みください。
Xen(Domain-0)のインストール
Xen(Domain-U)のインストール
Xenマスターイメージ作成
Xen(Domain-U)の複製(LVMベース)
Xen(Domain-U)で複数のネットワークインターフェイスを使う
ldirectordの設定
mikeneko/toraneko の両方でパケット転送設定を行う。 負荷分散サーバではパケットの転送処理を行えるようにカーネルパラメータを調整しておく必要がある。 以下のように設定しておく。
1 2 |
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 |
この設定はサーバーを再起動するまで有効にならない。 が、すぐに有効にしたい場合はsysctlコマンドを実行しておく。
1 2 3 4 5 6 7 8 9 10 11 |
# sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 |
mikeneko/toranekoの両方で設定をする。
ここでautoreload=yesとしているので、今後ldirectord.cfの設定を変更しても自動的に反映される。
real=192.168.1.22:80 gate 2 # 2:1 = 115:116
real=192.168.1.32:80 gate 1 # の比重で振り分け
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# vi /etc/ha.d/ldirectord.cf checktimeout=3 checkinterval=5 autoreload=yes logfile="/var/log/ldirectord.log" quiescent=yes virtual=192.168.1.90:80 fallback=127.0.0.1:80 real=192.168.1.22:80 gate real=192.168.1.32:80 gate service=http request="test.html" receive="Still alive" scheduler=wlc protocol=tcp checktype=negotiate |
mikeneko/toranekoの両方で行う。
ldirectordはheartbeatに呼び出されて起動されるので、chkconfig ldirectord offとしておく。
1 |
# chkconfig ldirectord off |
mikeneko/toranekoの両方で行う。
また負荷分散装置としての設定はipvsadmが管理をするが、ldirectordが自動的にコマンドを発行してipvsadmを設定してくれる。 よって別途ipvsadmを設定する必要はなく、chkconfig ipvsadm offとしておく。
1 |
# chkconfig ipvsadm off |
mikeneko/toranekoの両方で行う。
上記の設定では、実サーバがダウンした場合にもpersistentテーブルに載っている通信は、そのままダウンしたサーバに送り続けられる。 これを防ぐために、以下のカーネルパラメータを設定する。
1 |
# echo 1 > /proc/sys/net/ipv4/vs/expire_quiescent_template |
これを恒久的にする場合は/etc/sysctl.confに以下の行を追加する。
1 2 |
# vi /etc/sysctl.conf net.ipv4.vs.expire_quiescent_template = 1 |
mikeneko/toranekoの両方で一旦ldirectordサービスを起動してみる。 successと出たら正しく起動している。
1 2 |
# /etc/init.d/ldirectord start Starting ldirectord... success |
確認できたらストップしておく。
1 2 |
# /etc/init.d/ldirectord stop Stopping ldirectord... success |
その3に続きます。