情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

OpenStack Queens(& Pike)の新機能を試す(前編)

OpenStackの直近2つのリリース、PikeとQueensについてご紹介をいたします。

皆様こんにちは!

去る2月末に、OpenStackの17番目のリリース、Queensがローンチされました。
新機能や変更点は以下のページにまとめられています。

■概要
https://www.openstack.org/software/queens
■各コンポーネントごとのリリースノート
https://releases.openstack.org/queens/
イメージ画像 - チェスのクィーン

概要のページでは、注目点の一つとして、高性能計算(HPC)・AI・機械学習等での利用を見据えた、Nova(仮想インスタンス管理サービス)のvGPUサポート強化が挙げられています。
いずれも多数のワークロードを柔軟にマネージメントすることが求められる分野ですので、OpenStackのvGPUサポート強化は時代の要請に即した新機能と言えるでしょう。
また、同じくホットなワードとして「Edge Computing」にも触れており、ここで挙げられているOpenStack技術が「OpenStack-Helm」です。
OpenStack-HelmはOpenStack on Kubernetes環境を構築するためのスクリプトや定義ファイルの集合体で、これを利用すればエッジ・コンピューティングと呼ばれる領域にも、手軽にOpenStackサービスがデプロイできます。

さて、概要だけでは面白くないので、ここから先は、Queensで追加された機能のうち、いくつかを実際に試してみたいと思います。
また、ついでと言ってはなんですが、Pikeリリースのときに新機能をご紹介する機会を作れなかったので、今回併せてご紹介したいと思います。

[Pikeの新機能を試す]
・Python3.5対応
・ボリュームスナップショットを利用したリバート(Revert)

[Queensの新機能を試す]
・1つのボリュームを複数のVMに同時にアタッチ
・Cinderのサービス一覧でバックエンドの状態を確認する

[Pikeの新機能を試す]

Python3.5対応

以前から進められていたOpenStackのPython3対応ですが、PikeリリースではNovaもPython3.5に対応し、(Swiftを除く)コアコンポーネントがPython3でも使えるようになりました。

python 2.xは2020年にEOLを迎えるため、この対応はOpenStackプロジェクトを維持するうえで重要な作業となっています。

詳細なPython3対応状況は以下をご覧ください。
https://wiki.openstack.org/wiki/Python3

というわけで、さっそくPython3.5によるインストールを試してみたいと思います。
本当であれば手動にて手順を確認しつつインストールするのが最も勉強になりますが、今回はdevstackにてサクッとインストールをします。
(なお、OSはUbuntu 16.04 64bitを利用しました)

※以下、devstackによるOpenStack構築を試したことがある方向けに記載しています。今回初めて試す方は、最初に以下をご覧ください。
 https://docs.openstack.org/devstack/latest/


1)まずdevstackをgit cloneし、stable/queensブランチをチェックアウトします。


2)普段利用しているlocal.confの[[local|localrc]]セクションに以下を追記します。

USE_PYTHON3=True
PYTHON3_VERSION=3.5

3)stack.shを実行します。

上記で、無事にstack.shが完走しました。
psコマンドでプロセスを見てみると、確かにpython3.5で起動しているようです。

$ ps -ef
(略)
opensta+ 11233     1  0 Oct02 ?        00:00:02 /usr/bin/python3 /usr/local/bin/glance-registry --config-file=/etc/glance/glance-registry.conf
(略)
opensta+ 14381     1  0 Oct02 ?        00:01:50 /usr/bin/python3 /usr/local/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini
(略)
opensta+ 19916 19028  0 Oct02 ?        00:01:12 /usr/bin/python3 /usr/local/bin/nova-conductor --config-file /etc/nova/nova.conf
(略)
opensta+ 20841     1  0 Oct02 ?        00:02:40 /usr/bin/python3 /usr/local/bin/cinder-scheduler --config-file /etc/cinder/cinder.conf
(略)

※keystoneは、/usr/local/bin/keystone-wsgi-admin, keystone-wsgi-publicを見るとpython3で起動されることがわかります。

本格的な動作検証はまだできていませんが、少なくともVMやボリューム、ネットワークの作成・削除といった基本的な操作は問題なく行えました。

CanonicalやRedhatなどのディストリビュータが配布しているパッケージも、今後順次Python3系に移るはずですので、必要な方は今から検証を考え始めても良いかもしれません。

ボリュームスナップショットを利用したリバート

PikeリリースでCinderに追加されたリバートAPIは、ボリュームの内容をスナップショット取得時点まで戻すことができます。
これまでOpenStackでボリュームを特定の状態に戻したい場合、主に以下のいずれかの方法が採られていました。

・Glanceにボリュームの内容をアップロードしておき、そのイメージを元にして新たにボリュームを作成する。
・ボリュームのスナップショットを作成しておき、当該スナップショットを元にして新たにボリュームを作成する。そのあと、元のボリュームを削除する。

いずれも機能しますが、若干手順が複雑で、手間がかかるのも確かでした。
そこでリバートAPIを利用すると、前述の手順に比べ、かなりシンプルな運用ができそうです。
実際に、試してみましょう。

1)イメージを元にボリュームを作成します(devstackにて自動的に登録されるcirrosのイメージIDを指定しています)。

$ openstack volume create --size 1 --image 006d01ff-5c5f-4fc3-8885-6aa4569e11ca cirros

2)ボリュームのスナップショットを作成しておきます。

$ openstack snapshot create cirros

3)ボリュームを利用して、boot from volumeでVMを作成します。フレーバのm1.nanoとネットワークのprivateは、devstackが自動的に作成する資源です。

$ openstack server create --nic net-id=private --volume cirros --flavor m1.nano testvm

4)VMにログインし、ルートディレクトリ下を全てrmしてみます。恐ろしいですね。
(VMにログインして以下実行)

$ sudor rm -rf /


上記実行後に、VMをリブートします。

$ openstack server reboot --hard testvm

5)リブート後にコンソールを確認すると、エラーを吐いています(Horizonのコンソール画面だと表示ができなかったのでVNCクライアントで接続しています)。
ルートディレクトリ下のファイルを全て削除したため、正常な起動ができなくなってしまいました。

6)ボリュームをスナップショット取得時の状態に戻します。
リバートAPIはボリュームステータスがavailableでないと実行できないため、いったんVMを削除してボリュームのステータスをin-useからavailableに戻します。
今回の場合ボリュームがルートディスク扱いになっており、ボリュームデタッチAPIではデタッチができないため、いったん削除をします。リバートAPIの、この仕様はちょっと不便です。

$ openstack server delete testvm

7)スナップショットのIDを指定してリバートします。

$ cinder --os-volume-api-version 3.40 revert-to-snapshot 1dd3799e-e7e0-4cd3-bd6f-1118e1cc123d


⇒リバートAPIはCinder APIのバージョン3.40以上でないと利用できないため、明示的に指定しています。
⇒また、openstack CLIだとcinderのマイクロバージョン指定ができないようなので、cinder CLIを利用しています。

リバート中は、ボリュームのステータスがrevertingになります。

$ openstack volume list
+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 4bc0c0b7-5b02-4cf7-b315-cf2fc60407fd | cirros | reverting | 1    |             |
+--------------------------------------+--------+-----------+------+-------------+

また、リバート中はテンポラリなスナップショットがもう1つ作られます(リバート完了すると消えます)。
$ openstack snapshot list
+--------------------------------------+----------------------------------------------------------------------+-------------+-----------+------+
| ID                                   | Name                                                                 | Description | Status    | Size |
+--------------------------------------+----------------------------------------------------------------------+-------------+-----------+------+
| 1dd3799e-e7e0-4cd3-bd6f-1118e1cc123d | -                                                                    | None        | restoring | 1    |
| e1376cd2-4068-4bd7-b3c8-d12b9a9195c7 | [revert] volume 4bc0c0b7-5b02-4cf7-b315-cf2fc60407fd backup snapshot | None        | available | 1    |
+--------------------------------------+----------------------------------------------------------------------+-------------+-----------+------+

8)リバートが完了したら(ボリュームのステータスがavailableに戻ったら)、当該ボリュームを利用して新たにVMを作成します。

$ openstack server create --nic net-id=private --volume cirros --flavor m1.nano testvm2

9)無事ルートディレクトリ下のファイルが復活し、OSが起動しました!

本機能が加わったことで、既にOpenStackを利用している方は、VMの利用手順を見直してみる価値があるかもしれません。

おさらい含めて、リバートAPIについて、2つの注意点を最後に記載しておきます。

一点目は、Cinder APIのマイクロバージョンが3.40以上でないと利用できないこと。
二点目は、Queens時点ではCinderの一部ドライバ(※1)でしか利用できないこと。

二点目に関しては、APIは用意されましたので、他のドライバもそのうち実装がされるのではないかと期待されます。
※1:具体的には、QueensではLVMドライバ、3PARドライバ、SMBFSドライバ、Storwizeドライバ、VMAXドライバ、VMware VMDKドライバがリバートAPIをサポートしています。なおPikeでは、LVMドライバしかサポートされていませんでした。

さて、次はいよいよQueensの新機能ですが......長くなってしまったので、今回はいちどここで区切りたいと思います。 後編でまたお会いしましょう!

----------------------------------------------------------------

NTTテクノクロスは今回のように最新版を追って、より良い設計や運用を追求しております。
また、同時にコミュニティでサポートが終了したバージョンのサポートも行っております。
(以下に示すように)幅広いソリューションをご用意しておりますので、OpenStackについて何かお困りのことがございましたら、是非お声掛けください。

■定額・回数制でOpenStackについて質問できるチケットサービス:

■OpenStackクラウド基盤の構築から運用までNTTテクノクロスにお任せしたままでご利用いただける、マネージドサービス:
製品ページ準備中です。概要は以下をご覧ください。
/column/tec/openstack_days_tokyo_2017_1/

そのほか、コンサルや通常の構築業務などのご相談も承っております。
本ページ下部の連絡先にお問い合わせください。



OpenStack のワードマークは、米国とその他の国における OpenStack Foundation の登録商標/サービスマークまたは商標/サービスマークのいずれかであり、 OpenStack Foundation の許諾の下に使用されています。
NTTテクノクロスは、OpenStack Foundation や OpenStack コミュニティの関連会社ではなく、公認や出資も受けていません。
その他会社名、製品名などの固有名詞は、一般に該当する会社もしくは組織の商標または登録商標です。

連載シリーズ
テクノロジーコラム
著者プロフィール
本上 力丸
本上 力丸