| ■ 【ぷろじぇくと ぞうさん】 〜E-Bananaサーバ 構築日記〜
|
第10日目:〜外伝V〜 ロードバランサーを作れ! (その2)〜
|
どうも、('A`)です。
久しぶりに日記を書いたので、文章が当初想定していた量をオーバーしちゃいました。
今回からソフトウェアのインストール等の説明に移れると思います。
まあ、いつもながら色々と壁にぶち当たっているのですが・・・・・
前回の日記でもお話したのですが、「広義の」ロードバランサーに必要な機能としては
1.サーバや稼働中のサービスの監視機能
(振り分けに際して、各サーバが稼働しているかダウンしているかを把握する)
2.各サーバ間の振り分け機能
(外部から来たアクセス要求を他のサーバに振る際にどのサーバにどの程度
割り当てるかを決め、振り分ける。)
3.各サーバとの通信制御機能
(振り分けしたサーバに対して、最終的な応答先の情報を与える。)
が挙げられます。
今回はロードバランサーの「監視機能」を受け持つheartbeatの構築をお話します。
heartbeatはLinuxの「HAプロジェクト」というグループが開発・提供している
ソフトウェアです。Linuxの他にSolarisとかFreeBSDでも動かせる、と紹介されて
いるのですが、heartbeat本体以外にも色々とパッケージが必要で、かつLinuxで
動かすのが主流なので、rpmでのインストール説明しか見つからない、なんて
状況です。
FreeBSDのPortsに入っていないかなあ、と思って調べてみたら・・・ありました。
ちょっとホッ('A`)としました。
会社にお願いして確保したサーバ(FreeBSD 6.2-RELEASE i386、bananaサーバ)に
これから入れてみます。
heartbeatをインストールするに当たっては、事前に以下のパッケージをインストール
する必要があります。
・autoconf-2.59_2
(configure コマンドを作るためのツール)
・automake-1.9.6
(Makefile を作るためのツール)
・gmake-3.81_1
(GNU が作成した make)
・libtool-1.5.22_2
(ライブラリのコンパイルやビルド、インストール等を行なう為のツール)
・libnet-devel-1.1.3.r1
(各種通信パケットの生成・送信で使用されるライブラリ)
|
※makeとはC等のプログラムソースから実行形式のモジュールを生成するのに使用されます。
んで、最後にheartbeat本体(heartbeat-1.2.4)をインストールする事になります。
ではいつものごとくpkg_addコマンドで一発インストール!
autoconf、automake、gmake、libtool、libnet-devel・・・恐ろしいほど順調。
最後にheartbeatを入れれば、あとは設定かな。
・・・と思っていたら、以下のメッセージが表示されて止まった。
install: /usr/local/var/run/heartbeat.pid: No such file or directory
pkg_add: install script returned error status
|
えーと・・・ bananaサーバには /usr/local/var/run なんていうディレクトリは無いです。
ってか、何なんだろう、こんな不思議なディレクトリは。
ちょっとgoogleでエラーメッセージで検索したら、同じ問題に直面している人を発見!
Re: misc/109984: Package "heartbeat" fails to install
Patch +INSTALL with this should solve the problem:
145c145
< test -f ${base}/var/run/heartbeat.pid || \
---
> test -f /var/run/heartbeat.pid || \
147c147
< ${base}/var/run/heartbeat.pid
---
> /var/run/heartbeat.pid
170,171c170,171
< if [ -f ${base}/var/run/heartbeat.pid ]; then
< rm ${base}/var/run/heartbeat.pid
---
> if [ -f /var/run/heartbeat.pid ]; then
> rm /var/run/heartbeat.pid
|
('A`)ガーン!
実際パッケージを解凍して、+INSTALLファイルの中身を見ると、まさしくその中で
$[base]=/usr/local と指定されている。
「+INSTALLファイルを直せっ」て、それじゃあpkg_addで一発インストールが
できないじゃないか・・・
ちょっと途方に暮れていると、root弟((´・ω・`))がやってきた。
(´・ω・`):「('A`)、どうしたの?」
('A`):「え、いやあ、実はかくかく、しかじかで・・・」
(´・ω・`):「うーん、それは困りましたね。」
('A`):「そうなんだ。このままじゃ、特別なパッケージ作らんとインストールできん。」
(´・ω・`):「でもそれでうまくいくのかなあ。それにしても、なんでこんなディレクトリを
指定しているんだろう・・・・」
|
その時、急に閃いた。
\ __ /
_ (m) _ピコーン
|ミ|
/ `´ \
('A`)
ノヽノヽ
くく
(´・ω・`):「う、うわあぁ。どうしちゃったの?」
('A`):「パッケージを改造する必要は無い。」
(´・ω・`):「え、でも今のままじゃあエラーが出てインストールされないんじゃ・・・」
('A`):「ディレクトリが無いなら、予め作ってしまえばエラーは解消される。」
(´・ω・`):「え、ええええっ!」
('A`):「本家(FreeBSD)のパッケージがこの構成で組まれているんなら、その形に
合わせてしまえばいい。それにこのインストールをMakefileか何かで
まとめて実行する様に組んでその中でディレクトリ作成を実行する様に
してしまえば問題無いだろう。」
|
「それって小手(ry」という(´・ω・`)を後にして、さっそく実行。
やはりエラーは無く、インストールされたようだ。
でも which heartbeat と叩くと、heartbeat: Command not found. と表示される。
うーん、findしてみると /usr/local/lib/heartbeat/heartbeat にあるっぽい。
でも、heartbeatに必要な設定ファイル(ha.cfとか)が見つからない。
ん、(´・ω・`)がまたやってきた。
(´・ω・`):「本当にインストールしちゃったんだ・・・」
('A`):「ああ。だけど、設定ファイルが見当たらないんだ。」
(´・ω・`):「本当に動くんでしょうか・・・」
('A`):「大丈夫だよ。何とかなるって。特化型スレの523で書き方の見本は
見つけたから。」
(´・ω・`):「私の方でもheartbeatのサイトで色々調べてみます。」
|
と言ったものの、設定ファイルが置かれる場所(/usr/local/etc/ha.d)には無いしなあ。。。
こういう場合はshare/docに雛型があると思うんだけど。
/usr/local/share/doc/heartbeat ってディレクトリがあったので、見てみよう。
# ls -l /usr/local/share/doc/heartbeat/
total 356
-rw-r--r-- 1 root wheel 3308 Oct 15 2006 AUTHORS
-rw-r--r-- 1 root wheel 17989 Oct 15 2006 COPYING
-rw-r--r-- 1 root wheel 39728 Oct 15 2006 ChangeLog
-rw-r--r-- 1 root wheel 12951 Oct 15 2006 DirectoryMap.txt
-rw-r--r-- 1 root wheel 32462 Oct 15 2006 GettingStarted.html
-rw-r--r-- 1 root wheel 27737 Oct 15 2006 GettingStarted.txt
-rw-r--r-- 1 root wheel 15877 Oct 15 2006 HardwareGuide.html
-rw-r--r-- 1 root wheel 16032 Oct 15 2006 HardwareGuide.txt
-rw-r--r-- 1 root wheel 1270 Oct 15 2006 README
-rw-r--r-- 1 root wheel 4654 Oct 15 2006 Requirements.html
-rw-r--r-- 1 root wheel 4182 Oct 15 2006 Requirements.txt
-rw-r--r-- 1 root wheel 1873 Oct 15 2006 apphbd.cf
-rw-r--r-- 1 root wheel 645 Oct 15 2006 authkeys
-rw-r--r-- 1 root wheel 24835 Oct 15 2006 faqntips.html
-rw-r--r-- 1 root wheel 24725 Oct 15 2006 faqntips.txt
-rw-r--r-- 1 root wheel 8502 Oct 15 2006 ha.cf
-rw-r--r-- 1 root wheel 5905 Oct 15 2006 haresources
-rw-r--r-- 1 root wheel 34067 Oct 15 2006 heartbeat_api.html
-rw-r--r-- 1 root wheel 22919 Oct 15 2006 heartbeat_api.txt
-rw-r--r-- 1 root wheel 24104 Oct 15 2006 rsync.html
-rw-r--r-- 1 root wheel 16720 Oct 15 2006 rsync.txt
-rw-r--r-- 1 root wheel 807 Oct 15 2006 startstop
#
|
欲しかった3つの設定ファイル(ha.cf、haresources、authkeys)があるー!
ただし、これらの中身はあくまでも雛型なので、今のサーバに合わせる形で
修正しよう。
今回使用しているサーバは以下の2台なので、特化型での書き方を参考に
合わせてみます。
サーバ1: banana260.maido3.com (IP:206.223147.160、206.223.147.161)
サーバ1: banana261.maido3.com (IP:206.223147.165、206.223.147.166)
[/usr/local/etc/ha.d/ha.cf の内容]
bcast vr0
keepalive 2
warntime 10
deadtime 30
initdead 60
auto_failback off
respawn hacluster /usr/local/lib/heartbeat/ipfail
node banana260.maido3.com
node banana261.maido3.com
[/usr/local/etc/ha.d/haresources の内容]
banana260.maido3.com 206.223.147.161/32 zzz-ipvs
[/usr/local/etc/ha.d/authkeys の内容]
auth 1
1 sha1 ほにゃらら
※/usr/local/etc/ha.d/authkeys のパーミッションは600に変更する。
|
これで準備完了かな。では試運転。
成功するか、はたまた失敗するか、それは次回のお楽しみという事で。
(今日も最後まで書ききれなかった・・・・)
それでは、また。
|
|
|
|
|
9日目に戻る。 11日目に続く。
解析
|