Ubuntu 14.04 LTS上のLXCコンテナにOpenStackをインストールする

テスト目的などで、手元のマシン1台にOpenStackをインストールしたいことがある。その際、computerノード、networkノード、computeノードを分けて作成し、なるべく本番に近い構成を作成したい場合もあるだろう。 ホストマシンがUbuntu 14.04なら、このような要求をLXCを使う事で実現できる。 KVMなどを完全仮想化の方法と比べ、ディスクやI/Oスループットの低下を抑制でき、メモリのなどのリソースが最大限活用できる利点がある。

ホストマシンの設定

ホストマシンに以下のカーネルモジュールをロードしておく。起動時に自動的にロードされるようにするには、/etc/rc.localに記載する。
modprobe openvswitch
modprobe kvm
modprobe vhost_net
modprobe nbd
modprobe ip6table_filter
また、NTPサーバーをホストで動かす。各コンテナへのインストールは不要。


コンテナの作成

基本的には、Ice Houseであれば、以下の手順にしたがってインストールすればOKであるが、下記マニュアル以外で必要な設定などを本節で補足する。 http://docs.openstack.org/icehouse/install-guide/install/apt/content/ch_preface.html

構成

ここでは上記のドキュメントと同じく、次の3つのコンテナを作成するものとする。
  • controller
  • network
  • compute1

また、上記ドキュメントの3つのネットワークに対応する3つのブリッジをホストマシンに作成する。
  • mngbr0 管理用 
  • databr0 データ用(仮想マシンが使用するネットワーク)
  • extbr0 外部接続用 
ブリッジの作成方法についてはここを参照。

controllerの設定

このマシンは、mngbr0に接続するので、/var/lib/lxc/controller/configのネットワーク部を次のように設定する。
# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = mngbr0
あとは、公式マニュアルどおりでOK。

networkの設定

/var/lib/lxc/controller/configのネットワーク部を次のように設定する。また、AppArmorの制限をはずしておく。これは、Network namespaceを使用するために必要。また、MTUを1550にしているのは、GREトンネルによるパケット分割の問題を回避するため。コンテナ上の/etc/network/interfacesにもmtu 1550の設定が必要。
# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = mngbr0

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = databr0
lxc.network.mtu = 1550

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = extbr0

lxc.aa_profile = unconfined
次のパッケージをインストールする
# apt-get install iptables

compute1の設定

このマシンは、mngbr0とdatabr0に接続するので、/var/lib/lxc/controller/configのネットワーク部を次のように設定する。
# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = mngbr0

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = databr0
lxc.network.mtu = 1550

公式ドキュメントの”Configure a compute node”の項番2(# dpkg-statoverrideの実行をする節)をスキップする。

novaパッケージをインストールをインストールした際にできる/etc/init/nova-compute.confのmodprobe nbdをコメントアウトする。
--- a/tmp/nova-compute.conf
+++ b/etc/init/nova-compute.conf
@@ -14,7 +14,7 @@ pre-start script
   mkdir -p /var/lock/nova
   chown nova:root /var/lock/nova/
 
-  modprobe nbd
+  #modprobe nbd
 
   # If libvirt-bin is installed, always wait for it to start first
   if status libvirt-bin; then
デバイスファイルを作成する。
# mknod /dev/kvm c 10 232
# chmod 666 /dev/kvm
# mkdir -p /dev/net
# mknod /dev/net/tun c 10 200

0 件のコメント: