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 7 から Red Hat OpenStack Platform 8 にアップグレードします。

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

重要

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

注記

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

注記

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

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

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

# subscription-manager repos --disable=rhel-7-server-openstack-7.0-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-8-rpms

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

# yum upgrade openstack-selinux

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

5.2. Identity (keystone) および Dashboard (horizon) のアップグレード

Identity サービスと Dashboard サービスを無効にします。設定に応じて、以下のいずれかの作業を実行する必要があります。

  1. Dashboard と Identity の両サービスが WSGI アプレットとして実行されている場合には、httpd を無効にします。

    # systemctl stop httpd
  2. Identity サービスが別個のサービスとして実行されている場合には、その openstack-keystoneを無効にしてから、Dashboard 用の httpd を無効にします。

    # openstack-service stop keystone
    # 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
# openstack-db --service keystone --update

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

サービスを再起動します。これには、設定に応じて以下のいずれかの作業を実行する必要があります。

  1. Dashboard と Identity の両サービスが WSGI アプレットとして実行されている場合には、httpd を有効にします。

    # systemctl start httpd
  2. Identity サービスが別個のサービスとして実行されている場合には、その openstack-keystoneを無効にしてから、Dashboard 用の httpd を有効にします。

    # openstack-service start keystone
    # systemctl start httpd

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

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

# openstack-service stop swift
# yum -d1 -y upgrade \*swift\*
# openstack-service start swift

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

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

# openstack-service stop glance
# yum -d1 -y upgrade \*glance\*
# openstack-db --service glance --update
# openstack-service start glance

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

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

# openstack-service stop cinder
# yum -d1 -y upgrade \*cinder\*
# openstack-db --service cinder --update
# openstack-service start cinder

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

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

# openstack-service stop heat
# yum -d1 -y upgrade \*heat\*
# openstack-db --service heat --update
# openstack-service start heat

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

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

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

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

    # openstack-service start ceilometer

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

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

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

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

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

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

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

    # openstack-service stop nova
    # yum -d1 -y upgrade \*nova\*
    # openstack-db --service nova --update
  3. 全ホストをアップグレードした後には、以前のステップで設定した API の制限を削除します。全ホスト上で以下のコマンドを実行します。

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

    # openstack-service start nova

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

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

    # openstack-service stop neutron
    # yum -d1 -y upgrade \*neutron\*
    # openstack-db --service neutron --update
  2. OpenStack Networking サービスを再起動します。

    # openstack-service start neutron

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

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

# yum upgrade

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

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

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