==============================
環境
- CentOS 6.5
- 物理サーバ(NIC2枚)
Overview
Openstackを社内プライベートクラウドとして構築したのでインストールのメモを残します。
検証も兼ねているのでオールインワン構成です。
構築後イメージ
Requirements
- サーバ (Xeon 32CPU, mem 128G, HDD 120G, public用NIC, private用NIC)。
出来ればベアメタルがいいです。仮想環境上だとNeutron等ネットワーク周りで躓く可能性が高いです。
Installation
インストールにはRedhatが提供しているRDO Packstackを使います。
日々更新されていてblackbox的な部分もあるのでこれをそのまま本番環境に適用出来るか分かりませんが検証、評価用途ならこれで十分です。
- disable SELinux
# Permissive
setenforce 0
- カーネルパラメータの変更
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
- カーネルパラメータ読み込み
sysctl -p
- packstackのインストール
yum update
yum install https://rdo.fedorapeople.org/rdo-release.rpm
yum install openstack-packstack python-netaddr
- 設定を反映させるためマシンの再起動
shutdown -r now
- 公開鍵ログイン設定
packstackは対象ホストにssh経由でインストールを実行するのでパスワード入力なしでログイン出来る用にする必要がある。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- packstackの実行
packstack --allinone --install-hosts=192.168.33.10
- 外部向けOVSブリッジインターフェースの設定
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.192
xxx.xxx.xxx.xxx
にはパブリックネットワーク用NICのIPアドレスを設定する。
DEVICE=eth1
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
- ネットワークの再起動
service network restart
- その他依存パッケージのインストール
yum install libguestfs-tools
- novaの
virt_type
がkvm
になっていることを確認。
virt_type=kvm
- ssetsebool
setsebool -P virt_use_execmem on
- libvirtdの再起動
service libvirtd restart
- openstackの起動
openstack-service start
openstack-service status
- adminパスワードの確認
cat /root/keystonerc_admin | grep OS_PASSWORD | awk -F "=" '{print $2}'
- dashboardが許可するホスト名の設定
# 以下のホスト名のみ受け付ける
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'xxx.xxx.xxx.xxx', 'openstack.exaple.com']
- apache再起動
service httpd restart
- ログイン
http://openstack.example.com/dashboard
先程確認したadminユーザのパスワードでログインする。
Troubleshooting
packstackのインストールが途中で止まる
一度設定を削除し再度インストールし直しましょう。
ただでさえコンポーネントの数が多いので下手にいじくるよりは一度クリーンインストールした方が早いです。
- MySQL関連のエラーが出る場合
# MySQLをアンインストールし、データディレクトリごと削除
yum remove mysql mysql-server
rm -fR /var/lib/mysql
- swift関連のエラーが出る場合
Failed to call refresh: Could not find command 'restorecon'
とエラーが出る場合は
/usr/share/openstack-puppet/modules/swift/manifests/storage/mount.pp:68
の
path => ['/usr/sbin', '/bin'],
を
path => ['/usr/sbin', '/sbin'],
に書き換える
参照: Bug 1109079 – Packstack installation fail: restorecon not found
- ceilometer関連のエラーが出る場合
rm -fR /var/log/ceilometer/ceilometer-dbsync.log
- 他よく分からないエラーが出る場合
php関係がエラーの原因になっている可能性もあるのでアンインストールしておく。
yum remove php php-*