貧乏人のための仮想環境
貧乏性の私は、どうもVMWare等の完全仮想化のソフトウェアはリソースがもったいなくて、積極的には使う気になれない。あくまでテスト環境として使う程度だ。100ノードぐらいのhadoopクラスタをKVM上に構築したいという野望もあるけれど、100ノードも立ち上げるだけのハードウェアがない。そういう時の、Amazon EC2かも知れないが。。
時間単位でちまちま金を払うのは、貧乏臭くていやだ!
「金がないなら知恵を出せ。知恵がないなら汗をかけ。」
ということで、冷汗をかきながら、LXCを使って、コンテナ型の仮想環境を構築したいと思う。コンテナ型の仮想環境の説明は、ここが詳しい。
いきなり実環境で、LXCを試すのは、怖かったので、Ubuntu 11.04上のVirtualBoxにUbuntu Server 11.04 を構築して、その上で試してみた。しばらく使ってみて、慣れてきたら、ホストOS上で直接、LXCのコンテナを10ぐらい立ち上げてHadoopやCloudFoundryの環境を構築したいと思う。
以下、LXCの構築手順の備忘録。
基本的には、ここの手順を参考にした。
LXCのインストール
・面倒なので、まずrootになってしまう
$ sudo -i
・インストール
# apt-get update && apt-get install lxc debootstrap bridge-utils dnsmasq
・cgroupの作成
# mkdir /cgroup # mount -t cgroup none /cgroup # echo "none /cgroup cgroup defaults 0 0" >> /etc/fstab
・ネットワーク設定
# vi /etc/network/interfaces auto br0 iface br0 inet static address 192.168.5.1 netmask 255.255.255.0 network 192.168.5.255 post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE post-up sysctl -w net.ipv4.ip_forward=1 pre-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE pre-down sysctl -w net.ipv4.ip_forward=0 bridge_ports none bridge_stp off
参考にしたページでは、192.168.3.*のネットワークを使っていたが、たまたま、192.168.3.*のネットワークは使っていたので、192.168.5.*を使うことにした。
また、再起動しても設定が消えないようにした。
# vi /etc/dnsmasq.conf domain-needed bogus-priv interface = br0 listen-address = 127.0.0.1 listen-address = 192.168.5.1 expand-hosts domain = containers dhcp-range = 192.168.5.50,192.168.5.200,1h # vi /etc/dhcp3/dhclient.conf prepend domain-name-servers 127.0.0.1; prepend domain-search "containers."; # dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0 # service dnsmasq restart
・/etc/dhcp/dhclient.confの修正
ホストOSがDHCPクライアントの場合、resolv.confを書き換えるため、/etc/dhcp/dhclient.confに以下の設定を追加する。
prepend domain-name-servers 192.168.5.1;
以下のようになる
# cat /etc/resolv.conf nameserver 192.168.5.1 nameserver 192.168.3.1
・lxc-ubuntuの取得
# wget -O lxc-ubuntu http://bit.ly/ec2ubuntulxc # chmod +x lxc-ubuntu
元ページからスクリプトを拝借
・新規コンテナの作成
# ./lxc-ubuntu -p /mnt/vm0 -n vm0
結構時間がかかる。いろいろダウンロードしている模様。
・コンテナの起動
# lxc-start -n vm0 -d
・コンテナへ接続
# ssh root@vm0
デフォルトのrootパスワードは、root