IPベースのバーチャルホストを組む

IPベースのバーチャルホストを組む

みなさんこんにちは、ALL CONNECTでWEBプログラミングを担当している江端です。
私事ですが、4月6日で長男が1歳になり、この4月から3歳の長女と同じ保育園に通うようになりました。
なので、朝は毎日バタバタしています。小さなお子さんがいる方は、きっと同じようなのではないでしょうか…。
さて、今回はApacheのバーチャルホストについて書いてみようと思います。

IPベースのバーチャルホストの設定にはプライベートIPアドレスを使う

弊社ではWEBサーバーにAmazon Web ServicesのEC2インスタンスを利用しています。
1台のマシンの中に複数のWEBサイトを構築して運用するバーチャルホストを利用している方も多いのではないのでしょうか?
バーチャルホストの設定には、名前ベースとIPベースと呼ばれる2つの方法があります。

例えば、名前ベースのバーチャルホストを組んでいるサーバー(以下、旧サーバー)にパッチを当ててアップデートしたいとします。
アップデート後にサーバーの再起動が必要な場合、当然ダウンタイムが発生してしまいます。
このダウンタイムが発生しないようにするために別サーバー(以下、新サーバー)を準備して、動作確認後に旧サーバーのグローバルIPアドレスを新サーバーに割り当て直すという方法があります。(Floating IPパターンと呼ばれます)
参考URL:
http://aws.clouddesignpattern.org/index.php/CDP:Floating_IP%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3)

このとき、新サーバーでの動作確認はどのようにすればいいでしょうか?
もちろん、ブラウザにドメイン名を入れると、旧サーバーにアクセスしてしまいます。
hostsファイルを変更すればいいのですが、これを変更するにはPCの管理者権限が必要になります。
そこで、新サーバーでは一時的にIPベースのバーチャルホストを組んで、IPアドレスでアクセスした場合も、サイトが表示されるようにします。

具体的には以下のように設定します。

  • NICが1つのとき

  1. 新サーバーに、一時的なグローバルIPアドレスを割り当てる。
  2. /etc/httpd/conf/httpd.confを開き、<VirtualHost *:80>のブロック内に ServerAliasを記述し、グローバルIPアドレスを記述する。
  3. https通信でも確認する場合は、/etc/httpd/conf/virtual-host.confを開き、同様に<VirtualHost *:443>のブロック内に ServerAliasを記述し、グローバルIPアドレスを記述する。
  4. Apacheを再起動する。

  • NICが2つ以上のとき

    1. 新サーバーに、一時的なグローバルIPアドレスを割り当てる。
    2. /etc/httpd/conf/httpd.confを開き、<VirtualHost *:80>の部分の*をその一時的なグローバルIPアドレスと対になっているプライベートIPアドレスに変更する。
    3. https通信でも確認する場合は、/etc/httpd/conf/virtual-host.confを開き、同様に<VirtualHost *:443>の*の部分をプライベートIPアドレスに変更する。
    4. Apacheを再起動する。

これで、ブラウザに一時的なグローバルIPアドレスを入力すると新サーバーにアクセスし、サイトが表示されて動作確認をすることができます。
動作確認が終わったら、設定を元に戻し、一時的なグローバルIPアドレスを外します。
そして、旧サーバーからグローバルIPアドレスを外して、新サーバーにつければダウンタイムなしでサーバーのアップデートができます。

ここで、ポイントなのが、<VirtualHost :80>の部分のにプライベートIPアドレスを入れるということです。
私は、ここにグローバルIPアドレスを入れてしまい、表示されずに「何故だーーーーーーーーーー??」と分かるまでに小一時間かかってしまいました。
みなさんの参考になれば幸いです。


Previous: 誰にも教えたくない企業キャラクターの作り方 Next: 海外から移住してきた、新人webデザイナー!

© 2017 ALL CONNECT Inc. All Rights Reserved.