トップページ»3.1.Linux/UNIX»2つのウェブサーバーを1つに纏めたい

3.1.Linux/UNIX



2つのウェブサーバーを1つに纏めたい

イントラネット上のあるウェブサーバーがリース切れを迎える。 代替えとして新規にサーバーを導入し、そちらにコンテンツの載せ替える作業が前々から計画されていた。

今回その為に導入したサーバーは新しいサーバーと言うことで当然の事ながら前のサーバーより格段にスペックが高くなっている。 それに対して移し替えるコンテンツを見てみると、全てスタティックなコンテンツで、まったくもって大したことをやっていない。

「新しいサーバーを使うの、勿体なくない?」
「別のサーバーに移し替えて、新しいサーバーは別の用途で使わない?」

そんな話になった。

現状使っていない古いサーバーはない。 しかし、別の用途で稼働しているウェブサーバーなら複数台ある。 稼働中のサーバーの中にIISベースな物は無い。 全てLinux又はUNIXベースのApache等だ。 でもApacheであればバーチャルサーバーでどうにかなるだろう。

早速載せ替え元のサーバーの状況分析をしてみる。

  • Windows 2000 ServerのIISベース
  • サーバーはスタティックなIPが1つ割り当てられている
  • DNSへの登録もあり、ユーザーは名前でブラウズしている
  • ローカルネットワークに置いたファイアウオールで制御している
  • コンテンツの総ディスク使用容量は1ギガちょっと程度
  • コンテンツ管理者は4ユーザー(4部門)
  • ユーザーは全てFTPで更新作業している
  • ざっと見るとコンテンツはShift-JISが殆どっぽい

やはりやっていることは大したこと無い。 というわけで別のサーバーに移設することが決定した。




移設に際して

となると次は移設先のサーバーをどれにするかだ。 先ほども書いたとおり入れるコンテンツは全てスタティックなので負荷的にも大したこと無い。 古いサーバーでもOKなはず。

というわけでちょっと古めのRedhatベースのサーバーに移設することにした。

このサーバーに載っているApacheのバージョンは2だった。 普通に考えれば名前ベースのバーチャルサーバーで事足りる。

だが今回のケースの場合これでは問題がある。 説明が長くなりそうなので割愛するが、移設元のサーバーはファイアウオールでの制御を行っており、移設した後にもそれが必要なのだ。

というわけで今回は移設先のサーバーをマルチホーム化し、IPベースのバーチャルサーバーとして稼働させることにした。

移設先サーバーのマルチホーム化

マルチホーム、つまり一つのサーバーに対し複数のIPアドレスを割り当てる。 今回はネットワークカード1枚に対して2つIPアドレスを割り当てることになった。 1つは移設先に元々入っていたWEBサーバー用。 もう一つは新たに移設するWEBサーバー用として使う。

マルチホームの実現は簡単だ。 具体的にはIPエイリアスという方法で行う。

Redhat系のサーバーではネットワーク関係の設定ファイルは/etc/sysconfig/network-scripts以下にある。 この中のifcfg-eth0等といったファイルがネットワークカードのIPアドレス等々の設定になっている。 今回は例としてeth0のIPは192.168.0.1と仮定する。

このネットワークカードにもう一つIPアドレスを割り当てる場合は、同じフォルダ内にifcfg-eth0:0という名前で新規にファイルを作成し、

DEVICE=eth0:0
IPADDR=192.168.0.2
NETWORK=192.168.0.0
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
BOOTPROTO=static
ONPARENT=yes
ONBOOT=yes
NO_ALIASROUTING=yes

等と記述する。 勿論IPADDR、NETMASK、BROADCAST等はネットワークに応じて適宜変更。 ここまで出来たらインターフェースを有効にする。

ifup eth0:0

この時点で2つのIPどちらからでもアクセスできるはずだ。 念のためpingしてみたり、ブラウザで両方のIPにアクセスして同じページが表示されるか試してみるなどしてみる。

Apache側の設定

この段階では単にサーバーのIPが2つになっただけだ。 次に双方のIP毎にそれぞれ別のコンテンツを表示するように振り分けてやる必要がある。

Redhat系の場合Apacheの設定は/etc/httpd以下になるが、今回は更にその下位のフォルダである/etc/httpd/conf.d/以下に設定ファイルを書いていくことにする。 このフォルダ以下のファイルはメインの設定ファイルである/etc/httpd/conf/httpd.confからインクルードされており、用途別に設定ファイルを分けることができるので後で何をやっているのかわかりやすくなるのだ。

まず一つ目のバーチャルサーバーの設定。 viで例えば/etc/httpd/conf.d/web1.confと言う名前でファイルを新規作成し、

<VirtualHost 192.168.0.1>
ServerAdmin web1root@your_domain.tld
DocumentRoot /var/www/web1/
ServerName web1.your_domain.tld
ErrorLog /var/log/httpd/web1_error_log
TransferLog /var/log/httpd/web1_access_log
</VirtualHost>

次いで2つ目のバーチャルサーバーの設定。 ここでは/etc/httpd/conf.d/web2.confとする。

<VirtualHost 192.168.0.2>
ServerAdmin web2root@your_domain.tld
DocumentRoot /var/www/web2/
ServerName web2.your_domain.tld
ErrorLog /var/log/httpd/web2_error_log
TransferLog /var/log/httpd/web2_access_log
</VirtualHost>

これでApache側の設定は完了。

あくまで最小限の設定しか書いていないので、これ以外に設定が必要な場合は記述すること。 また、/var/www/web1/及び/var/www/web2/以下に各サーバーのコンテンツも入れておくこともお忘れなく。

ここまで出来たら設定を反映するためにhttpdを再起動しよう。

/etc/rc.d/init.d/httpd restart

これで各IP毎に表示されるコンテンツが変わるはずだ。 後はDNSにレコードの追加をするなどして作業完了。

よし。 これで新しいサーバー1台が浮いた。( ̄ー ̄)
さて何に使おうっかなぁ。


投稿日 : 2005年4月14日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/193

コメント

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»3.1.Linux/UNIX»2つのウェブサーバーを1つに纏めたい