| ■ 【ぷろじぇくと ぞうさん】 〜E-Bananaサーバ 構築日記〜
|
第70日目:【Apache】root弟(´・ω・`)のApache二重化講座!
|
どうも、('A`)です。
えーと、「aniki」システムの再テスト・検証・修正を進めていますが、そんな中で以前
第64日目の日記でちょっと触れました「Apacheの二重化」についてroot弟(´・ω・`)から
社内サーバで成功したと報告を受けたので、今回発表します。
昨日報告を受けた時に「えっ、こんな方法で二重に動くんだ」と今更ながら知った('A`)で
ございます。
流石root弟(´・ω・`)は普段からApacheをイジイジしているだけの事はあります。
という訳で、今回はroot弟(´・ω・`)に説明をお願いしようと思います。
('A`)/じゃ、よろしく〜
root弟(´・ω・`)(以下、(´・ω・`))
「どうも、今回は('A`)に代わりまして、Apacheの二重化についてご説明いたします。
まず、T-Bananaとかに動いているApacheですが、ソースからインストールしています。
バージョンは2.0.59を使用していて、PHP5に対応しています。」
('A`)「で、結論から言うと、どうなの?」
(´・ω・`)「うわっ!どうして急に現れるかなあ・・・」
('A`)「え、何と言うか、、、話が長くなりそうだから。」
(´・ω・`)「相変わらず『せっかち』ですね・・・えーと、二重化するには以下の
方法でIPとか設定ファイルとかをコピー&修正すると動きます。」
('A`)「おっ、ちょっと見てみるかな。。。」
(´・ω・`)「今回は社内に設置しているサーバを使って、以下のサイトが
見れる様にApacheを二重で動かしてみました。」
http://jw48.maido3.cc/ (219.166.251.48)
http://jw482.maido3.cc/ (219.166.251.46)
で、サーバのメインIPは 219.166.251.48、サブのIPは 219.166.251.46 です。
通常弊社パッケージでApacheをインストールすると、メインIPで稼働する様に
仕上がります。その状態で、サブのIPでもう1つApacheが起動する様に以下の
作業を行ないます。
【1.IPをサーバーに追加】
/etc/rc.conf にサブのIPを追記して、その後サーバをリブートする。
ifconfig_[interface]_alias0="inet [ipaddress] netmask 255.255.255.255"
(例)
ifconfig_em0_alias0="inet 219.166.251.46 netmask 255.255.255.255"
この時、サーバをリブートしないでサブのIPを有効化するなら、以下のコマンドを
実行します。
ifconfig [interface] alias [ipaddress] netmask 255.255.255.255
(例)
ifconfig em0 alias 219.166.251.46 netmask 255.255.255.255
コマンド実行またはサーバリブート後、ifconfigコマンドでIPが追加されたか
確認する事を忘れずに実行する事。
【2.logbufferの複製】
Apacheのログを出力するプログラムは logbuffer を使用しますが、
二重化に際して logbuffer の複製 (logbuffer2とか)を作ります。
logbuffer は /usr/local/sbin/logbuffer に設置されているので、
cp /usr/local/sbin/logbuffer /usr/local/sbin/logbuffer2
と実行し、パーミッション(750)とか所有者(root:wheel)が同じか
確認する事。
※2つのApacheで同一のlogbufferを使用すると、うまく動かないです。
【3.新しいhttpd.confの作成】
既に存在しているhttpd.confをコピーして、/usr/local/apache2/ に
httpd2.conf として作成します。
(場所は判り易い所が良いでしょう。)
で、以下の箇所を修正します。
1)logbufferの変更
TransferLog "| /usr/local/sbin/logbuffer"
↓
TransferLog "| /usr/local/sbin/logbuffer2"
2)出力先ログファイルの変更
LogFormat "/var/httpd/access_log %h %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
↓
LogFormat "/var/httpd/access_log2 %h %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
3)Listen行の変更
Listen 219.166.251.48:80
↓
Listen 219.166.251.46:80
※ここで、Listen 80 と書かれた行はコメントアウトしておく。
4)PidFileの変更
PidFile logs/httpd.pid
↓
PidFile logs/httpd2.pid
|
('A`)「・・・って、これだけ?」
(´・ω・`)「そうです。修正点はこれだけです。もしかすると、userやgroupを
変更する必要があるのかもしれませんが、変更しなくても動きました。
でも・・・www2とかに変えた方が良いのですかね?」
('A`)「(うっ、)どうなのかなあ・・・(判んないよ、そんな事)
で、起動はどうやってするの?」
(´・ω・`)「あー、はいはい。起動方法は以下の様になります。」
(´・ω・`)「既にインストールされているApacheを起動する場合は、以下のコマンドを
実行します。」
httpd -k start -DSSL
(SSLを特に使用していなければ、 httpd -k start でOKです。)
(´・ω・`)「で、もう一方のApacheを動かす場合には、-f オプションで設定ファイルを
明示して起動します。」
httpd -f httpd2.conf -k start -DSSL
|
(´・ω・`)「と、いう事です。」
('A`)「いやあ、すごい、すごい!流石だね。」
(´・ω・`)「あ、でもちょっと判らない事があるんですよ。通常のCGIとかPHPはこれで
動きますが、DSOを動かす時に他にも修正が必要なのかどうなのかな、って?
後はuserとかgroupとか変更すると動くのかなあ。。。って」
('A`)「うーん、まだまだ検証が必要って事か・・・」
まあ、もう1つApacheをインストールせずに、設定ファイルのコピーなどを作って
動いた事は収穫でした。
後はhttpd.confの記述でどういう動かし方ができるのかroot弟(´・ω・`)に引き続き
調べてもらいましょう。
今後も時々root弟(´・ω・`)の発表会を設けていきたいと思います。
(本人は乗り気じゃないかもしれないけど、ね。)
ただ、サポート現場も担当していたりすると、MySQLとかPHPとかApacheについて
質問とか設定変更とか色々な事が舞い込みます。
で、対応した結果蓄積された解決法とかを将来的に皆さんにもお伝えできればなあ、
と考えています。
あ、また別件が入ってきちゃった・・・
それでは、また。
[追記 18:30]
情けない。本当に情けない・・・
こんな事に気付かなかったなんで、情けない。
えーと、matdの「自動切り離し・組み込み」の仕組み(仮称:「anikiシステム」)の
稼働実験をテスト環境で再実行していたら・・・なんで動かなかったのか判りました。
anikiシステムについては第62日目の日記で設置方法を書いていたのですが、、、
「speedo」サーバでanikiシステムを起動するシェルスクリプトmatd_check.shの
パーミッションが「700」ではなく「644」になってました。
(('A`)これじゃ動かんよ・・・orz)
フロントサーバの1つについて、Apache(httpd)を停止する事で切り離しが行われるか、
そしてApache(httpd)を再起動して、再びmatd.cfに該当サーバが組み込まれるかを
テスト環境で再度動作確認し、正常に切り離し・組み込みされる事を確認しました。
また、「speedo」サーバのシェルスクリプトについてパーミッションを700に直して、
cronからちゃんと起動される様にしました。
で、改めてc21とc24にakiniシステムの環境を入れ込みますが、matdのシステムの
ディレクトリ構成等がテスト環境と違うので、そこら辺の整合性を事前に合わせながら
システムを入れ込む作業を進めます。。。
|
|
|
|
|
69日目に戻る。 71日目に続く。
解析
|