10.4. オーバークラウドのアップグレード

重要

以下の手順のステップを試す前に 「アップグレード前の重要な注記」 の情報を一読するようにしてください。

重要

このプロセスを実行中のトラブルシューティングのステップに関しては「アップグレードのトラブルシューティング」を参照してください。
本項には、オーバークラウドのアップグレードに必要な手順を記載します。各セクションを順番に従って進み、お使いの環境に関連するセクションのみを適用します。
このプロセスでは、ステージごとに分けた手法を使用してアップグレードを行うには openstack overcloud deploy コマンドを複数回実行する必要があります。コマンドを実行する度に、既存の環境ファイルに、別のアップグレードの環境ファイルが追加されます。これらの新しいアップグレード環境ファイルには、以下のようなファイルがあります。
  • major-upgrade-pacemaker-init.yaml: アップグレードの初期設定を行います。これには、オーバークラウドの各ノードにある Red Hat OpenStack Platform のリポジトリーの更新や、特定のノードへの特別なアップグレードスクリプトの提供などが含まれます。
  • major-upgrade-pacemaker.yaml: コントローラーノードをアップグレードします。
  • major-upgrade-pacemaker-converge.yaml: オーバークラウドのアップグレードを最終確認します。
これらのデプロイメントのコマンドの間に、さまざまなタイプのノードで upgrade-non-controller.sh スクリプトを実行します。このスクリプトにより、1 つのノードでパッケージが更新されます。
以下の手順を使用して、オーバークラウドをアップグレードしてください。
  1. アンダークラウドから openstack overcloud deploy を実行して、major-upgrade-pacemaker-init.yaml の環境ファイルを追加します。ネットワークの分離やストレージなどお使いの環境に適したカスタムの環境ファイルも含めるようにしてください。

    重要

    Red Hat OpenStack Platform 7 のカスタムの NIC テンプレートを使用している場合は、NIC テンプレートの parameters セクションに ManagementSubnetIp パラメーターを追加してください。
    parameters:
      ManagementIpSubnet: # Only populated when including environments/network-management.yaml
        default: ''
        description: IP address/subnet on the management network
        type: string
    
    以下は、openstack overcloud deploy コマンドで、ファイルも追加した例です。
    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml  \
      -e network_env.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-init.yaml
    新しい環境ファイルの設定でオーバークラウドが更新されるまで待機します。
  2. director には、コントローラー以外のノードを個別にアップグレードするスクリプトが含まれます。まず、各 Swift ノードをアップグレードします。
    $ nova list
    $ upgrade-non-controller.sh --upgrade [swift-uuid]
    
  3. コントローラーノードをアップグレードします。この際に、高可用性ツールを実行するコントローラーノードへの完全アップグレードを提供する別の環境ファイル (major-upgrade-pacemaker.yaml) が追加されます。この環境ファイルを使用して openstack overcloud deploy をもう 1 度実行します。また、ネットワークの分離やストレージなどお使いの環境に適したカスタムの環境ファイルも含めるようにしてください。
    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
      -e network_env.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker.yaml
    新しい環境ファイルの設定でオーバークラウドが更新されるまで待機します。

    重要

    このステップは、コントローラーのアップグレードの際に Neutron サーバーおよび L3 エージェントを無効化します。これは、Floating IP アドレスがこのステップでは利用できないということを意味します。

    重要

    このステップでオーバークラウドのスタックが機能しなくなった場合は、コントローラーノードの 1 つにログインして、sudo pcs cluster start を実行してから director でもう 1 度 openstack overcloud deploy を実行します。
  4. 各コンピュートノードをアップグレードします。コンピュートノードをアップグレードする際には upgrade-non-controller.sh スクリプトも使用しますが、ダウンタイムを回避するには、コンピュートノードが新しい仮想マシンを起動したり、既存の仮想マシンを別のコンピュートノードに以降したりしないようにすることを推奨します。このプロセスに関する情報は「オーバークラウドのコンピュートノードからの仮想マシンの移行」を参照してください。移行後には、アップグレードのコマンドを実行します。
    $ nova list
    $ upgrade-non-controller.sh --upgrade [compute-uuid]
    
    アップグレードを完了した後には、以下のコマンドでコンピュートノードをもう 1 度有効化します。
    $ nova list
    $ nova service-enable [hostname] nova-compute
    
  5. 各 Ceph Storage ノードをアップグレードします。
    $ nova list
    $ upgrade-non-controller.sh --upgrade [ceph-uuid]
    
  6. 最終的なアップグレードを実行します。これには、別の環境ファイル (major-upgrade-pacemaker-converge.yaml) を使用し、このファイルを使用するには、openstack overcloud deploy コマンドを使用します。また、ネットワークの分離やストレージなどお使いの環境に適したカスタムの環境ファイルも含めるようにしてください。以下に例を示します。
    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
      -e network_env.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-converge.yaml
    新しい環境ファイルの設定でオーバークラウドが更新されるまで待機します。
これで、オーバークラウドのアップグレード手順が完了しました。
オーバークラウドを Red Hat OpenStack Platform 8 にアップグレードした後には以下の点に注意してください。
  • コンピュートノードが neutron-openvswitch-agent の問題をレポートする可能性があります。これが発生した場合には、各コンピュートノードにログインして、このサービスを再起動します。以下のようなコマンドを実行します。
    $ sudo systemctl restart neutron-openvswitch-agent
    
  • 更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。必要な場合には、更新コマンドが完了した後に手動で再起動を実行してください。クラスターベースのノード (Ceph Storage ノードやコントローラーノード) を個別に再起動して、ノードがクラスターに再度参加するまで待機します。Ceph Storage ノードの場合は、ceph health で確認して、クラスターのステータスが HEALTH OK であることを確認します。コントローラーノードの場合は、pcs resource で確認して、各ノードですべてのリソースが実行されていることを確認してください。
  • 状況によっては、コントローラーノードの再起動後に IPv6 環境で Corosync の起動に失敗する可能性があります。これは、コントローラーノードが静的な IPv6 アドレスを設定する前に Corosync が起動してしまうことが原因です。このような場合は、コントローラーノードで Corosync を手動で再起動してください。
    $ sudo systemctl restart corosync
    
  • コントローラーノードにフェンシングを設定している場合には、更新プロセスによってその設定が無効になる場合があります。 更新プロセスの完了時には、コントローラーノードの 1 つで以下のコマンドを実行してフェンシングを再度有効にします。
    $ sudo pcs property set stonith-enabled=true
    
  • 次回、オーバークラウドのスタックを更新またはスケーリングする場合には (openstack overcloud deploy コマンドの実行)、オーバークラウドでのパッケージの更新をトリガーする ID をリセットする必要があります。空の UpdateIdentifier パラメーターを環境ファイルに追加して、openstack overcloud deploy コマンドの実行時にこれを指定します。以下は、このような環境ファイルのサンプルです。
    parameter_defaults:
      UpdateIdentifier: