2015年10月30日金曜日

Oracle OpenStack を VirtualBox に構築。その5

Oracle OpenStack R1 の、packstack 実行後のセットアップをしていきます。

今回は、Nova インスタンスと Glance イメージで使用するディスクを追加します。
ただし、今回のディスク構成は、私の VirtualBox での OpenStack 特有のものです。
後から共有ディスクを追加したくなって設定しました・・・

これまでの話はこちら。
Oracle OpenStack を VirtualBox に構築。その1
Oracle OpenStack を VirtualBox に構築。その2
Oracle OpenStack を VirtualBox に構築。その3
Oracle OpenStack を VirtualBox に構築。その4

あらかじめ Control Node の VM に追加しておいた仮想ディスクを利用可能にします。
あつかうディスクは、2つです。
  • 仮想ディスク #2  20 GB → Glance イメージ配置用。
  • 仮想ディスク #3  30 GB →  Nova インスタンス配置用。

ディスクのボリューム / ファイルシステム作成 ~ Glance イメージ用の領域準備

追加ディスクは /dev/sdb と、/dev/sdc として認識されています。
[root@osctl01 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc

今回は LVM を使用します。
まずは、Physical Volume ~ Volume Group ~ Logical Volume を作成します。

まずは、Glance 用の領域の Logical Volume 作成。
[root@osctl01 ~]# vgcreate vg01 /dev/sdb
  Physical volume "/dev/sdb" successfully created
  Volume group "vg01" successfully created
[root@osctl01 ~]# lvcreate -n lv_glance01 -l 100%FREE vg01
  Logical volume "lv_glance01" created.

そして、Nova 用の領域の Logical Volume 作成。
[root@osctl01 ~]# vgcreate vg02 /dev/sdc
  Physical volume "/dev/sdc" successfully created
  Volume group "vg02" successfully created
[root@osctl01 ~]# lvcreate -n lv_nova01 -l 100%FREE vg02
  Logical volume "lv_nova01" created.

Logical Volume が作成されました。
[root@osctl01 ~]# lvdisplay vg01 vg02 | grep Path
  LV Path                /dev/vg01/lv_glance01
  LV Path                /dev/vg02/lv_nova01

それぞれ、ext4 ファイルシステムでフォーマットします。
[root@osctl01 ~]# mkfs -t ext4 /dev/vg01/lv_glance01
[root@osctl01 ~]# mkfs -t ext4 /dev/vg02/lv_nova01

そして、それぞれ /var/lib/glance/images と /nfs にマウントしておきます。
今回、/var/lib/glance/images はすでに packstack により作成されています。
/nfs は、自分で作成しておきます。
[root@osctl01 ~]# mkdir /nfs

/etc/fstab ファイルの末尾に、vi などで下記のように追記しておきます。
[root@osctl01 ~]# vi /etc/fstab

/etc/fstab の追記内容は下記の 2行です。
/dev/vg01/lv_glance01  /var/lib/glance/images  ext4  defaults  0 0
/dev/vg02/lv_nova01    /nfs                    ext4  defaults  0 0

OpenStack のサービスを停止してしまいます。
[root@osctl01 ~]# openstack-service stop
neutron-dhcp-agent を停止中: [  OK  ]
neutron-l3-agent を停止中: [  OK  ]
neutron-metadata-agent を停止中: [  OK  ]
neutron-openvswitch-agent を停止中: [  OK  ]
neutron を停止中: [  OK  ]
openstack-cinder-api を停止中: [  OK  ]
openstack-cinder-scheduler を停止中: [  OK  ]
openstack-cinder-volume を停止中: [  OK  ]
openstack-glance-api を停止中: [  OK  ]
openstack-glance-registry を停止中: [  OK  ]
keystone を停止中: [  OK  ]
openstack-nova-api を停止中: [  OK  ]
openstack-nova-cert を停止中: [  OK  ]
openstack-nova-conductor を停止中: [  OK  ]
openstack-nova-consoleauth を停止中: [  OK  ]
openstack-nova-novncproxy を停止中: [  OK  ]
openstack-nova-scheduler を停止中: [  OK  ]

マウントします。
[root@osctl01 ~]# mount -a
[root@osctl01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol67base01-lv_root
                       11G  2.8G  6.8G  29% /
tmpfs                 750M     0  750M   0% /dev/shm
/dev/sda1             477M   66M  382M  15% /boot
/dev/mapper/vg01-lv_glance01
                       20G   44M   19G   1% /var/lib/glance/images
/dev/mapper/vg02-lv_nova01
                       30G   44M   28G   1% /nfs

オーナーを glance ユーザ / glance グループにしてしまいます。
[root@osctl01 ~]# chown glance:glance /var/lib/glance/images

OpenStack のサービスを起動します。
[root@osctl01 ~]# openstack-service start
neutron-dhcp-agent を起動中: [  OK  ]
neutron-l3-agent を起動中: [  OK  ]
neutron-metadata-agent を起動中: [  OK  ]
neutron-openvswitch-agent を起動中: [  OK  ]
neutron を起動中: [  OK  ]
openstack-cinder-api を起動中: [  OK  ]
openstack-cinder-scheduler を起動中: [  OK  ]
openstack-cinder-volume を起動中: [  OK  ]
openstack-glance-api を起動中: [  OK  ]
openstack-glance-registry を起動中: [  OK  ]
keystone を起動中: [  OK  ]
openstack-nova-api を起動中: [  OK  ]
openstack-nova-cert を起動中: [  OK  ]
openstack-nova-conductor を起動中: [  OK  ]
openstack-nova-consoleauth を起動中: [  OK  ]
openstack-nova-novncproxy を起動中: [  OK  ]
openstack-nova-scheduler を起動中: [  OK  ]

20 GB のディスクは、Glance のデフォルトのイメージ格納パスにマウントしたので、
これで利用できる状態です。

Nova インスタンス用の領域準備(Control Node 側)。

Control Node を NFS サーバにして、Compute Node で共有します。
まず、Control Node を設定して簡易的な NFS サーバにします。

NFS で共有するディレクトリを作成しておきます。
[root@osctl01 ~]# mkdir /nfs/dir01

NFS のエクスポート設定をします。
[root@osctl01 ~]# vi /etc/exports

/etc/exports ファイルには、下記のように追記しています。
/nfs/dir01  192.168.56.0/24(rw,no_root_squash)

そして nfs サービスを起動しておきます。
[root@osctl01 ~]# chkconfig nfs on
[root@osctl01 ~]# service nfs start

Nova インスタンス用の領域準備(Compute Node #1 側)。

Control Node の NFS 領域をマウントします。
※ディスク共有のため、すべての Compute Node で同じことをしておきます。

いったん、OpenStack のサービスを停止しておきます。
[root@ovms11 ~]# openstack-service stop
neutron-openvswitch-agent を停止中: [  OK  ]
openstack-nova-compute を停止中: [  OK  ]

/var/lib/nova/instances 配下のファイルを退避しておきます。
[root@ovms11 ~]# mkdir work
[root@ovms11 ~]# cp -pr /var/lib/nova/instances/* work/

/etc/fstab を編集しておきます。
[root@ovms11 ~]# vi /etc/fstab

/etc/fstab ファイルには、下記のように追記します。
192.168.56.21:/nfs/dir01  /var/lib/nova/instances nfs  defaults  0 0

そしてマウントします。
[root@ovms11 ~]# mount -a
[root@ovms11 ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/sda2                 3.6G  2.8G  608M  83% /
tmpfs                     361M     0  361M   0% /dev/shm
/dev/sda1                 477M   61M  387M  14% /boot
none                      361M   40K  361M   1% /var/lib/xenstored
192.168.56.21:/nfs/dir01   30G   44M   28G   1% /var/lib/nova/instances

オーナーを nova ユーザ / nova グループに変更しておきます。
[root@ovms11 ~]# chown nova:nova /var/lib/nova/instances

退避したファイルを戻しておきます。
[root@ovms11 ~]# cp -pr work/* /var/lib/nova/instances/
[root@ovms11 ~]# ls -la /var/lib/nova/instances/
合計 16
drwxr-xr-x 3 root root 4096 10月 30 22:13 2015 .
drwxr-xr-x 9 nova nova 4096 10月 28 23:56 2015 ..
-rw-r--r-- 1 nova nova   30 10月 29 02:37 2015 compute_nodes
drwxr-xr-x 2 nova nova 4096 10月 29 00:37 2015 locks

Nova インスタンス用の領域準備(Compute Node #2 側)。

最初に、/var/lib/nova/instances/compute_nodes の内容を控えておきます。
[root@ovms12 ~]# cat /var/lib/nova/instances/compute_nodes
{"ovms12": 1446053848.252249}

そして、Compute Node #1 と同様に、
OpenStack のサービスを一旦停止します。
[root@ovms12 ~]# openstack-service stop
neutron-openvswitch-agent を停止中: [  OK  ]
openstack-nova-compute を停止中: [  OK  ]

Compute Node #1 とまったく同様に、/etc/fstab を編集します。
[root@ovms12 ~]# vi /etc/fstab
[root@ovms12 ~]# mount -a
[root@ovms12 ~]# df -hFilesystem                Size  Used Avail Use% Mounted on
/dev/sda2                 3.6G  2.8G  608M  83% /
tmpfs                     361M     0  361M   0% /dev/shm
/dev/sda1                 477M   61M  387M  14% /boot
none                      361M   40K  361M   1% /var/lib/xenstored
192.168.56.21:/nfs/dir01   30G   44M   28G   1% /var/lib/nova/instances

オーナーを nova ユーザ / nova グループに変更しておきます。
[root@ovms12 ~]# chown nova:nova /var/lib/nova/instances

/var/lib/nova/instances/compute_nodes ファイルに Compute Node #1 だけ記載されているので、
編集して先ほど控えた Node #2 の情報も追記してしまいます。

/var/lib/nova/instances/compute_nodes の内容は、下記のように編集してしまします。
{"ovms11": 1446053828.2569079}

{"ovms11": 1446053828.2569079, "ovms12": 1446053848.252249}

それぞれのノードで、OpenStack のサービスを起動します。

Node #1 で起動。
[root@ovms11 ~]# openstack-service start
neutron-openvswitch-agent を起動中: [  OK  ]
openstack-nova-compute を起動中: [  OK  ]

Node #2 でも起動。
[root@ovms12 ~]# openstack-service start
neutron-openvswitch-agent を起動中: [  OK  ]
openstack-nova-compute を起動中: [  OK  ]

これで、nova boot したインスタンスが配置できるようになります。

ちなみに、今回のストレージ構成だと、Control Node が停止してしまうと
何もできなくなってしまうのですが、動作検証のためと割り切っています。
環境停止するときも、まちがって先に Control Node を停止すると悲しいことになります。

また、もっといい手順があるかもしれません。

つづく・・・

0 件のコメント:

コメントを投稿