FreeBSDでサーバの仮想化技術「jail」を使った複数ドメインでの運用

 複数ドメインを一台のサーバで扱う場合Apacheのバーチャルホスト機能を利用したホスティングがメジャーだが、サーバの仮想化技術が進歩しいろいろなサービスが実現できてきている。どうせなら仮想化技術を使い以下の環境を作りたいと考えている。

  • 複数ドメイン運用
     コンテンツが増えるとそれに合った専用のドメイン名があるとわかりやすい。コンテンツごとのドメイン化
  • サーバアプリの分散
     セキュリティ面から各種サーバを分離させる(Bind,Apache,Mysqlなど)
  • テスト環境の構築
     各種バージョンでの動作テストやCMSなどのテスト用として

 こちらでやってみたのはこんなところである。


ロリポップならMovableType設置マニュアルも充実。
あなたも月々263円でブログデビューしてみよう!!

ブログをはじめる

サーバの仮想化技術(jailを含む)について

 ezjailの参照元:

インストール環境:
 FreeBSD6 + ezjail-2.0.1

portsを使ったインストール

# cd /usr/ports/sysutils/ezjail
# make install clean ;rehash

意外にもすぐに処理が完了する。

cp -p /usr/local/etc/ezjail.conf.sample /usr/local/etc/ezjail.conf 

ezjail.confの編集

デフォルトと違う使い方をしたい場合は、以下を適切に変更する。
当方の場合は以下のとうり

# ezjail.conf - Example file, see ezjail.conf(5)
#
# Note: If you alter some of those variables AFTER creating your first
# jail, you may have to adapt /etc/fstab.* and EZJAIL_PREFIX/etc/ezjail/* by
# hand
# Location of jail root directories
#
# Note: If you have spread your jails to multiple locations, use softlinks
# to collect them in this directory
# ezjail_jaildir=/usr/jails
# Location of the tiny skeleton jail template
# ezjail_jailtemplate=${ezjail_jaildir}/newjail
# Location of the huge base jail
# ezjail_jailbase=${ezjail_jaildir}/basejail
# Location of your copy of FreeBSD's source tree
# ezjail_sourcetree=/usr/src
# In case you want to provide a copy of ports tree in base jail, set this to
# a cvsroot near you
# ezjail_portscvsroot=:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs
# This is where the install sub command defaults to fetch its packages from
# ezjail_ftphost=ftp.freebsd.org
# base jail will provide a soft link from /usr/bin/perl to /usr/local/bin/perl
# to accomodate all scripts using '#!/usr/bin/perl'...
# ezjail_uglyperlhack="YES"
# Default options for newly created jails
#
# Note: Be VERY careful about disabling ezjail_mount_enable. Mounting
# basejail via nullfs depends on this. You will have to find other
# ways to provide your jail with essential system files
# ezjail_mount_enable="YES"
# ezjail_devfs_enable="YES"
# ezjail_devfs_ruleset="devfsrules_jail"
# ezjail_procfs_enable="YES"
# ezjail_fdescfs_enable="YES"

#のコメントアウトを削除し有効にした(変更箇所)。

ベースシステムの構築

# ezjail-admin update

この処理はかなり時間がかかるので気長に待つとしよう。

HOST 環境の設定

# ifconfig xxx inet 192.168.xxx.xxx netmask 255.255.255.255 alias

xxx :始めに"ifconfig"にて確認!!
ネットワーク インターフェイスのホスト名(ネットワークアダプタNICのハードによって異なるため自分の環境に適した値を入力)

192.168.xxx.xxx :jail環境で使用するIPアドレスを入力

/etc/rc.confの編集

# vi /etc/rc.conf
inetd_flags="-wW -C 60 -a 192.168.xxx.xxx"
ezjail_enable="YES"
ifconfig_xxx_alias0="inet 192.168.xxx.xxx netmask 255.255.255.255"

192.168.xxx.xxx :host環境のIPアドレス
xxx :ネットワーク インターフェイスのホスト名
192.168.xxx.xxx :jail環境で使用するIPアドレス

/etc/sysctl.confの編集

# vi /etc/sysctl.conf
security.jail.allow_raw_sockets=1

/etc/ssh/sshd_configの編集

# vi /etc/ssh/sshd_config
ListenAddress 192.168.xxx.xxx

192.168.xxx.xxx :host環境のIPアドレス

jail 環境の構築

# ezjail-admin create xxx 192.168.xxx.xxx

xxx :JAILNAME(任意)
192.168.xxx.xxx :jail環境で使用するIPアドレス

# /usr/local/etc/rc.d/ezjail.sh start

当方の場合うまく起動しなかったので、ここで一旦サーバを再起動した。

動作確認

  • /var/run/jail_JAILNAME.id
    *数字が入っていればOK
  • /usr/jails/JAILNAME/var/log/console.log
    * jail 環境のスタートアップログが収められている

ここまでで、jailが動作可能となったこととなる。

これ以降は引きつずき、
 -FreeBSDのサーバの仮想化技術「ezjail」で構築したjail環境の設定- でjail環境の設定から説明する。