OpenVZ on Debian: インストール
先日 OpenVZ プロジェクト よりアナウンスされていた 公式の Debian wheezy 向けパッケージ について、 先日の記事 でぜひ使ってみたいと書いてしまったので、実際に使ってみました。
これからしばらく、Debian squeeze 時代の OpenVZ では使えなかった新しい vzctl 4.5 とか ploop に VSwap といった新機能の使い方や感想をまとめていきたいと思います。
ということで最初はインストールとコンテナの作成についてです。
インストール
基本的にはこちらのページの手順に沿って進めます。
Debian wheezy のインストール
まず最初に Debian wheezy をインストールします。アーキテクチャは amd64 にしてください。 i386 でもパッケージは用意されているようですが、サポートされていないようなので気をつけてください。
OpenVZ のコンテナ仮想化は軽量なので KVM や VirtualBox といった仮想マシンの上で使うことをおすすめします。 さくらの VPS のような商用サービスにインストールするのもよいと思います (参考: さくらの VPS で OpenVZ を使う )。
本気で使う気になったら、パフォーマンスを追求するために物理サーバに直接インストールしてもいいでしょう。その場合は RHEL6 カーネルがサポートするハードウェアについて調べてください。
パーティション設定について: Debian の OpenVZ はデフォルトでは /var/lib/vz
にコンテナのファイルシステムを格納します。実運用ではこの領域はシステムとは異なるパーティションに置いたほうがいいでしょう。その場合パーティションは ext4 ファイルシステムを使い /srv/vz
にマウントすることをおすすめします。
この記事では筆者が KVM の仮想マシンに新規インストールした Debian wheezy ホストを実行例の環境としています。ホスト名は kvz02 で IP アドレスは 10.10.0.237/24 です。またコンテナ領域として /srv/vz
を使用しています。
パッケージのインストール
最初に /etc/apt/sources.list.d/openvz.list
というファイルを作り OpenVZ リポジトリの apt-line を追加します。
# deb http://download.openvz.org/debian wheezy main deb http://download.openvz.org/debian wheezy-test main
OpenVZ プロジェクトのリポジトリには wheezy と wheezy-test の 2 つがありますので、そのどちらかを選択します。
wheezy には安定版の RHEL6 カーネルパッケージしか入っていません。 wheezy の vzctl 3.0.30 パッケージ を使い、これまでの squeeze の OpenVZ と変わらない運用をしたい場合はこちらを使えばいいでしょう。
wheezy-test にはより新しいカーネルや vzctl 4.5、 ploop などのユーザ空間ツールを含むリポジトリです。OpenVZ の最新機能を試したい場合はこちらを選択してください。
次にリポジトリの公開鍵をインストールし、カーネルとユーザ空間ツールのパッケージをインストールします。
root@kvz02:~# wget http://ftp.openvz.org/debian/archive.key root@kvz02:~# apt-key add archive.key root@kvz02:~# apt-get update root@kvz02:~# apt-get install linux-image-openvz-amd64 root@kvz02:~# apt-get install vzctl root@kvz02:~# apt-get install ploop parted vzstats (wheezy-test のみ)
parted パッケージは ploop が正しく動作するために必要です。
vzstats パッケージは http://stats.openvz.org/ にホストの情報を送るものです。統計に参加したくない場合はインストールしないでください。
コンテナ領域の設定
/var/lib/vz
ではなく /srv/vz
などのディレクトリにコンテナを格納する場合、
/var/lib/vz
の中身を /srv/vz
にそのままコピーしておきます。
root@kvz02:~# cp -a /var/lib/vz/* /srv/vz
その後 /etc/vz/vz.conf
を編集して 5 箇所の /var/lib/vz/...
を /srv/vz/...
に書き換えます。編集を間違えると正しく動作しなくなりますので注意してください。
sysctl の設定
/etc/sysctl.d/local.conf
というファイルを作り OpenVZ に必要な設定を書きます。
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0
ブートローダ (GRUB) の設定
最後にブートローダ (GRUB) の設定をします。カーネルパッケージをインストールしたままでは OpenVZ の RHEL6 2.6.32 カーネルではなく wheezy の 3.2.0 カーネルで起動してしまうので、事前に /etc/default/grub
の GRUB_DEFAULT
を次のように設定しておきます。
GRUB_DEFAULT=saved
編集したら次のコマンドを実行して /boot/grub/grub.cfg
を再生成します。
root@kvz02:~# update-grub
ここでシステムをリブートします。 GRUB のメニューでは次のような 2.6.32-openvz カーネルを選んで起動してください。
Debian GNU/Linux, with Linux 2.6.32-openvz-042stab082.6-amd64
ここで選択したカーネルがデフォルトになりますので、次回以降の起動では明示的にカーネルを選択する必要はなくなります。
コンテナの基本操作
参考: http://openvz.org/Basic_operations_in_OpenVZ_environment
概要
OpenVZ コンテナの操作には root 権限で vzctl
コマンドを使います。基本的な構文は次のとおりです。
- コンテナ作成:
vzctl create CTID --ostemplate OSTEMPLATE
- コンテナ削除:
vzctl destroy CTID
- コンテナ設定:
vzctl set CTID --save --hostname HOSTNAME --ipadd a.b.c.d --nameserver a.b.c.d
- コンテナ起動:
vzctl start CTID
- コンテナ停止:
vzctl stop CTID
- コンテナシェル起動:
vzctl enter CTID
CTID はコンテナを識別する整数値です。 CTID 100 まではシステムに予約されていますので 101 以降の任意の数字を選んでください。
また vzctl
による設定では、コンテナの IP アドレスおよびネームサーバは静的に与える必要があります。他のホストからもアクセス可能にするには、同じサブネットに属する IP アドレスを指定してください。
OSTEMPLATE にはコンテナのファイルシステムに展開するテンプレートの名前を指定します。テンプレートの実体は /etc/vz/vz.conf
で指定した $TEMPLATE
ディレクトリ (既定は /var/lib/vz/template/cached/
) の .tar.gz
ファイルです。
新しい vzctl
にはテンプレートの自動ダウンロード機能があり、初期設定では http://download.openvz.org/template/precreated/ にあるテンプレートが自動ダウンロードできるようになっています。使えるテンプレートの一覧は vztmpl-dl
コマンドにより調べられます。
root@kvz02:~# vztmpl-dl --list-remote centos-5-x86_64-devel centos-5-x86_64 centos-5-x86-devel centos-5-x86 centos-6-x86_64-devel centos-6-x86_64 centos-6-x86-devel centos-6-x86 debian-6.0-x86_64 debian-6.0-x86 debian-7.0-x86_64 debian-7.0-x86 fedora-18-x86_64 fedora-18-x86 fedora-19-x86_64 fedora-19-x86 scientific-6-x86_64 scientific-6-x86 suse-12.2-x86_64 suse-12.2-x86 suse-12.3-x86_64 suse-12.3-x86 ubuntu-10.04-x86_64 ubuntu-10.04-x86 ubuntu-12.04-x86_64 ubuntu-12.04-x86 ubuntu-12.10-x86_64 ubuntu-12.10-x86 ubuntu-13.04-x86_64 ubuntu-13.04-x86
操作例
ということで、テンプレートのひとつを選んでコンテナを作り、ホスト名とネットワークの設定をしてみましょう。
root@kvz02:~# vzctl create 1100 --ostemplate ubuntu-13.04-x86_64 ... Creating container private area (ubuntu-13.04-x86_64) Performing postcreate actions CT configuration saved to /etc/vz/conf/1100.conf Container private area was created root@kvz02:~# vzctl set 1100 --save --hostname raring64 --ipadd 10.10.0.100 --nameserver 10.10.0.1 CT configuration saved to /etc/vz/conf/1100.conf
コンテナの作成と設定ができたら vzctl start
でコンテナを起動します。
root@kvz02:~# vzctl start 1100 Starting container... Container is mounted Adding IP address(es): 10.10.0.100 Setting CPU units: 1000 Container start in progress...
コンテナの稼働状況は vzlist
で確認できます。
root@kvz02:~# vzlist -a CTID NPROC STATUS IP_ADDR HOSTNAME 1100 22 running 10.10.0.100 raring64
vzctl enter
でコンテナ内の root ユーザのシェルが起動できますので、インストールされているパッケージやネットワークの確認をしてください。
ついでに ssh でリモートログインするためのユーザを作り、あとはそれを使って作業するのがいいと思います。
root@kvz02:~# vzctl enter 1100 entered into CT 1100 root@raring64:/# adduser yaegashi root@raring64:/# adduser yaegashi sudo root@raring64:/# exit logout exited from CT 1100 root@kvz02:~# ssh yaegashi@10.10.0.100
コンテナを止めるには vzctl stop
とします。
root@kvz02:~# vzctl stop 1100 Stopping container ... Container was stopped Container is unmounted
次のようにすると、ホストシステムの起動時に自動的にコンテナも起動するようになります。
root@kvz02:~# vzctl set 1100 --save --onboot yes CT configuration saved to /etc/vz/conf/1100.conf
コンテナが不要になったら、コンテナを停止させた上で vzctl destroy
で消去できます。このとき一切確認は出ませんので注意してください。
root@kvz02:~# vzctl destroy 1100 Destroying container private area: /srv/vz/private/1100 Container private area was destroyed
vzctl
によるコンテナ設定は /etc/vz/conf/1100.conf
のようなファイルに保存されており、直接編集してもかまいませんが、通常は vzctl
を使うほうがよいと思います。詳しくはマニュアルページ vzctl や ctid を参照してください。
まとめ
この記事では Debian wheezy で OpenVZ のインストールからコンテナの起動までをやってみました。
インストール手順は OpenVZ プロジェクトの apt-line を加える手順が増えたことを除けば、 Debian squeeze 時代から変わりがありませんでした。これなら既存の Debian squeeze システムからの移行もすんなりいけそうですが、実際にはコンテナのバックアップをとった上で慎重に進める必要があるでしょう。
コンテナ作成は vzctl 4.5 のテンプレートダウンロード機能によって事前にテンプレートをダウンロードしておく手間がなくなり、非常に手軽に始められるようになっています。ダウンロード元は /etc/vz/download.conf
で設定できるので、自分のサイト用のテンプレートを作って web サーバに置いておくとよさそうです。
次回は注目の新機能 ploop や vswap について調べてみたいと思います。
2013/10/27 22:25:00 JST