OpenStack Stein のリリースを前に、Nova の新バージョン 19.0.0 の RC1 版が公開されました。これ以上 Stein リリースで新機能は入らないので、Nova のリリースノートのうちバグフィクス以外を意訳してみました。
なお、原文で「はじめに」の各項目は「新機能」等にも含まれており、こちらの訳でも同様にしてあります。
はじめに
-
Compute API の最新バージョンは v2.72
-
従来 Nova リポジトリの一部であった Placement API が Nova 本体から独立したリポジトリを持つようになった。但し、独立版の Placement API に完全対応したインストールツールはまだない。詳細はインストール/アップグレードドキュメント参照。
但し Stein リリースでは移行段階として Nova のリポジトリの中にも Placement API のソースコードが残されているが、次の Train リリースでは削除される予定。 -
サーバインスタンス作成時にボリューム作成を指示した際、ボリュームタイプを指定できるようになった(API v2.67)。
-
複数セル環境下で、ダウンしていたり性能の低い(=レスポンスが悪い)セルに置かれたサーバの詳細情報のハンドリングが追加された(API v2.69)。
-
サーバインスタンス作成時、Neutron のネットワークポートの QoS で最小帯域を指定できるようになった(API v2.72)。
-
運用者が Nova のオーバーコミット率(CPU/RAM/ディスク容量における仮想/物理比)を Nova の設定ファイルと Placement API のどちらかで設定できるようになった。
-
Placement API で Compute のケーパビリティ(細かな機能仕様)が Trait として公開されるようになった。
-
設定オプション
[compute]resource_provider_association_refresh
で 0 を指定する事でこの機能を無効化できるようになった。大規模環境で便利。 -
VMware ドライバが VM のライブマイグレーションに対応。
-
Nova が2つのケースでネストした(=入れ子の)リソースプロバイダに対応した。
- 最初からネストしたリソースプロバイダ上で QoS が有効なポートにインベントリや関連付けを付与できるようになる。
- Libvirt コンピュートノードがレポートする VGPU インベントリに、子リソースプロバイダ上の VGPU インベントリと関連づけを付与する事ができる(Stein リリースの nova-compute サービスにアップグレード後)
どちらのケースもリソースプロバイダを参照した際、シナリオに基づいて、元々は Compute サービス単位で1階層の compute ノードとして見えていた複数のプロバイダを参照する事ができる。
新機能
-
下記バージョン付通知に instance_name フィールドを追加。
instance.create.start
instance.create.end
instance.create.error
-
新ポリシールール
os_compute_api:servers:allow_all_filters
追加。ユーザがサーバ一覧表示で全てのフィルタを使えるかどうかを制御する。 -
volume_type オプションパラメータ追加(API v2.67)
-
Libvirt network ボリュームドライバ使用時、接続状態の RBD ボリュームの拡張に対応。
-
GET /servers
,GET /servers/detail
,GET /servers/{server_id}
,GET /os-services
にて、セルがダウンしている間に不足したキーを含めるよう変更。 -
[compute]/max_concurrent_disk_ops
設定パラメータ追加。nova-compute 単位でディスク I/O を伴う操作の最大同時実行数を設定可能に。デフォルト値は 0(制限しない)。 -
Libvirt ドライバでイメージプロパティ
hypervisor_type=qemu
設定時、x86 ゲストで HPET が利用可能に。イメージプロパティhw_time_hpet=True
で有効。デフォルトは False (無効)。 -
[compute]/max_disk_devices_to_attach オプション追加。単一サーバへ同時接続するボリュームの最大数を定義できるように。デフォルトは -1 (無制限)
-
[compute]resource_provider_association_refresh
オプションで、0 (無効)が設定可能に。Placement サーバへの通信削減に有用。 -
Placement API の traits 経由で Compute ドライバがサーバの capabilities を公開可能に。capabilities は os-traits プロジェクト内で定義されている必要がある。現時点で対応している capabilities は以下の通り。
- COMPUTE_NET_ATTACH_INTERFACE
- COMPUTE_DEVICE_TAGGING
- COMPUTE_NET_ATTACH_INTERFACE_WITH_TAG
- COMPUTE_VOLUME_ATTACH_WITH_TAG
- COMPUTE_VOLUME_EXTEND
- COMPUTE_VOLUME_MULTI_ATTACH
- COMPUTE_TRUSTED_CERTS
-
クエリのバッチ化によりセル横断のサーバ一覧操作が効率的に。
-
[ironic]/partition_key
パラメータ追加。Ironic 環境において compute サービスが同パラメータ値と一致する conductor_group を持つ Ironic ノード群の一部(サブセット)のみを管理可能に。また、[ironic]/peer_list
パラメータでこのサブセットの管理を compute サービス間で分散可能に。
ironic-conductor と nova-compute が同居している構成で障害の影響を最小限にする事ができる。 -
[libvirt]/live_migration_timeout_action
パラメータ追加。デフォルト値の abort と force_complete のいずれかを設定可能。
live_migration_completion_timeout
で設定されたライブマイグレーションの制限時間を越えた場合の挙動を設定。force_complete は post-copy が利用可能な場合は post-copy、それ以外の場合は VM を一時停止してライブマイグレーションを強行する。 -
Compute API 2.70 で、接続されたボリュームや仮想インターフェースのタグを公開可能に。
-
GET /servers/{server_id}/os-volume_attachments
(list) -
GET /servers/{server_id}/os-volume_attachments/{volume_id}
(show) -
POST /servers/{server_id}/os-volume_attachments
(attach) -
GET /servers/{server_id}/os-interface
(list) -
GET /servers/{server_id}/os-interface/{port_id}
(show) -
POST /servers/{server_id}/os-interface
(attach)
-
-
nova.conf 内で設定されたフィルタスケジューラの設定を Aggregate のメタデータを使用して上書き可能に。
-
Placement API 1.30 で
POST /reshaper
に対応。これにより、親子リソースプロバイダ間など、リソースプロバイダ間でいくつかのインベントリを移動する際、そのインベントリと関連割当をアトミックにマイグレーション可能に。 -
[api]/local_metadata_per_cell
オプション追加。セル単位で nova-api-metadata サービスを実行可能に。詳細はこちら。 -
Compute API 2.71 で以下の API のレスポンスボディの
server_groups
パラメータで各サーバが所属するサーバグループを表示するように。GET /servers/{server_id}
PUT /servers/{server_id}
-
POST /servers/{server_id}/action
(rebuild)
-
Compute API 2.72 で、リソース要求付きの Neutron ポート(QoS 最小帯域ルール付き等)付きのサーバ作成に対応。但し以下は出来ない。
- QoS最小帯域ルールのある Neutron ネットワークとポート付きサーバの作成
- QoS最小帯域ルールのある Neutron ネットワークとポートの接続
- リソース要求付きポートを持つサーバの移動(リサイズ、コールド/ライブマイグレーション、エバキュエート、shelve オフロード後の unshelve)
-
[libvirt]/live_migration_with_native_tls
パラメータ追加。Libvirt ドライバでライブマイグレーション時の QEMU ネイティブ TLS 転送に対応。 -
Compute API 2.66 で、以下の API に
changes-before
フィルタパラメータ追加。リソースの最終更新が指定した日時以前のリソースのみ取得可能に。GET /servers
GET /servers/detail
GET /servers/{server_id}/os-instance-actions
GET /os-migrations
-
Nova のバージョン付通知インターフェースが完成し、旧インターフェースと互換性を確保。
-
VMware vCenter ドライバで、VM イメージのビデオ RAM 設定用パラメータ
hw_video_ram
を追加。フレーバーのhw_video:ram_max_mb
で指定された最大許容 RAM サイズに対してチェックされる。 -
VMware compute ドライバがライブマイグレーションに対応。複数 compute ノードで vMotion が有効化された同一の vCenter と ESX ホストを管理する必要がある。
-
vrouter
VIF タイプに対するdirect
virtio-forwarder
VNIC タイプを追加。VNIC 使用の為、ハードウェア対応と同様、インストールされた OpenContrail, Contrail, Tungsten Fabric のバージョン対応が必要。
既知の問題
-
[compute]/max_disk_devices_to_attach
は現在ボリュームが接続されたサーバで最多のボリューム数より大きくなければならない。でないとサーバのリビルドに失敗する。また、コールドマイグレーション時、接続ボリューム数は転送先ホストでチェックされない。また、この制限は shelve offload されたサーバには適用されない為、この制限を付与する事によりサーバが unshelve できなくなるケースがある。 -
以下の操作中、定期処理で migration_uuid が同時に変更される事でリソース割当が保持される場合、Nova の Placement におけるリソース割当がリークする。
-
POST /servers/{server_id}/action
(revertResize Action) -
POST /servers/{server_id}/action
(confirmResize Action) -
POST /servers/{server_id}/action
(os-migrateLive Action)
-
-
接続された QoS 最小帯域ルール付ポートがサーバから論理的に削除される前に Neutron がポートを削除した場合、Nova の帯域リソースがリークする。
これを避ける為には、Neutron 側でポート削除する前に Nova 側でサーバからポートをデタッチしておく必要がある。Nova API によるポートデタッチが不可能な場合、帯域リソースはサーバ削除時にリリースされる。
バージョンアップ時の注意
- ARMv7 アーキテクチャ用 QEMU マシンタイプのデフォルトが
vexpress-a15
からvirt
に変更された。virt
ボードは仮想マシン用に設計された ARMv7 用マシンタイプの推奨デフォルトである。
-
以下のパラメータが追加された。
-
initial_cpu_allocation_ratio
デフォルト値=16.0 -
initial_ram_allocation_ratio
デフォルト値=1.5 -
initial_disk_allocation_ratio
デフォルト値=1.0
これらの新オプションは新しく nova-compute ノードが DB に登録される際にのみ使用される。
一方、cpu_allocation_ratio
,ram_allocation_ratio
,disk_allocation_ratio
設定パラメータのデフォルト値が 0.0 からNone
になった。DB 上の既存の nova-compute ノード情報でこれらの値が 0.0 または None の場合、nova-compute がアクセスする際か、nova-manage db online_data_migrations
コマンド実行時にマイグレーションされる。
-
-
virt ドライバ
get_info
メソッドにuse_cache
パラメータが追加された。ベンダドライバはこの変更に対応したほうが良い。 -
新パラメータ
[compute]/max_disk_devices_to_attach
のデフォルト値は -1 (無制限)である。Libvirt ドライバを使用している場合、Stein にアップグレードした上で非 IDE ディスクバスは 26 から無制限に変更すべきである。ide
ディスクバスは1サーバ4接続デバイスに制限される。 -
ポリシールール
os_compute_api:servers:create:zero_disk_flavor
のデフォルト値がrule:admin_or_owner
からrule:admin_api
に変更される。これにより、admin ロールのないユーザはボリューム付きサーバでない限り disk=0 のフレーバを使用してサーバを作成する事ができなくなる。 -
Libvirt ドライバ使用時、NUMA トポロジを持つインスタンスのライブマイグレーションがデフォルトで無効化された。これには CPU pinning や hugepage を持つインスタンスのライブマイグレーションも含まれる。
-
Newton リリースで追加されたオンラインデータマイグレーション
migrate_instances_add_request_spec
が今回削除された。nova-api DB におけるrequest_specs
エントリに一致しない古いインスタンス用の Controller サービスにおける互換コードも同様に削除された。Nova Stein リリースにアップグレードする前にnova-status upgrade check
コマンドでRequest Spec Migration
を必ずチェックする事。 -
nova-manage db online_data_migrations
コマンドは Newton リリース以前に作成されたインスタンスのvirtual_interfaces
レコードを補完するようになった。 -
フレーバーの extra-spec とイメージ属性の検証機能追加により、サーバ作成/リサイズ/再作成用 Compute API はこれらの値が適切にフォーマットされていないか互換性がない場合に 400 エラーを返すようになった。
-
resource_class
フィールドが設定されている Ironic ノードのみスケジュールされるようになった。CPU, RAM, ディスクはリソーストラッカーにレポートされない。Stein へのアップグレード前に Ironic ノードにresource_class
フィールドを設定する必要がある。 -
Libvirt ドライバは、
nova-compute
サービス再起動時に VGPU インベントリと割当を reshape する。これにより、VGPU インベントリと関連する割当はルート compute ノードリソースプロバイダから、ツーリー中の子リソースプロバイダに移動される。これは Stein において起動時に1会だけ実施され、エンドユーザからは認識されない。 -
[libvirt]/live_migration_progress_timeout
は Ocata リリースで廃止予定になり、Stein で削除された。また、現在のライブマイグレーション関連コードで進捗情報を元に post-copy を自動的に行う部分も削除された。 -
[compute]/live_migration_wait_for_vif_plug
設定オプションのデフォルト値が True に変更された。このオプションが True に設定されていると、いくつかのネットワークバックエンドは機能しなくなるが、OVS, linuxbridge は機能する。 -
maximum_instance_delete_attempts
設定オプションの最小値が制限され、1 未満の場合はエラーが出るようになった。 -
vrouter
VIF plug/unplug コードがcontrail-nova-vif-driver
と呼ばれるパッケージに分離された。このパッケージは Neutron プラグインとして Contrail, OpenContrail, Tungsten Fabric の使用時に Compute ノードにインストールする必要がある。このパッケージは現在 OpenContrail 側でホスティングされているが、将来 Tungsten Fubric に移管されると見られる。 -
nova-manage db online_data_migrations
コマンドは最後のバッチ試行でいくつかのマイグレーションが失敗し(例外が発生)、他に成功したマイグレーションがない場合に終了ステータス 2 を返すようになった。 -
nova-status upgrade check
コマンドはnova-consoleauth
サービス使用をチェックし、使用していればライブ/ローリングアップグレード実行中に[workarounds]enable_consoleauth = True
を設定する為の警告を出力するよう変更された。 -
[libvirt]/sysinfo_serial
設定パラメータの設定値(選択肢)にunique
値を追加した。これはゲストのシリアルナンバーにinstance.uuid
を設定する。今回この値がデフォルトとなった。この値は、インスタンスがホスト間をマイグレーションした際にゲストのシリアルが同一である事を保証する。 -
Pike リリースで廃止予定になった
caching_scheduler
スケジューラドライバが今回削除された。nova-manage placement heal_allocations
コマンドで CacheSchedulerを FilterScheduler にマイグレーションできる。いまだにUSES_ALLOCATION_CANDIDATES = False
を設定して Placement サービスを回避している独自のスケジューラを使用している場合、openstack-dev ML か Freenode IRC の #openstack-nova チャネルで Nova 開発チームに連絡をとってほしい。 -
Queens リリースで廃止予定になった以下のポリシールールが削除された。
os_compute_api:os-config-drive
os_compute_api:os-extended-availability-zone
os_compute_api:os-extended-status
os_compute_api:os-extended-volumes
os_compute_api:os-keypairs
os_compute_api:os-server-usage
-
os_compute_api:os-security-groups
(only from /servers APIs) os_compute_api:os-flavor-rxtx
-
os_compute_api:os-flavor-access
(only from /flavors APIs) os_compute_api:image-size
-
Pike リリースで廃止予定になった以下のポリシールールが削除された。
os_compute_api:flavors
os_compute_api:os-server-groups
-
Pike リリースで廃止予定になった以下のポリシールールが削除された。
-
os_compute_api:os-flavor-manage
代わりに以下のルールを使用する事。 os_compute_api:os-flavor-manage:create
os_compute_api:os-flavor-manage:delete
-
-
ライブマイグレーションと evacuation で移行先ホストを強制する機能が廃止された。理由は、複雑なリソース割当付きのサーバでこうしたリクエストをサポートできないからである。移行先ホスト指定のライブマイグレーションと evacuation リクエストは可能で、スケジューラにより検証される。
-
Queens リリースで廃止予定になった
quota
グループの以下の設定オプションが削除された。reservation_expire
until_refresh
max_age
-
Pike リリースで廃止予定になった
chance_scheduler
が削除された。同様のスケジューリングが必要な場合、filter_scheduler
でAllHostsFilter
を有効にし、[filter_scheduler]/host_subset_size
を調整する事で同様の動作が実現される。 -
[filter_scheduler]/soft_affinity_weight_multiplier
,[filter_scheduler]/soft_anti_affinity_weight_multiplier
設定オプションは最小値が 0.0 になった。また、廃止予定の[DEFAULT]
グループへのエイリアスが削除された。このため、これらのオプションは[filter_scheduler]
グループに含まれていなければならない。 -
Rocky リリースから
nova-consoleauth
サービスが廃止予定になり、新しいコンソールはnova-consoleauth
バックエンドの DB に加えて セル DB にも認証トークンが保存される。これにより、コンソールプロキシーはセル単位で動かす必要がある。
廃止予定
-
config_drive_format
設定オプションが廃止予定になった。これは Libvirt 1.2.17 移行における問題を回避する為のものである。 -
CoreFilter
,DiskFilter
,RamFilter
が廃止予定になった。filter_scheduler
ドライバ使用時、VCPU, DISK_GB, MEMORY_MB フィルタリングは Placement サービスを使用して処理される。caching_scheduler
ドライバは以前これらのフィルタに依存するが、caching_scheduler
ドライバ自体が廃止予定である。 -
[workarounds] disable_libvirt_livesnapshot
設定オプションが廃止予定になった。これは Libvirt 1.2.2 の問題を回避する為のものであり、Nova は既にこのバージョンをサポートしていない。 -
nova-consoleauth
サービスが廃止予定になった。コンソールトークン認証ストレージは Rocky リリースで nova-consoleauth サービスバックエンドから DB バックエンドへの移行が始まった。Stein リリースでは DB バックエンドのみが使用される。 -
nova-xvpvncproxy
サービスは Xen 専用であるため廃止予定になった。この機能は noVNC とnova-novncproxy
サービスで代替される。 -
nova-network
サービスのみが使用していた[DEFAULT]defer_iptables_apply
がnova-network
と同様廃止予定にあった。