Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

4.5. RHBA-2018:2574: OpenStack director のバグ修正アドバイザリー

本項に記載するバグは、アドバイザリー RHBA-2018:2574 で対応しています。このアドバイザリーについての詳しい情報は、RHBA-2018:2574 - Bug Fix Advisory を参照してください。

instack-undercloud

以前のリリースでは、Red Hat OpenStack のアンダークラウドのアップグレードは、オーバークラウドがエラー状態の時には失敗していました。アップグレードプロセスの設定後のステップでコンバージェンスアーキテクチャーを使用するためにオーバークラウドスタックのマイグレーションを試みる際に暗号化のエラーでかなり遅い段階でエラーが発生していました。今回のリリースでは、エラーは早期に発生し、アンダークラウドのアップグレードは続行されなくなりました。アンダークラウドのアップグレードの最初にエラーが表示されます。ユーザーは、アンダークラウドのアップグレードを行う前にオーバークラウドが *_COMPLETE の状態であることを確認する必要があります。

以前のリリースでは、local_mtu のパラメーターが 1900 に設定されていて undercloud.conf に指定されている場合には、アンダークラウドのインストールが失敗していました。local_mtu の値が 1500 よりも大きな場合には、アンダークラウドのインストールが失敗しました。global_physnet_mtu を local_mtu に設定してください。local_mtu の値が 1500 より大きくてもアンダークラウドのインストールは成功します。

SSL を有効化したアンダークラウドではインストール中に ERROR: epmd error というエラーメッセージが表示されて操作が失敗する場合があります。このエラーは、ホスト名と一致する仮想 IP が rabbitmq の後に keepalived によって設定されていたためことが原因です。rabbitmq の前に keepalived を設定するようにしてください。これにより、アンダークラウドのインストールは失敗しなくなります。

openstack-tripleo

NFV がデプロイされた RHOSP 10 から RHOSP 13 にアップグレードする手順が再テストされ、DPDK および SR-IOV の環境向けに更新されました。

openstack-tripleo-common

以前のリリースでは、openstack undercloud backup コマンドは、拡張属性をキャプチャーしませんでした。これにより、アンダークラウドの Swift ストレージのオブジェクトメタデータが失われ、レンダリングを使用できませんでした。今回の修正により、バックアップアーカイブの作成時に--xattrs フラグが追加されました。アンダークラウドの Swift ストレージのオブジェクトはバクアップ中に拡張属性を維持するようになりました。

アンダークラウドが instackenv.json ファイルからベアメタルノードをインポートする場合、UCS ドライバーの設定中に pm_service_profile (または ucs_service_profile) フィールドのみで一致しない ironic ノードは ironic の設定で相互にオーバーライドしていました。このため、その ironic ノードの 1 つが設定で指定されていました。openstack-tripleo-common が更新され、pm_service_profile (または ucs_service_profile) フィールドでのみ一致しない ironic ノードは、引き続き別個とみなされるようになりました。pm_service_profile または ucs_service_profile のフィールドでのみ異なる ironic ノードはすべて ironic にインポートされます。

オーバークラウドをデプロイする前に、クラスター向けに stonith リソースを自動作成することができます。デプロイメントを開始する前に、コマンド openstack overcloud generate fencing --ipmi-lanplus --output /home/stack/fencing.yaml /home/stack/instackenv.json を実行します。

次に、デプロイコマンドの引数リストに-e /home/stack/fencing.yaml を渡します。これで、クラスターに必要な stonith リソースが自動的に作成されます。

派生パラメーターのワークフローで、オーバークラウドノードを特定するための SchedulerHints の使用がサポートされるようになりました。以前のリリースでは、このワークフローでは SchedulerHints を使用して、対応する TripleO オーバークラウドロールに関連付けられたオーバークラウドノードを特定できませんでした。このため、オーバークラウドのデプロイメントは失敗していました。SchedulerHints のサポートにより、このようなエラーが防がれます。

OpenDaylight 向けの docker healthcheck では、OpenDaylight で REST インターフェイスと neutron NB コンポーネントのみが正常であることを確認していました。この healthcheck には、ローディングされているすべての OpenDaylight コンポーネントが含まれていなかったため正確ではありませんでした。ローディングされている OpenDaylight コンポーネントをすべてチェックするには、docker healthcheck と共に diagstatus URI を使用してください。これで、OpenDaylight docker コンテナーのヘルスステータスはより正確になります。

openstack-tripleo-heat-templates

manila-share サービスのコンテナーは、コントロラーホストからの PKI トラストストアへのバインドマウントに失敗していました。その結果、manila-share サービスからストレージバックエンドへの接続は SSL を使用して暗号化できませんでした。PKI トラストストアをコントローラーホストから manila-share サービスのコンテナーにバインドマウントします。これで、manila-share サービスからストレージバックエンドの接続は SSL を使用して暗号化できるようになります。

libvirtd のライブマイグレーションのポート範囲の変更により、ライブマイグレーションでエラーが発生しないようになりました。以前のリリースでは、libvirtd のライブマイグレーションのポート範囲は qemu.conf ファイルで指定されている 49152 から 49215 まででした。Linux では、この範囲は 32768 から 61000 までのエフェメラルポート範囲のサブセットです。エフェメラル範囲内のポートはいずれも他のサービスが使用可能です。その結果、ライブマイグレーションは Live Migration failure: internal error: Unable to find an unused port in range 'migration' (49152-49215) というエラーで失敗していました。libvirtd ライブマイグレーションの新しいポート範囲 (61152 から 61215 まで) はエフェメラル範囲外です。したがって、関連するエラーは発生しなくなりました。

以前のリリースでは、オーバークラウドノードから ceph-osd パッケージを削除する際に対応する Ceph のプロダクトキーが削除されませんでした。そのため、subscription-managerceph-osd パッケージがまだインストールされていると誤った報告をしていました。今回のリリースでは、ceph-osd パッケージの削除を処理するスクリプトにより、対応する Ceph のプロダクトキーも削除されるようになりました。ceph-osd パッケージとプロダクトキーを削除するスクリプトは、オーバークラウドの更新中にのみ実行されます。その結果、subscription-manager list は Ceph OSD がインストールされているという報告をしなくなりました。

コンテナーがデフォルトのデプロイメント方法になりました。ベアメタルサービスを environments/baremetal-services.yaml でデプロイする方法はまだ使用できますが、いずれはなくなる見込みです。

environments/services-docker を参照するリソースレジストリーが記載された環境ファイルで、environments/services パスに変更する必要があります。デプロイされているベアメタルサービスを確保する必要がある場合には、最初に配置した environments/services の代わりに environments/services-baremetal に参照を更新してください。

以前のリリースでは、Sahara 用の Fast Forward Upgrade パスをサポートするコードが含まれていませんでした。その結果、Fast Forward Upgrade で 10 から 13 にアップグレードした後に Sahara のサービスに必要なすべての変更が適用されませんでした。今回の更新で問題が解決し、Sahara サービスは Fast Forward Upgrade を実行した後に正常に機能するようになりました。

OpenDaylight ログの正しいパスが記載された README が /var/log/opendaylight に追加されました。

CephFS-NFS ドライバーのデプロイメントでは、CephFS によってバッキングされる NFS-Ganesha サーバーが dentry、inode、属性のキャッシュを実行します。これは、libcephfs クライアントによっても実行されます。NFS-Ganesha サーバーの冗長なキャッシュにより、メモリーフットプリントが大きくなり、またキャッシュの一貫性にも影響を及ぼしていました。NFS-Ganesha サーバーの inode、dentry、属性のキャッシュはオフにしてください。これにより、NFS-Ganesha サーバーのメモリーフットプリントが小さくなります。キャッシュの一貫性で問題が発生する可能性も低くなります。

TripleO の capabilities-map.yaml は、間違ったファイルの場所で Cinder の Netapp バックエンドを参照していました。UI はケイパビリティーマップを使用するので、Cinder の Netapp 設定ファイルにはアクセスできませんでした。capabilities-map.yaml は、Cinder の Netapp 設定の正しい場所を指定するように更新されました。UI の Cinder Netapp バックエンド用のプロパティータブは正常に機能するようになりました。

Dell-EMC のストレージシステム (VNX、Unity、VMAX) 用の Manila の設定マニフェストには誤った設定オプションが記載されていました。その結果、オーバークラウドで manila-share を Dell ストレージシステムと共にデプロイすると操作が失敗していました。今回の更新で、Dell-EMC ストレージシステム (VNX、Unity、VMAX) 用の Manila の設定マニフェストは修正されました。オーバークラウドで manila-share サービスを Dell ストレージシステムと共にデプロイする操作は正常に完了するようになりました。

アンダークラウド上で Telemetry が手動で有効化された場合には、各ノードのファイアウォールの間違った設定が原因で hardware.* メトリックは機能しません。回避策としては、次のようにアンダークラウドデプロイメント用に更にテンプレートを追加することによって、コントロールプレーンネットワークで snmpd サブネットを手動で設定する必要があります。parameter_defaults: SnmpdIpSubnet: 192.168.24.0/24

コンテナーからの standard_init_linux.go:178: exec user process caused "text file busy"というエラーログで、まれにデプロイメントが失敗する場合があります。競合を回避してデプロイメントが失敗しないようにするには、docker-puppet.sh file を複数回同時に書き出さないようにしてください。

IPv6 を無効にするために KernelDisableIPv6 のパラメーターを true に設定すると、デプロイメントは rabbitmq エラーで失敗していました。これは、初期化を正しく行うために、少なくともループバックインターフェイスが IPv6 をサポートしていることが Erlang Port Mapper Daemon の要件であるためです。ipv6 を無効にしている場合にデプロイメントが正常に完了するには、ループバックインターフェイス上で IPv6 を無効にしないでください。

Docker が使用していた journald バックエンドは、サイズに基づいてログをロールオーバーしていました。このため、一部の古い OpenDaylight ログが削除されていました。この問題は、コンソールの代わりにファイルにログ記録する方法に移行することで解決し、ロールオーバーは OpenDaylight によって管理できるようになりました。その結果、古いログは以前よりも長い期間保持されます。

以前のリリースでは、モニターリング目的の RabbitMQ インスタンス用に標準以外のポートを使用する場合は、コンテナーのヘルスチェックでポートの値が反映されなかったために、sensu-client コンテナーが unhealthy の状態を報告していました。今回のリリースでは、コンテナーのヘルスチェックでポートの値が表示されるようになりました。

削除済みのデータベースレコードのデフォルトのパージ期間が修正され、Cinder のデータベースから削除済みのレコードがパージされるようになりました。以前のリリースでは、Cinder のパージ cron ジョブの CinderCronDbPurgeAge 値に誤った値が使用されており、必要なデフォルト期間に達した際に、削除済みのレコードが Cinder の DB からパージされませんでした。

OSP 13 の TripleO Heat テンプレートの single-nic-vlans ネットワークテンプレートでは、Ceph ノード用のブリッジ名が間違っていました。以前のデプロイメントで single-nic-vlans テンプレートが使用されていた場合には、OSP 13 にアップグレードすると Ceph ノードでエラーが発生していました。今回のリリースでは、Ceph ノードの single-nic-vlans テンプレートで以前のバージョンのブリッジ名と一致する br-storage というブリッジ名が使用されるようになりました。single-nic-vlans テンプレートを使用する環境における OSP 13 へのアップグレードは Ceph ノードで正常に実行できるようになりました。

以前のバージョンでは、*NetName パラメーター (例: InternalApiNetName) によってデフォルトのネットワークの名前が変更されていました。このパラメーターはサポートされなくなりました。デフォルトのネットワーク名を変更するには、カスタムのコンポーザブルネットワークファイル (network_data.yaml) を使用して、openstack overcloud deploy コマンドに-n オプションを指定してそのファイルを追加してください。このファイルで、name_lower フィールドに変更するネットワークのカスタム net 名を指定します。詳しい情報は、オーバークラウドの高度なカスタマイズのカスタムコンポーザブルネットワークを参照してください。また、ServiceNetMap テーブルのローカルパラメーターを network_environment.yaml に追加して、古いネットワーク名のデフォルト値を新しいカスタム名でオーバーライドする必要があります。デフォルト値は /usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml にあります。この ServiceNetMap の変更は、今後の OSP-13 リリースでは必要なくなります。

以前のリリースでは、yaml-nic-config-2-script.py には対話式のユーザーインプットが必要でした。このスクリプトは、自動化目的のために非対話式の方法では呼び出せませんでした。今回のリリースでは--yes のオプションが追加されました。yaml-nic-config-2-script.py に--yes オプションを指定して呼び出すことができるようになり、その場合にはユーザーは対話式のインプットを要求されません。

以前のリリースでは、tripleo-heat-templates の一部のバージョンで fixed-ips-v6.yaml 環境ファイル内の Redis 仮想 IP ポートの設定にエラーが含まれていました。デプロイメントコマンドラインで network-isolation-v6.yaml の後に fixed-ips-v6.yaml のファイルを指定すると、Redis サービスは正しい IPv6 ネットワークではなく Control Plane ネットワークに配置されていました。今回の更新により、environments/fixed-ips-v6.yaml のファイルには、network/ports/vip.yaml ではなく、正しい network/ports/vip_v6.yaml への参照が含まれるようになりました。fixed-ips-v6.yaml 環境ファイルには正しいリソースレジストリーのエントリーが含まれるので、指定される環境ファイルの順序に拘らず、Redis の仮想 IP は IPv6 アドレスで作成されます。

ホスト上で実行されていた Cinder サービスがコンテナー内で実行されるように移行した場合に、TripleO の BlockStorage ロールが更新されませんでした。cinder-volume サービスが BlockStorage ホストにデプロイされていました。今回のリリースでは BlockStorage ロールが更新され、cinder-volume サービスをコンテナー内にデプロイするようになりました。cinder-volume サービスはコンテナー内で正しく実行されます。

以前のリリースでは、Manila の設定を変更してオーバークラウドを更新すると、それらの変更は、コンテナー化された Manila share-service にデプロイされませんでした。今回の修正により、変更のデプロイが正常に実行されるようになりました。

/var/lib/nova/instances の共有ストレージで、nfs と同様に、任意のコンピュートで nova_compute を再起動すると、インスタンスの仮想一時ディスクと console.log の所有者/グループが変更されていました。その結果、インスタンスは仮想一時ディスクにアクセスできなくなり、機能しなくなっていました。今回の更新で、/var/lib/nova/instances 内のインスタンスのファイルの所有権を変更するスクリプトが改善されました。nova compute の再起動中にインスタンスのファイルへのアクセスは失われなくなりました。

Cinder の Netapp バックエンドのデプロイに使用されていた TripleO の環境ファイルは古く、誤ったデータが含まれていました。このため、オーバークラウドのデプロイメントが失敗していました。今回のリリースで、Cinder Netapp 環境ファイルが更新されて正しくなりました。オーバークラウドを Cinder Netapp バックエンドと共にデプロイできるようになりました。

以前のリリースでは、libvirtd のライブマイグレーションのポート範囲は qemu.conf ファイルで指定されている 49152 から 49215 まででした。Linux では、この範囲は 32768 から 61000 までのエフェメラルポート範囲のサブセットです。エフェメラル範囲内のポートはいずれも他のサービスが使用可能です。その結果、ライブマイグレーションは Live Migration failure: internal error: Unable to find an unused port in range 'migration' (49152-49215) というエラーで失敗していました。libvirtd ライブマイグレーションの新しいポート範囲 (61152 から 61215 まで) はエフェメラル範囲外です。

以前のリリースでは、NIC の設定テンプレートに空白行があり、その後の行頭にコンマがある場合には、yaml-nic-config-2-script.py は次の行の最初のコラムをリセットしませんでした。スクリプトによって変換された NIC の設定テンプレートは無効で、デプロイメントが失敗していました。今回の更新により、スクリプトは空白行を検出した場合にそのコラムの値を正しく設定するようになりました。空白行の後の行頭にコンマがあるテンプレートは正しく変換されるようになりました。

puppet-nova

Nova の libvirt ドライバーは、CPU モデルの設定時に、CPU 機能のフラグをより細かく指定できるようになりました。この変更の 1 つの利点は、"Meltdown" CVE の修正を適用した後に、Intel ベースの仮想 CPU モデルで実行しているゲスト上でパフォーマンスの低下が軽減される点が挙げられます。ゲストのパフォーマンスに対する影響は、CPU 機能フラグ PCID(Process-Context ID) を guest CPU に公開することによって軽減されます。これは、物理ハードウェア自体の中に PCID フラグが利用可能であることを前提とします。この変更により、PCID のみが CPU 機能フラグであった制限がなくなり、複数の CPU フラグの追加/削除が可能となったため、他のユースケースに対応するようになりました。詳しい情報は、nova.conf[libvirt]/cpu_model_extra_flags の説明を参照してください。

puppet-opendaylight

OpenDaylight は OpenFlow (OF) の統計を定期的にポーリングします。この統計は、現在どこでも使用されていません。この動作は OpenDaylight のパフォーマンスに影響を及ぼします。OF の統計のポーリングを無効にすると、OpenDaylight のパフォーマンスを向上させることができます。

puppet-tripleo

以前のリリースでは、競合状態が原因でインスタンス HA デプロイメントが失敗し、Error: unable to get cib というエラーが表示されていました。この競合は、pacemaker クラスターが完全に稼動状態になる前に pacemaker のプロパティーが設定されていたために発生し、unable to get cib のエラーで操作が失敗していました。今回の修正により、IHA を使用する場合に、デプロイメントでエラーが発生しなくなりました。

以前のリリースでは、stack の名前に大文字を使用するとデプロイメントが失敗していました。今回の更新では、stack の名前に大文字が使用されていてもデプロイメントが成功するようになりました。具体的には、コンテナー内の bootstrap_host スクリプトにより文字列が小文字に変換され、pacemaker プロパティーも同じように変換されます。

ローテーションされるログをデフォルトで圧縮する、コンテナー化された logrotate サービスの圧縮オプションが追加されました。delaycompress オプションを使用すると、ログファイルの最初のローテーションは圧縮されないようになります。

以前のリリースでは、Cinder の Netapp バックエンドの一部の非推奨パラメーターに空の文字列の値を設定すると、Cinder ドライバーの設定が無効となり、Cinder の Netapp バックエンドドライバーの初期化中にエラーが発生していました。今回の更新では、Netapp の非推奨パラメーターの空の文字列の値は、有効な Netapp ドライバーの設定に変換されます。したがって、Cinder の Netapp バックエンドドライバーは正常に初期化されるようになりました。

以前のリリースでは、Cinder Netapp バックエンドは CinderNetappNfsMountOptions TripleO Heat パラメーターを無視していたため、TripleO Heat パラメーターによる Netapp NFS のマウントオプションの設定ができませんでした。今回の更新で、Cinder の Netapp の設定を処理するコードは CinderNetappNfsMountOptions パラメーターを無視しないようになりました。CinderNetappNfsMountOptions パラメーターにより、Cinder の Netapp NFS マウントオプションが正しく設定されます。

バージョンのアップグレード中に、Cinder のデータベースの同期はブートストラップモードでのみ実行されるようになりました。これにより、全コントローラーノードでデータベースの同期が実行された際に発生していたデータベースの同期およびアップグレードでのエラーが防がれるようになりました。