ProLiant G7 ML110 にて、ESXi 5.5をUSBブート(の上で、OpenStackをNested)して使っていたが、ノベルティのUSBフラッシュメモリだったのでやっぱり壊れた。
なので素でOpenStackを入れ直した時のメモ。
環境
- HP ProLiant G7 ML110
- Memory 16GB
- SSD 250 + 120 , HDD 250
- Gigabit Ether x2
- CentOS 7 17.08
HP ProLiant G7 ML110にて、いったん初期化した
https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c03576963
OpenStack Queens Release
セットアップ時点でリリースは「Queens」
手順は下記の通り。いつものように自分評価・デモ用なのでオールインワンで十分。
packstackを実行したら以下のエラー
ERROR:root:Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 991, in main
optParser = initCmdLineParser()
File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 840, in initCmdLineParser
parser = OptionParser(usage=usage, version="%prog {0}".format(version_info.version_string()))
File "/usr/lib/python2.7/site-packages/pbr/version.py", line 466, in version_string
return self.semantic_version().brief_string()
File "/usr/lib/python2.7/site-packages/pbr/version.py", line 461, in semantic_version
self._semantic = self._get_version_from_pkg_resources()
File "/usr/lib/python2.7/site-packages/pbr/version.py", line 438, in _get_version_from_pkg_resources
import pkg_resources
ImportError: No module named pkg_resources
pythonのsetuptoolsがあったら良いっぽいから、python-pip をインストールして同時にいれたら回避された。
- python2-setuptools-22.0.5-1.el7.noarch.rpm
- python-pip-8.1.2-1.el7.noarch.rpm
Answer ファイル作成
[root@openstack ~]# packstack --gen-answer-file=./answerfile
Packstack changed given value to required value /root/.ssh/id_rsa.pub
必要なのだけ「y」にして実行
[root@openstack ~]# packstack --answer-file=./answerfile
問題なく完了。
ただ、インターネット環境が若干しょぼいので時間がかかった。
環境再セットアップ
admin , demo パスワード変更
# openstack user set --password 'hogehoge' demo
# openstack user set --password 'fugafuga' admin
ネットワーク周り
いったんパブリックサブネットとルータを消す
(admin) # openstack
(openstack) router unset --external-gateway router1
(openstack) subnet delete public_subnet
(openstack) router remove subnet router1 private_subnet
(openstack) router delete router1
再作成
(admin) # openstack subnet create --network public \
--allocation-pool start=192.168.0.70,end=192.168.0.90 \
--dns-nameserver 192.168.0.2 \
--gateway 192.168.0.1 \
--no-dhcp \
--subnet-range 192.168.0.0/24 public_subnet
(demo) # openstack
(openstack) subnet set --dns-nameserver 192.168.0.2 private_subnet
(demo) # openstack
(openstack) router create demo-router
(openstack) router add subnet demo-router private_subnet
(openstack) router set --external-gateway public demo-router
ICMP通信許可
インスタンスへのping許可、すべてのコードとすべての種類のICMP通信が許可される
(demo) # openstack
(openstack) security group rule create --protocol icmp default
SSH通信許可
インスタンスへのTCP 22 ポートへの通信許可、すべてのコードとすべての種類のSSH通信が許可される
(demo) # openstack
(openstack) security group rule create default --protocol tcp \
--dst-port 22:22 --remote-ip 0.0.0.0/0
参考:
(openstack) security group rule create default --protocol tcp --remote-ip 0.0.0.0/0
TCP 受信フルアクセス
これをやらんと外との通信がとれない。
外部論理ブリッジとの紐づけ確認(br-ex)
# ovs-vstcl show
Link UPしてる同一L2SWに刺さってるサーバ側ネットワークインタフェース確認(enp2s0)
# ip addr show
# ovs-vsctl add-port br-ex enp2s0
# ovs-vsctl
Bridge br-ex ★
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port br-ex
Interface br-ex
type: internal
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Port "enp2s0" ★
Interface "enp2s0" ★
ひとまず、SSH秘密鍵とフローティングIPアドレスあHorizon UIから作った。
備忘: # openstack floating ip create public
イメージ整備
イメージダウンロード
- CentOS 7
- Ubuntu 14.04 , 16.04
- Windows Server 2012
備忘:
# curl <url> -o <file name>
# xz -dv XXX.xz
イメージ登録
(admin) # openstack image create \
--disk-format qcow2 \
--container-format bare \
--public \
--file ./CentOS-7-x86_64-GenericCloud
-1802.qcow2 CentOS-7-X86_64-1802
補足
- SELinux Disableにしとく
- いったんメモリ節約のため Swift , Magnum , Manila , Heatをstop and disable
- デフォルトのflavorは粗いので自分で適当に作る
- CentOS イメージはRAMサイズと ルートディスクサイズに注意(1GB RAM, 10GB Diskはあった方が良い)
- メモリのオーバーコミット率あげとく
ram_allocation_ratio = 1.5 (=> 3.0)
- 永続ブロックデバイス使うときは、cinder-volume の pool 容量に注意(デフォで20GB)
Horizon UI からインスタンスあげると、ブロックデバイス作成が走る!?(CentOSイメージがHorizon UIからだとあがらない)
centos_openstack-home を解除(lv を消して centos_openstack-rootを拡張)
/et/fstab の /home エントリをコメントアウト
#/dev/mapper/centos_openstack-home /home xfs defaults 0 0
アンマウント
# umount /home
該当のlv削除
# lvremove /dev/centos_openstack/home
Do you really want to remove active logical volume centos_openstack/home? [y/n]: y
Logical volume "home" successfully removed
「centos_openstack」VGの容量確認
# vgdisplay
空いている分全部割り当てる
# lvextend -l +100%FREE /dev/centos_openstack/root
Size of logical volume centos_openstack/root changed from 50.39 GiB (12900 extents) to <224.01 GiB (57346 extents).
Logical volume centos_openstack/root successfully resized.
xfs ファイルシステム最大まで拡張(xfsはオンラインで拡張可能)
# xfs_growfs /dev/mapper/centos_openstack-root
meta-data=/dev/mapper/centos_openstack-root isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 58722304
確認(50GB => 最大に引き上げた)
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos_openstack-root 224G 14G 211G 6% /
xfs_growfs /mount/point -D size
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/storage_administration_guide/xfsgrow
オマケ
コマンドラインインスタンス起動
# openstack server create \
--flavor mid_c2_m2_d20 \
--image c06ed2c0-1b53-484f-beeb-04795038c6b3 \
--security-group default \
--key-name kurakey \
--network private \
centos-test
Nested KVM
インスタンス上でもKVMを使う予定があるので。
OpenStack ホスト側
KVM の Nested を有効にしておく。
- /sys/module/kvm_intel/parameters/nested(デフォルト:N)
- 起動しているインスタンスがあれば停止する(lsmod)
- kvm_intel をアンロード(modprobe -r kvm_intel)
- /etc/modprobe.d/kvm.conf 編集
# For Intel
options kvm_intel nested=1
- kvm_intel をロード(modprobe kvm_intel)
- /sys/module/kvm_intel/parameters/nested(Y)
- nova.conf の cpu_mode を変更(host-passthrough)
- nova-compute を再起動
- インスタンスの起動
(注意):インスタンス側のCPU Mode(XML形式)を
virsh edit
によりhost-passthroughに変えてやるだけでは反映しなかった。
ついでにKVMのUI
評価検証時のデバッグするのにもあると便利。見たところ、WebVirtMgr というのが良さそうだったので入れてみる。
NestedしたインスタンスはCentOS7にしてたので、セットアップ手順は下記のページのまんま。
https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr
補足だけ
- supervisord の部分は systemctl オペレーションにて
- ハイパーバイザの登録をローカルソケット経由で
- ちょっとだけ準備が必要、といってもコマンド2,3発
- https://github.com/retspen/webvirtmgr/wiki/Setup-Local-connection
- UIからのインスタンス起動は、Network , Storage 等を準備してから
- 既存Flavor経由だと作った環境だと上手くいかなそうだったのでCustomでインスタンス作成試行