第9章 glance イメージの nova への事前キャッシュ
ローカルの一時ストレージを使用するように OpenStack Compute を設定する場合、インスタンスのデプロイメントを迅速化するために glance イメージがキャッシュされます。インスタンスに必要なイメージがまだキャッシュされていない場合は、インスタンスの作成時に Compute ノードのローカルディスクにダウンロードされます。
glance イメージのダウンロードプロセスに要する時間は、イメージのサイズおよび帯域幅やレイテンシー等のネットワーク特性によって変動します。
インスタンスの起動を試みる際にローカルの Ceph クラスターでイメージが利用できない場合は、以下のメッセージと共にインスタンスの起動に失敗します。
Build of instance 3c04e982-c1d1-4364-b6bd-f876e399325b aborted: Image 20c5ff9d-5f54-4b74-830f-88e78b9999ed is unacceptable: No image locations are accessible
Compute サービスのログには以下のメッセージが記録されます。
'Image %s is not on my ceph and [workarounds]/ never_download_image_if_on_rbd=True; refusing to fetch and upload.',
インスタンスの起動に失敗する原因は、nova.conf
設定ファイルの never_download_image_if_on_rbd
パラメーターです。DCN デプロイメントの場合、このパラメーターはデフォルトでは true
に設定されています。dcn-hci.yaml
ファイルの heat パラメーター NovaDisableImageDownloadToRbd
を使用して、この値を制御することができます。
オーバークラウドのデプロイ前に NovaDisableImageDownloadToRbd
の値を false
に設定した場合の動作は、以下のようになります。
-
イメージがローカルで利用できない場合、Compute サービス (nova) は
central
サイトで利用可能なイメージを自動的にストリーミングします。 - glance イメージからの COW コピーは使用されません。
- イメージを使用するインスタンスの数により、Compute (nova) ストレージに同じイメージのコピーが複数含まれる場合があります。
-
central
サイトへの WAN リンクと nova ストレージプールの両方が飽和状態になる可能性があります。
Red Hat では、この値を true に設定したままにし、インスタンスの起動前に必要なイメージがローカルで利用できるようにすることを推奨します。イメージをエッジサイトで利用できるようにする方法については、「新規サイトへのイメージのコピー」を参照してください。
ローカルにあるイメージに関して、tripleo_nova_image_cache.yml
Ansible Playbook を使用して、共通的に使用されるイメージや今後デプロイする可能性の高いイメージを事前キャッシュして、仮想マシンの作成を迅速化することができます。
9.1. tripleo_nova_image_cache.yml
Ansible Playbook の実行
前提条件
- シェル環境での正しい API への認証用クレデンシャル
各手順で提供されるコマンドの前に、正しい認証ファイルが読み込まれている必要があります。
手順
スタック用の Ansible インベントリーファイルを作成します。複数のスタックをコンマ区切りリストで指定して、複数サイトのイメージをキャッシュすることができます。
$ source stackrc $ tripleo-ansible-inventory --plan central,dcn0,dcn1 \ --static-yaml-inventory inventory.yaml
事前キャッシュするイメージの ID リストを作成します。
利用可能なイメージの完全なリストを取得します。
$ source centralrc $ openstack image list +--------------------------------------+---------+--------+ | ID | Name | Status | +--------------------------------------+---------+--------+ | 07bc2424-753b-4f65-9da5-5a99d8383fe6 | image_0 | active | | d5187afa-c821-4f22-aa4b-4e76382bef86 | image_1 | active | +--------------------------------------+---------+--------+
nova_cache_args.yml
という名前で Ansible Playbook の引数ファイルを作成し、事前キャッシュするイメージの ID を追加します。--- tripleo_nova_image_cache_images: - id: 07bc2424-753b-4f65-9da5-5a99d8383fe6 - id: d5187afa-c821-4f22-aa4b-4e76382bef86
tripleo_nova_image_cache.yml
Ansible Playbook を実行します。$ source centralrc $ ansible-playbook -i inventory.yaml \ --extra-vars "@nova_cache_args.yml" \ /usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml