OpenStackのDashboard (Horizon)のセッションタイムアウトを変更する

/etc/openstack-dashboard/local_settings.pyのSESSION_TIMEOUT変数を秒単位で設定する。

例:タイムアウトを365日にする。このファイルは、Python scriptの一部なので下記のようにPythonの式を用いることも可能。
SESSION_TIMEOUT = 3600 * 24 * 365
※実際は、他にも制限があるようで、上記の設定をしても数十分程度でやはりタイムアウトする。

LinuxでのGRE tunnelの作り方・削除方法

追加(青字の部分は任意のトンネル名)の例。
# ip tunnel add tunne_name mode gre remote 192.168.254.11 local 192.168.254.1 ttl 255
削除
# ip tunnel del tunne_name 


また、L2インターフェイスであるgretapも以下のように作成可能。key <数値>をコマンドライン中に追加して、同じホストに対して複数のトンネルを作成することも可能。
# ip link add gretap10 type gretap remote 192.168.254.11 local 192.168.254.1 key 10
参考:物理インターフェイスがアップした後、自動的にトンネルを作る例(Ubuntu: /etc/network/interfaces)
auto eth0
iface eth0 inet static

 ....

  post-up ip link add gretap3011 type gretap remote 192.168.254.11 local 192.168.254.1 key 3011
  post-up ip link set dev gretap3011 up mtu 1500
  post-down ip link del name gretap3011

Ubuntu 14.04でDNSサーバやドメインを設定する。

/etc/network/interfaceのネットワークインターフェイスの設定に次のdns-から始まる設定を行う。
auto br0
iface br0 inet static
  address 192.168.1.10
...
  dns-nameservers 192.168.1.2
  dns-search banana
  dns-domain banana

OpenStackのglaceでコマンドラインでイメージを登録する例。

glance image-create --name ubuntu14-14.04.1-server --disk-format=raw --container-format=bare --is-public True --copy-from https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img

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