本ページは OpenStack Advent Calendar 2015 に投稿しています。
OpenStack Manila は LIBERTY から正式にレディになりました。多くの可能性を秘めているサービスですがまずは**「ファイルサーバ(シェア)を作ってそれにアクセスする」**といった基本的な確認をしていきます。
OpenStack Manila の概要をさくっとしりたい方はこちらをどうぞ。
流れ
- OSインストール
- RDOインストール
- Packstack 実行
- Network再設定
- インスタンス作成と試行(確認用インスタンス)
- Manila サービス確認
上記までは以下のページを参照ください。なお、1~5まではこの通りじゃなくとも、OpenStack のコアサービス+Manila がちゃんと動いている状態であればかまいません。
Manila を RDO で試してみる(準備編)
続きをやっていきます。
関連サービスを整理
ここでこの後、読み進めるにあたって Manila との他のサービスの関連を表でまとめておきます。
サービス名 | 関連性 | 補足説明 |
---|---|---|
Nova | 共有ファイルシステム(以下、シェア)へアクセス | 許可されたインスタからアクセス |
Glance | シェアサーバ用イメージ | Generic Driver 用に使われる |
Cinder | シェアのための格納領域 | デフォルトはLVM |
Neutron | セキュアマルチテナントを構成 | 3rd Party 側とも連携 |
Sahara | データ格納領域 | HDFS Driver によるインテグレーション |
シェアを作る上で実質的に必須なのは Cinder、Neutron です。Glance は Generic Driver を使わない場合にはシェアサーバ用イメージを使わないため不要です。Sahara は追加インテグレーションになるため必要に応じて利用します。
シェアサーバ用イメージを使わない例として、バックエンドのストレージに NetApp FAS シリーズ を使う場合はそのストレージそのものがシェア(又はシェアを持つ仮想ストレージ)をマルチテナントで作成することができるため Glance は介在しません。
以下は Generic Driver を用いた場合の制御フローの概略図です。Manila の 3rd Party 製ドライバを利用する場合は、そこから直接 User Tenant のインスタンスへ共有プロトコル(NFSやCIFS)を提供します。
Manila 設定
はじめに・・・Manilaのサービスはあがってますがそのままではシェアードファイルシステムサービスは利用できません。少しだけいくつか補足作業が必要でした。(確認バージョン:rdo-release-liberty-2.noarch)
v2用エンドポイントを作る(admin)
# keystone service-create \
--name manilav2 \
--type sharev2 \
--description "OpenStack Shared Filesystems V2"
# keystone endpoint-create \
--service-id $(keystone service-list | awk '/ sharev2 / {print $2}') \
--publicurl http://<your controller host>:8786/v2/%\(tenant_id\)s \
--internalurl http://<your controller host>:8786/v2/%\(tenant_id\)s \
--adminurl http://<your controller host>:8786/v2/%\(tenant_id\)s \
--region regionOne
Generic Driver 用のイメージの再登録(admin)
インストール後この Generic Driver 用イメージはセットアップされているが、これではブートできませんでした。(manila create をするとこのイメージがブートできないためシェア用インスタンスが作られずに失敗する)
以下のように既存のものを削除して、再登録しました。(このイメージは devstack により確認済みのイメージであり、RDO の アンサーファイルにも記述されている)
# glance image-delete manila-service-image
# wget https://www.dropbox.com/s/vi5oeh10q1qkckh/ubuntu_1204_nfs_cifs.qcow2
# glance image-create --name=manila-service-image --visibility public --disk-format=qcow2 --container-format=bare --file=ubuntu_1204_nfs_cifs.qcow2
service_instance_flavor_id 変更
デフォルトでは m1.tiny となっており、これだと flavor が小さくて起動できないので、m1.small 以上にする。
# grep flavor /etc/manila/manila.conf
service_instance_flavor_id=2
##【おまけ】テナント services に admin ロール付与(admin)
Manila で作成されるシェアサーバの実態は services テナント内で起動される専用のインスタンスです。また、シェア領域として作られる Cinder Volume も同様に services テナント内に作成されます。そのためこれらを admin ユーザで確認するために以下を設定しておくと便利です。
# keystone user-role-add --user=admin --role=_member_ --tenant=services
NFS クライアント用インスタンス準備(demo)
NFSマウントできるようにNFSクライアント用のインスタンスを作成します。
ここでは、Fedora 23 のクラウドイメージ( https://getfedora.org/ja/cloud/download/ )を使います。
- インスタンス起動
- Floating IP 付与
- nfs-utils , bind-utils インストール
シェア用ネットワーク(demo)
インスタンスはプライベートネットワークからシェア専用のネットワークを経由してManilaのシェア領域にアクセスします。
- 経由するプライベート用ネットワークのIDを確認(neutron net-list)
- プライベート用サブネットのIDを確認(neutron subnet-list)
# manila share-network-create --neutron-net-id 1870b612-8330-442e-aefa-23d88d13fc29 --neutron-subnet-id e5650c31-4f67-4805-a3d9-72f1b1a213b5 --name manila_share
シェアのボリュームタイプの設定(admin)
Manila では Cinder 同様様々なシェアのタイプを設定できます。バックエンドのストレージドライバ別に設定したり、ドライバによっては更にエクストラスペックによる指定も可能です。デフォルトのシェアタイプを作っておきます。
# manila type-create default_share_type True
シェアの作成とアクセス
シェア作成(demo)
シェア、つまりファイルサーバを作成します。
# manila create --name test-share --share-network manila_share --share-type default_share_type NFS 1
アクセス許可設定(demo)
いわゆる作成したシェアにACLを設定します。
# manila access-allow test-share ip <private ip address of instance>
クライアントからのNFSマウント
マウント情報は manila list や manila show で確認できます。以下は manila show の出力例。export_locations がマウントポイントのパラメータです。
# manila show test-share
+-----------------------------+----------------------------------------------------------------+
| Property | Value |
+-----------------------------+----------------------------------------------------------------+
| status | available |
| share_type_name | default_share_type |
| description | None |
| availability_zone | nova |
| share_network_id | 2f9ec151-e776-4abd-a3db-c1350f504900 |
| export_locations | 10.254.0.14:/shares/share-54650fba-5b73-4b06-9e93-4bb35b111ed9 |
| host | akira.tk.net@generic#generic |
| snapshot_id | None |
| is_public | False |
| task_state | None |
| snapshot_support | True |
| id | 71a9c8ee-d17b-43c0-855a-4c2c4f625d39 |
| size | 1 |
| name | test-share |
| share_type | 97ecf110-f403-4ac2-8bb1-b546824bddf8 |
| created_at | 2015-11-25T15:03:10.000000 |
| share_proto | NFS |
| consistency_group_id | None |
| source_cgsnapshot_member_id | None |
| project_id | f81e6a60c9584e35a8f890632fe6bf3e |
| metadata | {} |
+-----------------------------+----------------------------------------------------------------+
NFSクライアントからマウントします。以下はその例です。
# ip netns exec qrouter-a05eb3fb-b199-43f8-a01a-0329e79bf566 ssh -i cloud.key fedora@192.168.0.71
Last login: Wed Nov 25 14:32:35 2015 from 192.168.0.70
[fedora@demo-fedora23 ~]$ sudo mount -t nfs 10.254.0.14:/shares/share-54650fba-5b73-4b06-9e93-4bb35b111ed9 /mnt
[fedora@demo-fedora23 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 990M 0 990M 0% /dev
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 1001M 284K 1001M 1% /run
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
/dev/vda1 20G 626M 19G 4% /
tmpfs 201M 0 201M 0% /run/user/1000
10.254.0.14:/shares/share-54650fba-5b73-4b06-9e93-4bb35b111ed9 1008M 34M 924M 4% /mnt
ちなみにこのクライアントでは NFSv4 でマウントしています。
[fedora@demo-fedora23 ~]$ mount |grep /mnt
10.254.0.14:/shares/share-54650fba-5b73-4b06-9e93-4bb35b111ed9 on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.254.0.14)
今後
やはり特徴的なのは、様々な 3rd Party Driver が使えることです。エンタープライズユーザにとっては抑えておきたいポイントであり、そこが真骨頂になります。よって、OSSで対応できるものや 3rd Party Driver を見ていきたいとおもいます。