Red Hat Training

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

第7章 Openstack Platform の最新状態の維持

このプロセスでは、OpenStack Platform 環境のマイナーバージョンを最新の状態に維持する方法について説明します。これは、Red Hat OpenStack Platform 12 内のマイナー更新です。

前提条件

  • オーバークラウドが Red Hat OpenStack Platform 12 にアップグレードされていること
  • 新しいパッケージとコンテナーイメージが Red Hat OpenStack Platform 12 内で利用可能であること

7.1. 更新前のアンダークラウドの検証

Red Hat OpenStack Platform 12 のアンダークラウドを更新する前に機能を確認する手順を以下に示します。

手順

  1. アンダークラウドのアクセス情報を読み込みます。

    $ source ~/stackrc
  2. エラーが発生している Systemd サービスがあるかどうかを確認します。

    (undercloud) $ sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker'
  3. アンダークラウドの空き領域を確認します。

    (undercloud) $ df -h
  4. アンダークラウドでクロックが同期されていることを確認します。

    (undercloud) $ sudo ntpstat
  5. アンダークラウドのネットワークサービスを確認します。

    (undercloud) $ openstack network agent list

    全エージェントが Alive で、それらの状態が UP である必要があります。

  6. アンダークラウドの Compute サービスを確認します。

    (undercloud) $ openstack compute service list

    全エージェントのステータスが enabled で、状態が up である必要があります。

  7. アンダークラウドのボリュームサービスを確認します。

    (undercloud) $ openstack volume service list

    全エージェントのステータスが enabled で、状態が up である必要があります。

関連情報

  • OpenStack Orchestration (heat) のデータベースで削除済みとマークされている stack のエントリーを完全削除する方法は https://access.redhat.com/solutions/2215131 のソリューションに記載されています。

7.2. 更新前のオーバークラウドの検証

Red Hat OpenStack Platform 12 のオーバークラウドを更新する前に機能を確認する手順を以下に示します。

手順

  1. アンダークラウドのアクセス情報を読み込みます。

    $ source ~/stackrc
  2. ベアメタルノードのステータスを確認します。

    (undercloud) $ openstack baremetal node list

    全ノードの電源状態が有効で (on)、かつメンテナンスモードが false である必要があります。

  3. エラーが発生している Systemd サービスがあるかどうかを確認します。

    (undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker' 'ceph*'" ; done
  4. エラーが発生しているコンテナー化されたサービスがあるかどうかを確認します。

    (undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo docker ps -f 'exited=1' --all" ; done
    (undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo docker ps -f 'status=dead' -f 'status=restarting'" ; done
  5. 全サービスへの HAProxy 接続をチェックします。コントロールプレーンの仮想 IP アドレスと haproxy.stats サービスの認証情報を取得します。

    (undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE sudo 'grep "listen haproxy.stats" -A 6 /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg'

    以下の cURL 要求でそれらの情報を使用します。

    (undercloud) $ curl -s -u admin:<PASSWORD> "http://<IP ADDRESS>:1993/;csv" | egrep -vi "(frontend|backend)" | awk -F',' '{ print $1" "$2" "$18 }'

    <PASSWORD><IP ADDRESS> は、haproxy.stats サービスからのそれぞれの情報に置き換えます。その結果表示される一覧には、各ノード上の OpenStack Platform サービスとそれらの接続ステータスが表示されます。

  6. オーバークラウドデータベースのレプリケーションの正常性をチェックします。

    (undercloud) $ for NODE in $(openstack server list --name controller -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo docker exec clustercheck clustercheck" ; done
  7. RabbitMQ クラスターの正常性を確認します。

    (undercloud) $ for NODE in $(openstack server list --name controller -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo docker exec $(ssh heat-admin@$NODE "sudo docker ps -f 'name=.*rabbitmq.*' -q") rabbitmqctl node_health_check" ; done
  8. Pacemaker リソースの正常性を確認します。

    (undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo pcs status"

    以下の点を確認します。

    • 全クラスターノードが online であること。
    • いずれのクラスターノード上でも stopped のリソースがないこと。
    • pacemaker で failed のアクションがないこと。
  9. 各オーバークラウドノードでディスク領域を確認します。

    (undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo df -h --output=source,fstype,avail -x overlay -x tmpfs -x devtmpfs" ; done
  10. オーバークラウドの Ceph Storage クラスターの正常性を確認します。以下のコマンドを使用すると、コントローラーノード上で ceph ツールが実行されて、クラスターをチェックします。

    (undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo ceph -s"
  11. Ceph Storage OSD に空き領域があるかどうかを確認します。以下のコマンドを使用すると、コントローラーノード上で ceph ツールが実行され、空き領域をチェックします。

    (undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo ceph df"
  12. オーバークラウドノードでクロックが同期されていることを確認します。

    (undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo ntpstat" ; done
  13. オーバークラウドのアクセス情報を読み込みます。

    (undercloud) $ source ~/overcloudrc
  14. オーバークラウドのネットワークサービスを確認します。

    (overcloud) $ openstack network agent list

    全エージェントが Alive で、それらの状態が UP である必要があります。

  15. オーバークラウドの Compute サービスを確認します。

    (overcloud) $ openstack compute service list

    全エージェントのステータスが enabled で、状態が up である必要があります。

  16. オーバークラウドのボリュームサービスを確認します。

    (overcloud) $ openstack volume service list

    全エージェントのステータスが enabled で、状態が up である必要があります。

関連情報

7.3. アンダークラウドの最新状態の維持

director では、アンダークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、 OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 12 内でのマイナー更新です。

前提条件

  • Red Hat OpenStack Platform 12 を使用していること
  • アンダークラウドのバックアップを実行済みであること

手順

  1. director に stack ユーザーとしてログインします。
  2. python-tripleoclient パッケージと依存関係を更新し、マイナーバージョンの更新向けの最新のスクリプトを使用できるようにします。

    $ sudo yum update -y python-tripleoclient
  3. director は openstack undercloud upgradeコマンドを使用して、アンダークラウドの環境を更新します。以下のコマンドを実行します。

    $ openstack undercloud upgrade
  4. ノードを再起動します。

    $ sudo reboot
  5. ノードが起動するまで待ちます。
  6. 全サービスのステータスを確認します。

    $ sudo systemctl list-units "openstack*" "neutron*" "openvswitch*"
    注記

    再起動後に openstack-nova-compute が有効になるまでに約 10 分かかる場合があります。

  7. オーバークラウドとそのノードが存在しているかどうかを確認します。

    $ source ~/stackrc
    $ openstack server list
    $ openstack baremetal node list
    $ openstack stack list

オーバークラウドのイメージを最新の状態に維持して、イメージの設定が最新の openstack-tripleo-heat-template パッケージの要件と一致するようにします。デプロイメントを成功させ、将来オペレーションをスケーリングできるようにするには、「オーバークラウドイメージの最新状態の維持」に記載の方法に従ってオーバークラウドのイメージを更新します。

7.4. オーバークラウドイメージの最新状態の維持

アンダークラウドの更新プロセスにより、rhosp-director-images および rhosp-director-images-ipa パッケージから新規イメージアーカイブがダウンロードされる可能性があります。このプロセスにより、Red Hat OpenStack Platform 12 内のアンダークラウドでそれらのイメージが更新されます。

前提条件

  • Red Hat OpenStack Platform 12 を使用していること
  • 現行バージョンのアンダークラウドの最新のマイナーリリースに更新済みであること

手順

  1. yum ログをチェックして、新規イメージのアーカイブが利用可能かどうかを確認します。

    $ sudo grep "rhosp-director-images" /var/log/yum.log
  2. 新規アーカイブが利用可能な場合には、現在のイメージを新規イメージに置き換えてください。新しいイメージをインストールするには、最初に stack ユーザーの images ディレクトリー (/home/stack/images) から既存のイメージを削除します。

    $ rm -rf ~/images/*
  3. アーカイブを展開します。

    $ cd ~/images
    $ for i in /usr/share/rhosp-director-images/overcloud-full-latest-12.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-12.0.tar; do tar -xvf $i; done
  4. 最新のイメージを director にインポートして、ノードがこれらの新規イメージを使用するように設定します。

    $ cd ~
    $ openstack overcloud image upload --update-existing --image-path /home/stack/images/
    $ openstack overcloud node configure $(openstack baremetal node list -c UUID -f csv --quote none | sed "1d" | paste -s -d " ")
  5. 新規イメージの存在をチェックして、イメージの更新を最終確認します。

    $ openstack image list
    $ ls -l /httpboot

    director が更新され、最新のイメージを使用するようになりました。この更新の後にはサービスを再起動する必要はありません。

7.5. オーバークラウドの最新状態の維持

director では、全オーバークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、 OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 12 内でのマイナー更新です。

前提条件

  • Red Hat OpenStack Platform 12 を使用していること
  • 現行バージョンのアンダークラウドの最新のマイナーリリースに更新済みであること
  • オーバークラウドのバックアップを実行済みであること

手順

  1. コンテナー化されたサービスのイメージの最新タグを確認します。

    $ openstack overcloud container image tag discover \
      --image registry.access.redhat.com/rhosp12/openstack-base:latest \
      --tag-from-label version-release

    最も新しいタグを書き留めておきます。

  2. openstack overcloud container image prepare コマンドで、コンテナーイメージのソース用の更新された環境ファイルを作成します。たとえば、registry.access.redhat.com からのイメージを使用する場合は、以下のコマンドを実行します。

    $ openstack overcloud container image prepare \
      --namespace=registry.access.redhat.com/rhosp12 \
      --prefix=openstack- \
      --tag [TAG] \ 1
      --set ceph_namespace=registry.access.redhat.com/rhceph \
      --set ceph_image=rhceph-2-rhel7 \
      --set ceph_tag=latest \
      --env-file=/home/stack/templates/overcloud_images.yaml \
      -e /home/stack/templates/custom_environment_file.yaml 2
    1
    [TAG] の箇所は、前のステップで取得したタグに置き換えます。
    2
    -e パラメーターで追加の環境ファイルを指定します。 director は指定されているすべての環境ファイルでカスタムリソースを確認して、コンテナー化されたサービスに必要なコンテナーイメージを特定します。

    この環境ファイルを異なるソース種別用に生成する方法についての詳しい情報は、『director のインストールと使用方法』ガイドの「コンテナーレジストリー情報の設定」を参照してください。

  3. openstack overcloud update stack コマンドを実行して、オーバークラウド内のコンテナーイメージの場所を更新します。

    $ openstack overcloud update stack --init-minor-update \
      --container-registry-file /home/stack/templates/overcloud_images.yaml

    --init-minor-update はオーバークラウドスタック内のパラメーターの更新のみを実行します。実際のパッケージやコンテナーの更新は行いません。このコマンドが完了するまで待ちます。

  4. openstack overcloud update コマンドを使用してパッケージとコンテナーの更新を実行します。--nodes オプションを使用して、各ロールのノードをアップグレードします。たとえば、以下のコマンドは、Controller ロールのノードを更新します。

    $ openstack overcloud update stack --nodes Controller

    以下の順序で、各ロールグループにこのコマンドを実行します。

    • Controller
    • CephStorage
    • Compute
    • ObjectStorage
    • DatabaseMessageBusNetworker などのカスタムのロール
  5. 選択したロールの更新プロセスが開始します。director は Ansible playbook を使用して更新を実行し、各タスクの出力を表示します。
  6. 次のロールグループを更新します。全ノードの更新が完了するまで作業を繰り返してください。
  7. 更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。カーネルまたは Open vSwitch を更新した場合には、再起動が必要です。各ノードの /var/log/yum.log ファイルをチェックして、kernel または openvswitch のパッケージのメジャー/マイナーバージョンが更新されているかどうかを確認します。更新されている場合には、『director インストールと使用方法』ガイドの「ノードの再起動」の手順に従って各ノードを再起動します。