Ubunt13.10へクラウドのOpenStack (havana)をNIC2枚のサーバーへインストール
クラウドというとまずAmazonWebService(AWS)をまず思い浮かべます。私も現在利用しています。
これを自前のサーバーで構築するためのオープンソースのクラウドがいくつかありますが、OpenStackはそのうちの1つです。
現在は2013/10/17リリースのHavana(約400の新機能)が最新となっています。
OpenStackは6ヶ月ごとのリリースサイクルをとっているので次は2014/04の予定
OpenStackのWeb管理画面はAWSに似てるのでAWS利用者には分かり易く取っ付きやすくなってます。
しかし、私がテストした環境では複数のVMを起動し外部との通信もでき、ロードバランサでhttpを振り分けるといったような動作をできるところまで構築するには至りませんでした。
主にネットワーク周りの自動構築が不完全なようで、まだまだ発展途上で敷居が高いように感じます。
ロードバランサを使わないで良い環境なら、高機能なネットワーク機能のneutronを使わないで、単純なネットワーク機能のnova-networkを使う方法なら複数のVMを起動し外部との通信も問題なく動作しました。この記事ではこの方法を解説します。
テスト環境は1台のサーバーへオールインワンで構築します。NICは2枚のっています。管理サーバーとなるためここではマネージメントサーバーと呼びます。
ManagedServer(マネージドサーバー)マシンのHWスペック
HP ProLiant DL380 G5 (発売時期:2010/09) | |
CPU | XEON L5420 2.5GHz * 2 (2P/8C) |
MEMORY | 16GB (2GB*8) |
HDD | 146GB(SAS72*2 RAID0) |
NIC | gigabit*2 (NetXtreme II BCM5708) |
消費電力 | 280w/待機時22w (ワットチェッカーにて計測) |
OSインストール:Ubuntu13.10
OSのインストールは普通のインストール手順とほぼ同じですが、openstackが利用するLVMのstack-volumesを事前に切り分けておくのがポイントです。
- ホスト名 : managed
- ユーザ名 : stack
- DISKパーティション : 手動で先頭から次のように割り当てる
- 256MB : ext2 /boot
- 38GB : lvm
- VG : managed-vg
- LG : root 30GB ext4 /
- LG : swap 8GB swap
- VG : managed-vg
- 108GB(残り全部) : lvm
- VG : stack-volumes
- ソフトウェア選択 : OpenSSH Serverのみ選択
ネットワーク設定
eth0をローカルIPでの内部通信や管理用とし、eth1をグローバルIPでの外部接続用として構築します。
ただし実際に割り当てれるグローバルIPを持っていないため、内部LANのIP帯(192.168.0.0)をグローバルIPと仮定してテスト環境を構築します。そのため管理用のローカルIPは内部LANのIP帯とは別のIP帯(172.24.4.0)を利用することにします。
- eth0 : 172.24.4.10
- eth1 : 192.168.0.219
※このネットワーク設定はroot権限で行います
インターフェイス設定
cat << _EOF_ > /etc/network/interfaces
auto lo
iface lo inet loopback
# Internal Network
auto eth0
iface eth0 inet static
address 172.24.4.10
netmask 255.255.255.0
# External Network
auto eth1
iface eth1 inet static
address 192.168.0.219
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 8.8.8.8
_EOF_
ホスト名設定
cat << _EOF_ > /etc/hostname
managed
_EOF_
hosts設定
cat << _EOF_ > /etc/hosts
127.0.0.1 localhost
172.24.4.10 managed.winkey.jp managed
_EOF_
ipv6無効+フォワード有効
cat << SYSCTL | tee -a /etc/sysctl.conf > /dev/null
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.ip_forward=1
SYSCTL
sysctl -p
再起動
ネットワーク設定を安全に設定反映するために再起動reboot
パッケージを最新にアップグレード
apt-get update
apt-get upgrade -qqy; apt-get dist-upgrade -qqy
sudoとgitのパッケージをインストール
OpenStackのインストールで使うdevstackにて利用するのでsudoとgitのパッケージを事前にインストール。
apt-get install sudo git -y
stackユーザー権限でsudoをパスワード無しで利用できるように設定します。echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers