おそらく一番手がかからない子、Glanceくんの設定です。
今回はCephに保存していますが、Swiftで試した時も素直に動いてくれた、OpenStackの良心とはこのコのことです!
Cephの準備
pool作成
Glanceは所詮コンポーネント名なので、役割重視で名前は images です。
1 |
ceph osd pool create images 128 |
keyringの作成
1 2 3 4 5 6 7 8 9 10 11 12 |
# Ceph内に認証を登録 ceph auth get-or-create client.images \ mon 'allow r' \ osd 'allow class-read object_prefix rbd_children, allow rwx pool=images' # 鍵をローカルに保存 ceph auth get-or-create client.images | tee /etc/ceph/keyring.images chown glance:glance /etc/ceph/keyring.images # Ceph内とローカルの鍵が一致しているか確認 ceph auth list cat /etc/ceph/keyring.images |
Ceph設定
追記します。/etc/ceph/ceph.conf
1 2 |
[client.images] keyring = /etc/ceph/keyring.images |
他のCephサーバにも送っておきます。
1 2 |
scp /etc/ceph/ceph.conf 10.1.26.12:/etc/ceph/ceph.conf scp /etc/ceph/ceph.conf 10.1.26.13:/etc/ceph/ceph.conf |
設定
glance-api.conf
これがメインの設定です。default_store にrbd(Ceph)を指定しています。/etc/glance/glance-api.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
[DEFAULT] verbose = False debug = False default_store = rbd bind_host = 0.0.0.0 bind_port = 9292 log_file = /var/log/glance/api.log sql_connection = mysql://glance-common:パスワード@10.1.26.11:3306/glancedb registry_host = 0.0.0.0 registry_port = 9191 rabbit_host = 10.1.26.11 rabbit_port = 5672 rabbit_use_ssl = false rabbit_userid = openstack rabbit_password = Rabbitのパスワード rabbit_virtual_host = /openstack filesystem_store_datadir = /var/lib/glance/images/ rbd_store_ceph_conf = /etc/ceph/ceph.conf rbd_store_user = images rbd_store_pool = images rbd_store_chunk_size = 8 [keystone_authtoken] auth_host = 10.1.26.11 auth_port = 35357 auth_protocol = http admin_tenant_name = admin admin_user = OpenStackAdmin admin_password = 管理者のパスワード [paste_deploy] flavor = keystone |
glance-cache.conf
flavor = keystone なのでこの設定は使ってないっぽいですが、ログをFalseにしたり確認しておきます。/etc/glance/glance-cache.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[DEFAULT] verbose = False debug = False log_file = /var/log/glance/image-cache.log image_cache_dir = /var/lib/glance/image-cache/ registry_host = 0.0.0.0 registry_port = 9191 auth_url = http://10.1.26.11:5000/v2.0/ admin_tenant_name = admin admin_user = OpenStackAdmin admin_password = 管理者のパスワード filesystem_store_datadir = /var/lib/glance/images/ |
glance-registry.conf
こちらも流して設定しておきます。/etc/glance/glance-registry.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 |
verbose = False debug = False [keystone_authtoken] auth_host = 10.1.26.11 auth_port = 35357 auth_protocol = http admin_tenant_name = admin admin_user = OpenStackAdmin admin_password = 管理者のパスワード [paste_deploy] flavor = keystone |
glance-scrubber.conf
流し。/etc/glance/glance-scrubber.conf
1 2 3 |
[DEFAULT] verbose = False debug = False |
再起動
反映します。
1 2 3 4 5 |
# 再起動 for init in /etc/init.d/glance-*; do $init restart; done # 動作確認 glance index |
イメージ登録
イメージの作成については過去記事を参照してください。glance add は古いので image-create を使っています。失敗したら、ストレージ自体や設定を確認します。Cephの場合は、python-ceph が入ってるか確認するなど。
1 2 3 4 5 6 7 8 9 10 |
# イメージ置き場へ cd /data/vmimage/qcow2/ # 登録 glance image-create --name=Debian-7.0.0 --is-public=false \ --disk-format=qcow2 --container-format=ovf < debian-7.0.0.qcow2 # 確認 glance index rbd --pool images ls -l |
豆知識
–is-public について
–is-public=False にすると、単純に登録したプロジェクトでのみ見えるだけですが、True にすると他プロジェクトが利用できるようになります。前の記事でも書きましたが、Glanceのpolicy.jsonは変更し難い構成になっており、一般ユーザに読み込み(利用)権限のみを与えるのが難しく、管理者がイメージを作成して、一般ユーザはそれを使うだけ──としたい時、1つのプロジェクトで完結させることができません。
なので私は、adminプロジェクトでイメージの起動と編集を行い、スナップショットを取り、一度 download してから再度adminプロジェクトで –is-public=True で登録しています。こうすることで、admin以外の一般プロジェクトがイメージを使え、かつ編集(削除)できないようになりますし、複数の一般プロジェクトに対してフラットな条件になります。
少々面倒な運用ですが、基礎イメージは大事なので堅実に保護しています。
–disk-format について
–disk-format には色々ありますが私は qcow2 と raw を試してあります。一般的に raw はイメージ容量を先に確保してしまうので速度が早いと言われていますが、開発環境として利用する分には容量を節約できる qcow2 で十分です。
また、Glance上で qcow2 にしたり raw にしても、Novaの方で use_cow_images を変更することで、実際の利用形態を変更することもできます。なので、qcow2 と raw という2つの選択肢に対して、4つのパターンがあるわけで、一応何が違うのか試して少し違うのは確認しましたが、両方同じっていうか両方 qcow2 でいいと思いますです。
早く書かないとHavana先生が迫ってきちゃいますね…
メモを書き起こしてるだけなのに、どうにも長くて飽……
次はCinder+Cephです!