付録A デプロイメントの移行オプション
このセクションでは、DCN ストレージの検証と、アーキテクチャーの移行または変更に関するトピックについて説明します。
A.1. エッジストレージの検証 リンクのコピーリンクがクリップボードにコピーされました!
中央サイトおよびエッジサイトのデプロイメントが機能していることを確認するには、glance マルチストアおよびインスタンスの作成をテストします。
ローカルのファイルシステム上または Web サーバーで利用可能なイメージを glance にインポートすることができます。
中央サイトにイメージを使用するインスタンスがない場合でも、必ず中央サイトにイメージのコピーを保存してください。
glance stores-info コマンドを使用して、Image サービスを通じて利用可能なストアを確認します。以下の例では、central、dcn1、および dcn2 の 3 つのストアが利用可能です。これらは、それぞれ中央サイトおよびエッジサイトの glance ストアに対応します。
$ glance stores-info
+----------+----------------------------------------------------------------------------------+
| Property | Value |
+----------+----------------------------------------------------------------------------------+
| stores | [{"default": "true", "id": "central", "description": "central rbd glance |
| | store"}, {"id": "dcn0", "description": "dcn0 rbd glance store"}, |
| | {"id": "dcn1", "description": "dcn1 rbd glance store"}] |
+----------+----------------------------------------------------------------------------------+
A.1.1. ローカルファイルからのインポート リンクのコピーリンクがクリップボードにコピーされました!
まず中央サイトのストアにイメージをアップロードし、続いてそれをリモートサイトにコピーする必要があります。
イメージのファイルが RAW 形式であることを確認します。イメージが raw 形式でなければ、イメージを Image サービスにインポートする前に変換する必要があります。
file cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.img: QEMU QCOW2 Image (v3), 117440512 bytes qemu-img convert -f qcow2 -O raw cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.rawImport the image into the default back end at the central site:glance image-create \ --disk-format raw --container-format bare \ --name cirros --file cirros-0.5.1-x86_64-disk.raw \ --store central
A.1.2. Web サーバーからのイメージのインポート リンクのコピーリンクがクリップボードにコピーされました!
イメージが Web サーバーでホストされている場合は、GlanceImageImportPlugins パラメーターを使用して複数のストアにイメージをアップロードすることができます。
この手順では、デフォルトのイメージ変換プラグインが glance で有効になっていることを前提としています。この機能により、QCOW2 ファイル形式が Ceph RBD に最適な RAW イメージに自動的に変換されます。glance image-show ID | grep disk_format を実行して、glance イメージが RAW 形式であることを確認することができます。
手順
glanceコマンドのimage-create-via-importパラメーターを使用して、Web サーバーからイメージをインポートします。--storesパラメーターを使用します。あるいは、--storesを--all-stores Trueに置き換えて、すべてのストアにイメージをアップロードすることができます。# glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name cirros \ --uri http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img \ --import-method web-download \ --stores central,dcn1この例では、qcow2 cirros イメージが公式の Cirros サイトからダウンロードされ、glance により RAW に変換され、
--storesパラメーターで指定した中央サイトおよびエッジサイト 1 にインポートされます。
A.1.3. 新規サイトへのイメージのコピー リンクのコピーリンクがクリップボードにコピーされました!
既存のイメージを中央サイトからエッジサイトにコピーすることができます。これにより、新たに構築されたサイトにおいて、以前作成したイメージにアクセスすることができます。
コピーの操作には、glance イメージの UUID を使用します。
ID=$(openstack image show cirros -c id -f value) glance image-import $ID --stores dcn0,dcn1 --import-method copy-image注記この例では、
--storesオプションにより、cirrosイメージを中央サイトからエッジサイト dcn1 および dcn2 にコピーすることを指定しています。あるいは、--all-stores Trueオプションを使用して、現在イメージがアップロードされていないすべてのストアにイメージをアップロードすることができます。イメージが各ストアにコピーされていることを確認します。
storesキー (属性マッピングの最後の項目) がcentral,dcn0,dcn1に設定されている点に注意してください。$ openstack image show $ID | grep properties | properties | direct_url=rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap, locations=[{u'url: u'rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'central'}}, {u'url': u'rbd://0c10d6b5-a455-4c4d-bd53-8f2b9357c3c7/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn0'}}, {u'url': u'rbd://8649d6c3-dcb3-4aae-8c19-8c2fe5a853ac/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn1'}}], os_glance_failed_import=', os_glance_importing_to_stores=', os_hash_algo='sha512, os_hash_value=b795f047a1b10ba0b7c95b43b2a481a59289dc4cf2e49845e60b194a911819d3ada03767bbba4143b44c93fd7f66c96c5a621e28dff51d1196dae64974ce240e, os_hidden=False, stores=central,dcn0,dcn1 |
中央サイトにイメージを使用する仮想マシンがない場合でも、必ず中央サイトにイメージのコピーを保存してください。
A.1.4. エッジサイトのインスタンスがイメージベースのボリュームからブートできることの確認 リンクのコピーリンクがクリップボードにコピーされました!
エッジサイトでイメージを使用して、永続ルートボリュームを作成することができます。
手順
ボリュームとして作成するイメージの ID を把握し、その ID を
openstack volume createコマンドに渡します。IMG_ID=$(openstack image show cirros -c id -f value) openstack volume create --size 8 --availability-zone dcn0 pet-volume-dcn0 --image $IMG_ID新たに作成したボリュームのボリューム ID を把握し、それを
openstack server createコマンドに渡します。VOL_ID=$(openstack volume show -f value -c id pet-volume-dcn0) openstack server create --flavor tiny --key-name dcn0-key --network dcn0-network --security-group basic --availability-zone dcn0 --volume $VOL_ID pet-server-dcn0dcn0 エッジサイトの ceph-mon コンテナー内で rbd コマンドを実行してボリュームプールのリストを表示し、ボリュームがイメージベースであることを確認できます。
$ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l NAME SIZE PARENT FMT PROT LOCK volume-28c6fc32-047b-4306-ad2d-de2be02716b7 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 excl $インスタンスのルートボリュームの cinder スナップショットを作成できることを確認します。クリーンなスナップショットを作成するために、サーバーを停止してデータが休止状態になるようにします。インスタンスが停止している場合ボリュームのステータスは
in-useのままなので、--force オプションを使用します。openstack server stop pet-server-dcn0 openstack volume snapshot create pet-volume-dcn0-snap --volume $VOL_ID --force openstack server start pet-server-dcn0dcn0 Ceph クラスターのボリュームプールの内容をリスト表示し、新たに作成したスナップショットを表示します。
$ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l NAME SIZE PARENT FMT PROT LOCK volume-28c6fc32-047b-4306-ad2d-de2be02716b7 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 excl volume-28c6fc32-047b-4306-ad2d-de2be02716b7@snapshot-a1ca8602-6819-45b4-a228-b4cd3e5adf60 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 yes
A.1.5. イメージのスナップショットを作成しサイト間でコピーできることの確認 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットを作成し、glance image-import を使用して、中央の場所にコピーできることを確認します。
手順
dcn0 サイトで新規イメージを作成できることを確認します。クリーンなスナップショットを作成するために、サーバーを停止してデータが休止状態になるようにします。
NOVA_ID=$(openstack server show pet-server-dcn0 -f value -c id) openstack server stop $NOVA_ID openstack server image create --name cirros-snapshot $NOVA_ID openstack server start $NOVA_IDdcn0エッジサイトから glance のデフォルトバックエンドであるハブサイトに、イメージをコピーして戻します。IMAGE_ID=$(openstack image show cirros-snapshot -f value -c id) glance image-import $IMAGE_ID --stores central --import-method copy-image
glance マルチストア操作の詳細は、複数のストアに対応した Image サービス を参照してください。