[Debianセットアップ]OpenVZを使う
Debian 環境セットアップ


VPSがメジャーな技術となってきた今、サーバホスティング業界は争うようにVPS(仮想専用サーバ)のサービスを展開しています。実際、これまでのホス ティングサービスでは自由度がないし、でも専用サーバだと値段が費用負担が大きすぎるし、電源容量(熱量)アップも大変といったユーザーが、どんどん移っ ていっているようです。

VPSは多少の制約はあったとしても、かなり専用サーバに近く、自由にサーバサービスを設計できるところに人気があります。 また、ホスティングの面だけではなく、これまで複数に拡散したサーバーを物理的な一台にまとめるにも大変有効な使い方なのです。

サーバリソース(CPU、メモリなど)は絶えず使われていないけれども、ある一時には十分な能力が必要なサービスがあったとしよう。
これまでなら十分なキャパシティのあるマシンを1台ずつ割り当てていきましたが、サービスが使われる時間が異なるなど、リソースの利用に競合が発生しない場合は、なるべくサービスをまとめたいと考えますよね。

た だサービスをまとめたいだけであれば、1台のサーバに複数のサービスを稼動させればいいのですが、セキュリティの面や、アクセス権限をより細かく 設定したい場合、サービスごとの固定IPが必要な場合など、いろいろな要件が絡んできてVPSが一番いいということになります。


ただし、仮想化には問題点がないわけではありません。
サービスをいっぱい共有するのだから、負荷を高めあったときはいずれかのサーバサービスが止まってしまうこと だってあり得ます。
でも、これはキャパシティの問題なので、そういう事象が発生してから、サービスを移してもいいように最近のVPSは考えられているのです。

VPSの 中には仮想マシンを動作させたまま、OSとアプリケーション、データをそのまま他のサーバーに移動できる機能(ライブ・マイグレーション機能)を備えるも のがある。これの機能を使うことによって、簡単に別のハードウェアにそのままサービスを移すことができるのです。

なんとも素晴らしい!

 

自由にサービスを物理サーバ間で移動できるとなると、設計時からサーバスペックにかなりの余裕を持たせて構築する必要はありませんよね。
サービスを提供 していくうちに、ハードウェア環境の見直しはこれまでも必ず必要となったわけだから、ハードウェアの増強の前に物理サーバを比較的簡単に移動できるメリッ トは本当に高いと思います。
今はOSの一部の機能として使っている仮想化技術ですが、近いうちに仮想化が標準装備されるのは間違いないでしょうね。


仮想化技術の分野では、XenやVMWareが有名ですが、ここでは個人的に興味のあるOpenVZをインストールしてみます。
OpenVZはVirtuozzo(商用版)のオープンソース版で、誰でも利用することができます。 Virtuozzoの場合、以前はRedHatや TURBOといった商用 Linuxしかサポートしていませんでしたが、オープンソースとなることで、テンプレートファイルが提供されるようになっています。

今回はDELLのPowerEdge850がフリーとなっていたので、このサーバにインストールを行いました。 最初にOSのインストールだが、DELLのPowerEdgeの場合、周辺ドライバ内包したインストーラーは、Debianの公式サイトでは提供されてい ないため、いつも下記のサイトからダウンロードしていた。
Debian on Dell Servers
http://wiki.osuosl.org/display/LNX/Debian+on+Dell+Servers

このインストールCDイメージは、SATAやPERC4/DiのRAIDドライバも内包しているのでPowerEdgeのほとんどの構成で利用できる。そ のため、これまでも多くのDELLサーバのインストールに利用させて頂きました。カーネルのバージョンは、2.4.31です。

しかし、OpenVZの場合は、カーネル2.6.9以上が必要ということで、武藤 健志さんが提供されている2.6系のカーネルを利用させて頂くことにしました。
http://kmuto.jp/debian/d-i/ 

また、2006.11.08時点では、ovzkernel-2.6.9とovzkernel-2.6.16が存在したが、このマシンの場合、 ovzkernel-2.6.9ではディスクを認識することができなかったので、ovzkernel-2.6.16とOSのカーネルも2.6.16をイン ストールすることにしています。

【追記】2007.03.23には「kernel 2.6.18 028stab023.1」がリリースされています。


Debian 環境セットアップ

インストール手順


(1)Debianのインストール
インストールCDイメージから作成したCDで、マシンを起動します。
Sarge (Debian GNU/Linux 3.1)になってからは、Debianでもインストーラーが大幅に変更され、とてもインストールが簡単になりました。GUIもすべて日本語なので、ほとん ど迷うことがありません。(Woodyのときは結構、面倒でしたが..。)

・パーティションの作成
OpenVZを最初から導入することを考えると、基本のOS部と仮想OS部というわけ方になってきます。基本のOS部ではサービスをほとんど実行しないの で、swap部と/var部以外は一つのパーティションとします。残りはすべて仮想OS部に割り当てます。(/vz)
----------------------------------------------
hda3 boot
4096MB
/
hda5 SWAP
3072MB
 
hda6  
20480MB
/var
hda7  
65000MB
/vz

・ネットワーク設定
ネットワーク設定とりあえずDHCPでもOKですが、どうせ固定IPで使うので、staticで設定。
後からIPを変更する場合は、/etc/network/interfacesを変更します。

# vi /etc/network/interfaces (下記は固定IPの例)
----------------------------------------------
iface eth0 inet static
  address 192.168.1.10
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
auto eth0

・DNSを設定
これもとりあえずでもOKですが、最初から参照ネームサーバが分かっていれば、事前に設定します。
後からDNSを変更する場合は、/etc/resolv.confを変更します。

# vi /etc/resolv.conf (下記はDNS設定の例)
----------------------------------------------
nameserver 192.168.1.2
nameserver 192.168.10.2


(2)最低限必要なサービスをインストールする
最低限必要なのは、SSHとFTPDのみ。
この2つさえあれば、リモートからサーバをコントロールできるので、2つをインストールした時点でサーバコンソールから離れて、自分のパソコンから設定ができるのでとても楽になります。

昔は直接コンパイルしていましたが、最近パッケージのバージョンも上がってきているので、今回はパッケージからインストールします。


・ProFTPD 1.2.10のインストール

# apt-get install proftpd
# mkdir /var/log/proftpd (ログ出力のためのディレクトリを切っておく。)


・OpenSSHのインストール

# apt-get install ssh
設定中にいくつか質問されるが、特別理由がない限りデフォルトでOK。


標準インストールではSSHでログインするために証明書が必要になりますが、まだ設定していないので、パスワードによる認証でもログインできるように変更します。

# vi /etc/ssh/sshd_config
----------------------------------------------
PasswordAuthentication no→yes (とりあえずパスワードログインOKに)


adduserでユーザが作ってあれば、これでSSHでログインできるはず。
但し、これは暫定設定なので、サーバを外部に出す前までには、PasswordAuthentication noに戻す必要があります。


(3)OpenVZのインストール準備
まずはネットワークからインストールするための準備を行なう必要があります。
・debianパッケージを追加するために、sources.listを編集。


# vi /etc/apt/sources.list
----------------------------------------------
deb http://debian.systs.org/ stable openvz  (の記述を追加)


# apt-get update (sources.listを変更した場合は、必ず情報を更新)


※Debianでは既にOSテンプレートをパッケージで提供しているため、特に独自にダウンロードする必要はなくなりましたが、必要な場合は  http://download.openvz.org/template/precreated/ よりダウンロードすることができます。
ファイル名はdebian-3.1-i386-minimal.tar.gz

apt-getコマンド の使い方はこちら


このファイルをopenVZの[INSTディレクトリ]/template/cache下にそのまま配置することで、仮想OSが展開できるようになります。(今回は配置しない:自動的に配置されるので)


(4)OpenVZのインストール
前述したように、カーネル2.6.16をインストールします。

# aptitude install ovzkernel-2.6.16 vzctl vzquota vzctl-ostmpl-debian

# /sbin/update-grub (grubの設定を更新する)
# reboot

これで立ち上がってこれば仮想化の準備はすべてOKということになります。

【追記】2007.03.23時点で 「ovzkernel-2.6.18」がリリースされていました。

(5)バーチャルサーバの設定変更
めでたくサーバーが立ち上がってきたら、OpenVZの設定を少し変更することにします。

# vi /etc/vz/vz.conf
----------------------------------------------
VE_ROOT=/var/lib/vz/root/$VEID → /vz/root/$VEID(バーチャル用のパーティションに割り当て)
VE_PRIVATE=/var/lib/vz/private/$VEID → /vz/private/$VEID(上に同じ)


# vi /etc/vz/conf/ve-vps.basic.conf-sample 規定値ではディスク容量が少なすぎるので変更する。
----------------------------------------------
DISKSPACE="1572864:1730151" (例では、ディスク容量を1.5GBに設定した状態)


(6)バーチャルサーバの新規構築
あとはテンプレートを使って新しいサーバを設定するだけです。

# vzctl create 101 --ostemplate debian-3.1-i386-minimal --config vps.basic
(上記ではdebian-3.1-i386-minimalのテンプレートを使って、サーバを構築する設定である。)
# vzctl set 101 --hostname VS001 --save (ホスト名の設定)
# vzctl set 101 --ipadd 192.168.1.20 --save (IPアドレスの設定)
# vzctl set 101 --nameserver 61.197.1.2 --save (DNSの設定)
# vzctl set 101 --onboot yes --save (自動起動を可能にする)


これだけで、VS001というサーバができてしまいます。

(7)バーチャルサーバの起動・停止
バーチャルサーバの起動は、マスターのコンソールから下記を入力するだけでOK

# vzctl start 101 (起動)
# vzctl stop 101 (停止)
# vzctl restart 101 (リスタート)

vzctl startを実行するとすぐにスターティングのメッセージが表示され、サーバプロセスが立ち上がります。外部の端末から確認すると新しいIPでサーバが立ち上がっていることがわかります。

ちなみにバーチャルサーバー起動状況の確認は下記のコマンドで確認できます。

# vzlist


また、コンソールからバーチャルサーバにログインするには、次のように入力します。

# vzctl enter 101



バーチャル環境が一つだけなら問題ないのですが、複数立ち上げるようになると、どのバーチャルサーバを触っているのか混乱することがあります。私もずいぶん混乱した。(笑) 
混乱を避けるためにも、バーチャルサーバには別々のSSHでログインしたほうが、いいかもしれませんね。