Red Hat Training

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

第5章 オーバークラウドのアップグレード

以下の手順では、オーバークラウドをアップグレードします。

前提条件

  • アンダークラウドが最新バージョンにアップグレードされていること
  • アップグレードでの変更に対応するためのカスタム環境ファイルの準備が完了していること

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

major-upgrade-composable-steps-docker.yaml 環境ファイルにより、roles_data ファイル内で disable_upgrade_deployment: True と指定されているロールを除くすべてのカスタムロール上の全コンポーザブルサービスがアップグレードされます。

前提条件

  • アンダークラウドが最新バージョンにアップグレードされていること
  • アップグレードでの変更に対応するためのカスタム環境ファイルの準備が完了していること

手順

  1. openstack overcloud deploy コマンドに以下の項目を指定して実行します。

    • ネットワーク分離やストレージなど、お使いの環境に関連したすべてのオプションおよびカスタムの環境ファイル
    • 「アップグレードの最終処理」で生成された overcloud_images.yaml 環境ファイル
    • major-upgrade-composable-steps-docker.yaml 環境ファイル

      以下に例を示します。

    $ openstack overcloud deploy --templates \
      -e /home.stack/templates/node_count.yaml \
      -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 /home/stack/templates/network_environment.yaml \
      -e /home/stack/templates/overcloud_images.yaml  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-composable-steps-docker.yaml \
      --ntp-server pool.ntp.org
  2. 新しい環境ファイルの設定でオーバークラウドが更新されるまで待ちます。

    重要

    アップグレードにより OpenStack Networking (neutron) サーバーと L3 エージェントが無効化されるので、このステップの実行中には新規ルーターの作成はできません。この間には、インスタンスへのアクセスは引き続き可能です。

  3. 全サービスがアクティブかどうかを確認します。たとえば、コントローラーノード上のサービスを確認するには、以下のコマンドを実行します。

    [stack@director ~]$ ssh heat-admin@192.168.24.10
    [heat-admin@overcloud-controller-0 ~]$ sudo pcs status
    [heat-admin@overcloud-controller-0 ~]$ sudo docker ps

関連情報

  • このステップの完了後に何らかの問題が発生した場合には、Red Hat に連絡して、アドバイスおよびサポートを依頼してください。

5.2. Object Storage ノードのアップグレード

スタンドアロンの Object Storage ノードは、個別に更新してサービスが有効な状態を維持する必要があるため、オーバークラウドの主要なアップグレードプロセスには含まれません。director には、個々の Object Storage ノードでアップグレードを実行するためのスクリプトが含まれています。

前提条件

  • major-upgrade-composable-steps-docker.yaml 環境ファイルを指定して openstack overcloud deploy を実行し、主要なカスタムロールとそれらのコンポーザブルサービスをアップグレード済みであること

手順

  1. Object Storage ノードの一覧を取得します。

    $ openstack server list -c Name -f value --name objectstorage
  2. 一覧内の各 Object Storage ノードで以下のステップを実行します。

    1. アップグレードするノードを特定するためのノード名を使用して upgrade-non-controller.sh スクリプトを実行します。

      $ upgrade-non-controller.sh --upgrade overcloud-objectstorage-0
      注記

      事前にプロビジョニング済みのノードインフラストラクチャーを使用している場合には、このコマンドでの変更について、「アップグレードの最終処理」を参照してください。

    2. Object Storage ノードのアップグレードが完了するまで待ちます。
    3. Object Storage ノードを再起動します。

      $ openstack server reboot overcloud-objectstorage-0
    4. Object Storage ノードの再起動が完了するまで待ちます。

関連情報

  • このステップの完了後に何らかの問題が発生した場合には、Red Hat に連絡して、アドバイスおよびサポートを依頼してください。

5.3. コンピュートノードのアップグレード

コンピュートノードは、オーバークラウドの主要なアップグレードプロセスには含まれていません。インスタンスのアップタイムが最大限となるようにするには、ノードをアップグレードする前に 各インスタンスをコンピュートノードから移行してください。このため、コンピュートノードのアップグレードプロセスでは以下のステップが必要となります。

前提条件

  • major-upgrade-composable-steps-docker.yaml 環境ファイルを指定して「openstack overcloud deploy」コマンドを事前に実行済みであること。このコマンドは主要なカスタムロールとそれらのコンポーザブルをアップグレードします。

手順

アップグレードするコンピュートノードの選択

  1. 全コンピュートノードを一覧表示します。

    $ source ~/stackrc
    $ openstack server list -c Name -f value --name compute
  2. アップグレードするコンピュートノードを選択して、UUID と名前を書き留めておきます。

別のコンピュートノードへの移行

  1. アンダークラウドから、再起動するコンピュートノードを選択し、そのノードを無効にします。

    $ source ~/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set [hostname] nova-compute --disable
  2. コンピュートノード上の全インスタンスを一覧表示します。

    (overcloud) $ openstack server list --host [hostname] --all-projects
  3. 以下のコマンドの 1 つを使用して、インスタンスを移行します。

    1. 選択した特定のホストにインスタンスを移行します。

      (overcloud) $ openstack server migrate [instance-id] --live [target-host]--wait
    2. nova-scheduler により対象のホストが自動的に選択されるようにします。

      (overcloud) $ nova live-migration [instance-id]
    3. 一度にすべてのインスタンスのライブマイグレーションを行います。

      $ nova host-evacuate-live [hostname]
      注記

      nova コマンドで非推奨の警告が表示される可能性がありますが、安全に無視することができます。

  4. 移行が完了するまで待ちます。
  5. 正常に移行したことを確認します。

    (overcloud) $ openstack server list --host [hostname] --all-projects
  6. 選択したコンピュートノードのインスタンスがなくなるまで、移行を続けます。

空のコンピュートノードのアップグレード

  1. アップグレードするノードを特定するためのノード名を使用して upgrade-non-controller.sh スクリプトを実行します。

    $ upgrade-non-controller.sh --upgrade overcloud-compute-0
    注記

    事前にプロビジョニング済みのノードインフラストラクチャーを使用している場合には、このコマンドでの変更について、「アップグレードの最終処理」を参照してください。

  2. コンピュートノードのアップグレードが完了するまで待ちます。

アップグレードしたコンピュートノードの再起動と有効化

  1. コンピュートノードにログインして、再起動します。

    [heat-admin@overcloud-compute-0 ~]$ sudo reboot
  2. ノードが起動するまで待ちます。
  3. 再度コンピュートノードを有効化します。

    $ source ~/overcloudrc
    (overcloud) $ openstack compute service set [hostname] nova-compute --enable
  4. コンピュートノードが有効化されているかどうかを確認します。

    (overcloud) $ openstack compute service list

アップグレードする次のノードを選択します。アップグレードを開始する前には、そのノード上のインスタンスを別のコンピュートノードに移行します。全コンピュートノードのアップグレードが完了するまで、このプロセスを繰り返してください。

関連情報

  • このステップの完了後に何らかの問題が発生した場合には、Red Hat に連絡して、アドバイスおよびサポートを依頼してください。

5.4. アップグレードの最終処理

director には、アップグレードの最終処理を最後まで実行して、オーバークラウドスタックが現在の Heat テンプレートコレクションと確実に同期されるようにする必要があります。そのためには、openstack overcloud deploy コマンドで環境ファイル (major-upgrade-converge-docker.yaml) を指定する必要があります。

前提条件

  • 全ノードのアップグレードが完了していること

手順

  1. openstack overcloud deploy コマンドに以下の項目を指定して実行します。

    • ネットワーク分離やストレージなど、お使いの環境に関連したすべてのオプションおよびカスタムの環境ファイル
    • 「アップグレードの最終処理」で生成された overcloud_images.yaml 環境ファイル
    • major-upgrade-converge-docker.yaml 環境ファイル

      以下に例を示します。

    $ openstack overcloud deploy --templates \
      -e /home.stack/templates/node_count.yaml \
      -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 /home/stack/templates/network_environment.yaml \
      -e /home/stack/templates/overcloud_images.yaml  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-converge-docker.yaml \
      --ntp-server pool.ntp.org
  2. 新しい環境ファイルの設定でオーバークラウドが更新されるまで待ちます。
  3. 全サービスがアクティブかどうかを確認します。たとえば、コントローラーノード上のサービスを確認するには、以下のコマンドを実行します。

    [stack@director ~]$ ssh heat-admin@192.168.24.10
    [heat-admin@overcloud-controller-0 ~]$ sudo pcs status
    [heat-admin@overcloud-controller-0 ~]$ sudo systemctl list-units 'openstack-*' 'neutron-*' 'httpd*'

関連情報

  • このステップの完了後に何らかの問題が発生した場合には、Red Hat に連絡して、アドバイスおよびサポートを依頼してください。