Red Hat Training

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

第5章 director を使用しない環境: 標準的な環境内の個別の OpenStack サービス (稼働中の Compute) のアップグレード

以下の項では、非高可用性の環境において Compute を並行稼働させて個別のサービスを更新する方法でクラウドデプロイメントをアップグレードする場合に従う必要のある手順を記載します。このシナリオは、director を使用しない環境 で Red Hat OpenStack Platform 9 から Red Hat OpenStack Platform 10 にアップグレードします。

稼働中の Compute を使用してアップグレードを行うと、Compute サービスの中断が最小限に抑えられます。小規模なサービスの場合はわずか数分ですが、新たにアップグレードされたコンピュートホストにワークロードを移動する場合は、移行の所要時間がより長くなります。既存のワークロードは無期限で稼働させることが可能です。また、データベース移行を待つ必要はありません。

重要

特定のパッケージの依存関係が原因で、OpenStack サービスのパッケージのアップグレードを試みると、OpenStack のサービスがアップグレードされる前に、Python ライブラリーがアップグレードされてしまう場合があります。そのために、特定のサービスが完了前に失敗する可能性があります。このような状況が発生した場合には、残りのサービスのアップグレードを継続します。このシナリオが完了すると、全サービスが稼動状態になるはずです。

注記

この方法では、コンピュートノードを稼働させるのに追加のハードウェアリソースが必要となる場合があります。

注記

本章に記載する手順は、すべての Red Hat OpenStack Platform ドキュメントで順守しているアーキテクチャー命名規則に従います。この規則に精通していない場合には、手順を開始する前に Red Hat OpenStack Platform ドキュメントスイート で『アーキテクチャーガイド』を参照してください。

5.1. アップグレード前のタスク

各ノードで subscription-manager コマンドを使用して、Red Hat OpenStack Platform 10 リポジトリーに変更します。

# subscription-manager repos --disable=rhel-7-server-openstack-9-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-10-rpms

更新を実行する前に、OpenStack サービスの systemd スナップショットを作成します。

# systemctl snapshot openstack-services

主要な OpenStack Platform サービスを無効にします。

sudo systemctl stop 'openstack-*'
sudo systemctl stop 'neutron-*'
sudo systemctl stop 'openvswitch'

openstack-selinux パッケージをアップグレードします。

# yum upgrade openstack-selinux

これは、アップグレードしたサービスが SELinux が有効なシステムで正しく実行されるようにするために必要です。

5.2. WSGI サービスのアップグレード

Identity サービスと Dashboard WSGI アプレットを無効にします。

# systemctl stop httpd

両サービスのパッケージを更新します。

# yum -d1 -y upgrade \*keystone\*
# yum -y upgrade \*horizon\* \*openstack-dashboard\*
# yum -d1 -y upgrade \*horizon\* \*python-django\*

Identity サービスのトークンテーブルには、多数の期限切れエントリーが含まれている可能性があります。その場合には、データベーススキーマのアップグレードの所要時間が大幅に長くなる可能性があります。期限切れのトークンをデータベースからフラッシュして問題を緩和するには、Identity のデータベースのアップグレードを実行する前に、keystone-manage コマンドを使用することができます。

# keystone-manage token_flush
# su -s /bin/sh -c "keystone-manage db_sync" keystone

このコマンドにより、データベースから期限切れのトークンがフラッシュされます。cron を使用して、このコマンドが定期的に実行されるように設定してください。

httpd サービスを再起動します。

# systemctl start httpd

5.3. Object Storage (swift) のアップグレード

Object Storage ホストで以下のコマンドを実行します。

# systemctl stop '*swift*'
# yum -d1 -y upgrade \*swift\*
# systemctl start openstack-swift-account-auditor \
    openstack-swift-account-reaper \
    openstack-swift-account-replicator \
    openstack-swift-account \
    openstack-swift-container-auditor \
    openstack-swift-container-replicator \
    openstack-swift-container-updater \
    openstack-swift-container \
    openstack-swift-object-auditor \
    openstack-swift-object-replicator \
    openstack-swift-object-updater \
    openstack-swift-object \
    openstack-swift-proxy

5.4. Image サービス (glance) のアップグレード

Image サービスのホストで以下のコマンドを実行します。

# systemctl stop '*glance*'
# yum -d1 -y upgrade \*glance\*
# su -s /bin/sh -c "glance-manage db_sync" glance
# systemctl start openstack-glance-api \
    openstack-glance-registry

5.5. Block Storage (cinder) のアップグレード

Block Storage ホストで以下のコマンドを実行します。

# systemctl stop '*cinder*'
# yum -d1 -y upgrade \*cinder\*
# su -s /bin/sh -c "cinder-manage db sync" cinder
# systemctl start openstack-cinder-api \
    openstack-cinder-scheduler \
    openstack-cinder-volume

5.6. Orchestration (heat) のアップグレード

Orchestration ホストで以下のコマンドを実行します。

# systemctl stop '*heat*'
# yum -d1 -y upgrade \*heat\*
# su -s /bin/sh -c "heat-manage db_sync" heat
# systemctl start openstack-heat-api-cfn \
    openstack-heat-api-cloudwatch \
    openstack-heat-api \
    openstack-heat-engine

5.7. Telemetry (ceilometer) のアップグレード

注記

このコンポーネントには、「7章director を使用しない環境向けの追加の手順」に記載したように、追加のアップグレード手順がいくつかあります。これらの追加手順は、手動の環境ではオプションですが、現在の OpenStack の推奨事項に合わせるのに役立ちます。

  1. Telemetry コンポーネントサービスをホストする全ノードで以下のコマンドを実行します。

    # systemctl stop '*ceilometer*'
    # systemctl stop '*aodh*'
    # systemctl stop '*gnocchi*'
    # yum -d1 -y upgrade \*ceilometer\* \*aodh\* \*gnocchi\*
  2. Image サービスのホストで以下のコマンドを実行します。

    # ceilometer-dbsync
    # aodh-dbsync
    # gnocchi-upgrade
  3. パッケージのアップグレードが完了した後には、Telemetry コンポーネントサービスをホストする全ノードで以下のコマンドを実行して Telemetry サービスを再起動します。

    # systemctl start openstack-ceilometer-api \
        openstack-ceilometer-central \
        openstack-ceilometer-collector \
        openstack-ceilometer-notification \
        openstack-aodh-evaluator \
        openstack-aodh-listener \
        openstack-aodh-notifier \
        openstack-gnocchi-metricd \
        openstack-gnocchi-statsd

5.8. Compute (nova) のアップグレード

  1. コンピュートホストのローリングアップグレードを行うには、明示的に API のバージョンの制限を設定して、環境内の互換性を確保する必要があります。

    コントローラーノードまたはコンピュートノードで Compute サービスを起動する前に、nova.conf ファイルの [upgrade_levels] セクションで、compute オプションを以前の Red Hat OpenStack Platform バージョン (mitaka) に設定します。

    # crudini --set /etc/nova/nova.conf upgrade_levels compute mitaka

    この変更は、コントローラーノードとコンピュートノードの両方で行う必要があります。

    すべてのコンピュートノードをアップグレードしたら、この操作を元に戻す必要があります。

  2. コンピュートホストで以下のコマンドを実行します。

    # systemctl stop '*nova*'
    # yum -d1 -y upgrade \*nova\*
    # su -s /bin/sh -c "nova-manage api_db sync" nova
    # su -s /bin/sh -c "nova-manage db sync" nova
  3. 全ホストをアップグレードした後には、以前のステップで設定した API の制限を削除します。全ホスト上で以下のコマンドを実行します。

    # crudini --del /etc/nova/nova.conf upgrade_levels compute
  4. すべてのコントローラーノードとコンピュートノードで Compute サービスを再起動します。

    # systemctl start openstack-nova-api \
        openstack-nova-conductor \
        openstack-nova-consoleauth \
        openstack-nova-novncproxy \
        openstack-nova-scheduler

5.9. Clustering (sahara) のアップグレード

  1. Clustering コンポーネントサービスをホストしている全ノードで、以下のコマンドを実行します。

    # systemctl stop '*sahara*'
    # yum -d1 -y upgrade \*sahara\*
  2. Image サービスのホストで以下のコマンドを実行します。

    # su -s /bin/sh -c "sahara-db-manage upgrade heads" sahara
  3. パッケージのアップグレードが完了した後には、Clustering コンポーネントサービスをホストする全ノードで以下のコマンドを実行して Clustering サービスを再起動します。

    # systemctl start openstack-sahara-api \
        openstack-sahara-engine

5.10. OpenStack Networking (neutron) のアップグレード

  1. OpenStack Networking ホストで以下のコマンドを実行します。

    # systemctl stop '*neutron*'
    # yum -d1 -y upgrade \*neutron\*
  2. 同じホストで、OpenStack Networking データベーススキーマを更新します。

    # su -s /bin/sh -c "neutron-db-manage upgrade heads" neutron
  3. OpenStack Networking サービスを再起動します。

    # systemctl start neutron-dhcp-agent \
        neutron-l3-agent \
        neutron-metadata-agent \
        neutron-openvswitch-agent \
        neutron-server
注記

お使いの環境で有効化されている OpenStack Networking の追加のサービスを起動します。

5.11. アップグレード後のタスク

個別サービスのアップグレードをすべて完了した後には、全システムで完全なパッケージアップグレードを行う必要があります。

# yum upgrade

このコマンドは、すべてのパッケージを最新の状態にします。実行中のプロセスが、配下のバイナリーの更新されたバージョンを使用するようにするには、OpenStack ホストの再起動を後日にスケジューリングする必要があります。

上記の操作によって生成された設定ファイルを確認します。アップグレードされたパッケージで、Red Hat OpenStack Platform 10 バージョンのサービスに適した .rpmnew ファイルがインストールされているはずです。

新しいバージョンの OpenStack サービスでは、特定の設定オプションが非推奨になっている可能性があります。このような非推奨の設定オプションが原因で今後のアップグレードの際に問題が発生する可能性があるため、非推奨の警告については OpenStack のログも参照してください。各サービスで新規追加/更新された設定オプションや非推奨となった設定オプションについての詳しい説明は、Red Hat OpenStack Platform ドキュメントスイート で『Configuration Reference』を参照してください。