08/07/09 01:03:15 0 BE:1368735-DIA(100512)
さてと。
「兄貴」の設定など相違のある点もあるかと思いますが、
まずはこういう順番でやってみるのがよさそう、っていう例を一方的に。
1) c21 = banana3239 単体で、matd を使ってロードバランサを動かす(単体テスト1)
2) c24 = banana3244 単体で、matd を使ってロードバランサを動かす(単体テスト2)
3) c21 と c24 を ucarp で結合する設定をする
765:root▲▲ ★
08/07/09 01:08:26 0 BE:1095034-DIA(100512)
ただし、まず最初にやることがあります。
これをやらないと何もはじまりません。
0) c201~c205 = tiger3502~tiger3506 の lo0 に、206.223.150.14 の IP アドレスを追加する
# added for matd
ifconfig_lo0_alias0="inet 206.223.150.14 netmask 255.255.255.255"
上記をフロント5台の /etc/rc.conf に追加します。
で、
ifconfig lo0 206.223.150.14 netmask 255.255.255.255 alias
を手で入力します。こうすればリブートは必要ありません。
766:root▲▲ ★
08/07/09 01:14:50 0 BE:3831067-DIA(100512)
次に、5台のフロントの em0 のMACアドレスを調べます。
ifconfig でわかりますが、一番楽なのはこの方法でしょう。
1) c21 = banana3239 にログインする
2) tiger3502~tiger3505を順に ping する
3) arp -a | grep tiger350 | sort
tiger3502.maido3.com (206.223.150.105) at 00:1c:c0:4c:e2:cd on em0 [ethernet]
tiger3503.maido3.com (206.223.150.25) at 00:1c:c0:26:a7:08 on em0 [ethernet]
tiger3504.maido3.com (206.223.150.30) at 00:1c:c0:4d:39:c4 on em0 [ethernet]
tiger3505.maido3.com (206.223.150.130) at 00:1c:c0:56:75:f0 on em0 [ethernet]
767:root▲▲ ★
08/07/09 01:15:38 0 BE:1824454-DIA(100512)
っと、もう1台あるか。
tiger3502.maido3.com (206.223.150.105) at 00:1c:c0:4c:e2:cd on em0 [ethernet]
tiger3503.maido3.com (206.223.150.25) at 00:1c:c0:26:a7:08 on em0 [ethernet]
tiger3504.maido3.com (206.223.150.30) at 00:1c:c0:4d:39:c4 on em0 [ethernet]
tiger3505.maido3.com (206.223.150.130) at 00:1c:c0:56:75:f0 on em0 [ethernet]
tiger3506.maido3.com (206.223.150.230) at 00:1c:c0:56:7d:83 on em0 [ethernet]
これで、MACアドレスがわかりました。
これをもとに matd.cf ファイルを作ります。
768:root▲▲ ★
08/07/09 01:19:20 0 BE:7387799-DIA(100512)
banana3239 に入れる、/usr/local/etc/matd.cf を作ります。
ただし、まだこの時点では matd は起動しません。
# listen の address はホスト名または IP アドレス,
# port はサービス名またはポート番号で指定.
listen=206.223.150.14:80
# output_if は targets と同一セグメントにあるネットワーク I/F 名.
output_if=em0
# targets の address はホスト名,IP アドレスまたは MAC アドレスで指定.
# weight を省略した場合は 1 となる.
targets=00:1c:c0:4c:e2:cd,00:1c:c0:26:a7:08,00:1c:c0:4d:39:c4,00:1c:c0:56:75:f0,00:1c:c0:56:7d:83
769:root▲▲ ★
08/07/09 01:21:42 0 BE:5837388-DIA(100512)
で、/etc/ipf.rules を書いて、banana3239 が返事をしないようにします。
でも、まずその前に念のため、banana3239 で動いている httpd の Listen 行を、
Listen 80
から、
Listen 206.223.150.200:80
に変更しておきます。
これで、間違って banana3239 の httpd が返事をすることはなくなりました。
770:root▲▲ ★
08/07/09 01:23:31 0 BE:3648858-DIA(100512)
/etc/ipf.rules は1行でよいです。
他の行は必要ありません。
block in quick proto tcp from any to 206.223.150.14 port = 80
771:root▲▲ ★
08/07/09 01:25:09 0 BE:1642436-DIA(100512)
これで準備できたので、
ifconfig_em0_alias1="inet 206.223.150.14 netmask 255.255.255.255"
のような行を書いて(既に書いてあるみたいですね)、サーバをリブートします。
>>769 とか >>770 の影響を防ぐため、単に reboot しておくといいかも。
772:root▲▲ ★
08/07/09 01:32:50 0 BE:6567089-DIA(100512)
次に、matd を起動するための設定をします。
このサーバは matd に最大限の資源を与えるべきなので、
rtprio コマンドを使って、鼻薬をかがせます。
こんな起動スクリプトを準備して、daemontools 配下に置くのが楽です。
matd のエラーログをとるため、以下のように log も準備します。
mkdir /home/matd
chmod +t /home/matd
mkdir /home/matd/log
mkdir /home/matd/log/main
chown users:users /home/matd/log/main
(/home/matd/run 作成)
exec env - PATH="/usr/sbin:/usr/bin:/bin:/usr/local/bin" \
/usr/sbin/rtprio 31 /usr/local/sbin/matd -F \
-f /usr/local/etc/matd.cf \
-s /var/log/matd.stats
(/home/matd/log/run 作成)
#!/bin/sh
exec setuidgid users multilog t ./main
chmod +x /home/matd/run
chmod +x /home/matd/log/run
773:root▲▲ ★
08/07/09 01:35:16 0 BE:2553874-DIA(100512)
で、
cd /var/service
ln -s /home/matd
とすると、matd が起動するはずです。
10秒程度以上経過してから、
svstat /var/service/matd
で、matd が起動して10秒程度以上経過していることを確認します。
何かエラーがあった場合、/var/service/matd/log/main/current にログができていくので、
対応する必要があります(エラーがない場合ログは何も出ません)
774:root▲▲ ★
08/07/09 01:39:53 0 BE:821333-DIA(100512)
ここまでで、*外部*から、
telnet 206.223.150.14
すると、それぞれのフロント tiger3502~3506 の httpd が「こんにちは」するはずです。
ただしそれには、tiger3502~3506 のほうで、
バーチャルホストの設定を済ませてある必要があります。
具体的には、tiger3502~3506 の httpd.conf で、
従来からある、
NameVirtualHost 206.223.150.105:80
などの行に追加して、
NameVirtualHost 206.223.150.14:80
の行を追加してやり、
<VirtualHost 206.223.150.105:80 206.223.150.96:80>
のように、VirtualHost の行にも IP アドレスを追加して、httpd を再起動します。
775:root▲▲ ★
08/07/09 01:44:11 0 BE:4104195-DIA(100512)
ここまでで、
a) 単体で banana3239 がバランサとして動作し、
b) 5つのフロントサーバ tiger3502~3506 に負荷が均等に配分される
ようになったはずです。
確認はこのようにすればいいでしょう。
*外から* telnet で port 80 につないで、c.2ch.net がこんにちは、
すれば、問題ないわけです。
念のため、数回やってみるとよいです。
telnet 206.223.150.14 80
Trying 206.223.150.14...
Connected to 206.223.150.14.
Escape character is '^]'.
GET / HTTP/1.1 <= 入力
Host: c.2ch.net <= 入力
<= 空行を入力
HTTP/1.1 200 OK
Date: Tue, 08 Jul 2008 16:41:53 GMT
Server: Apache/なんちゃら
Last-Modified: Fri, 23 May 2008 03:42:31 GMT
ETag: "90-44ddd9e9c57c0"
Accept-Ranges: bytes
。。。
776:root▲▲ ★
08/07/09 01:47:04 0 BE:3283294-DIA(100512)
ここまでできると、
>>764
> 1) c21 = banana3239 単体で、matd を使ってロードバランサを動かす(単体テスト1)
が、できたことになります。
自分でやるなら、っていうことで、
以前のことを思い出しつつ、メモや過去ログをみつつやったので、
手順に抜けや間違いなど、あるかもしんないです。
ここまでは、c21 と c24 をクロスケーブルで直結していなくてもできますので、
たんたんとテストをすすめておくとよいと思います。
ということで、今日はここまでで。
# 実は、明日午後から金曜まで外勤だったりする私。
777:元tiger3502専用 ◆jxAYUMI09s
08/07/09 02:31:08 XgGHltZ90 BE:2694252-DIA(100721)
うおー(^_^;)どもですどもです