第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 のアンダークラウドを更新する前に機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
エラーが発生している Systemd サービスがあるかどうかを確認します。
(undercloud) $ sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker'
アンダークラウドの空き領域を確認します。
(undercloud) $ df -h
アンダークラウドでクロックが同期されていることを確認します。
(undercloud) $ sudo ntpstat
アンダークラウドのネットワークサービスを確認します。
(undercloud) $ openstack network agent list
全エージェントが
Aliveで、それらの状態がUPである必要があります。アンダークラウドの Compute サービスを確認します。
(undercloud) $ openstack compute service list
全エージェントのステータスが
enabledで、状態がupである必要があります。アンダークラウドのボリュームサービスを確認します。
(undercloud) $ openstack volume service list
全エージェントのステータスが
enabledで、状態がupである必要があります。
関連情報
- OpenStack Orchestration (heat) のデータベースで削除済みとマークされている stack のエントリーを完全削除する方法は https://access.redhat.com/solutions/2215131 のソリューションに記載されています。
7.2. 更新前のオーバークラウドの検証
Red Hat OpenStack Platform 12 のオーバークラウドを更新する前に機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
ベアメタルノードのステータスを確認します。
(undercloud) $ openstack baremetal node list
全ノードの電源状態が有効で (
on)、かつメンテナンスモードがfalseである必要があります。エラーが発生している 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
エラーが発生しているコンテナー化されたサービスがあるかどうかを確認します。
(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
全サービスへの 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 サービスとそれらの接続ステータスが表示されます。オーバークラウドデータベースのレプリケーションの正常性をチェックします。
(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
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
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のアクションがないこと。
-
全クラスターノードが
各オーバークラウドノードでディスク領域を確認します。
(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
オーバークラウドの 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"
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"
オーバークラウドノードでクロックが同期されていることを確認します。
(undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo ntpstat" ; done
オーバークラウドのアクセス情報を読み込みます。
(undercloud) $ source ~/overcloudrc
オーバークラウドのネットワークサービスを確認します。
(overcloud) $ openstack network agent list
全エージェントが
Aliveで、それらの状態がUPである必要があります。オーバークラウドの Compute サービスを確認します。
(overcloud) $ openstack compute service list
全エージェントのステータスが
enabledで、状態がupである必要があります。オーバークラウドのボリュームサービスを確認します。
(overcloud) $ openstack volume service list
全エージェントのステータスが
enabledで、状態がupである必要があります。
関連情報
- 「How can I verify my OpenStack environment is deployed with Red Hat recommended configurations?」の記事を参照してください。この記事には、Red Hat OpenStack Platform 環境をチェックして、Red Hat の推奨値に合わせて調整する方法が記載されています。
7.3. アンダークラウドの最新状態の維持
director では、アンダークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、 OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 12 内でのマイナー更新です。
前提条件
- Red Hat OpenStack Platform 12 を使用していること
- アンダークラウドのバックアップを実行済みであること
手順
-
director に
stackユーザーとしてログインします。 python-tripleoclientパッケージと依存関係を更新し、マイナーバージョンの更新向けの最新のスクリプトを使用できるようにします。$ sudo yum update -y python-tripleoclient
director は
openstack undercloud upgradeコマンドを使用して、アンダークラウドの環境を更新します。以下のコマンドを実行します。$ openstack undercloud upgrade
ノードを再起動します。
$ sudo reboot
- ノードが起動するまで待ちます。
全サービスのステータスを確認します。
$ sudo systemctl list-units "openstack*" "neutron*" "openvswitch*"
注記再起動後に
openstack-nova-computeが有効になるまでに約 10 分かかる場合があります。オーバークラウドとそのノードが存在しているかどうかを確認します。
$ 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 を使用していること
- 現行バージョンのアンダークラウドの最新のマイナーリリースに更新済みであること
手順
yumログをチェックして、新規イメージのアーカイブが利用可能かどうかを確認します。$ sudo grep "rhosp-director-images" /var/log/yum.log
新規アーカイブが利用可能な場合には、現在のイメージを新規イメージに置き換えてください。新しいイメージをインストールするには、最初に
stackユーザーのimagesディレクトリー (/home/stack/images) から既存のイメージを削除します。$ rm -rf ~/images/*
アーカイブを展開します。
$ 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
最新のイメージを 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 " ")
新規イメージの存在をチェックして、イメージの更新を最終確認します。
$ openstack image list $ ls -l /httpboot
director が更新され、最新のイメージを使用するようになりました。この更新の後にはサービスを再起動する必要はありません。
7.5. オーバークラウドの最新状態の維持
director では、全オーバークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、 OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 12 内でのマイナー更新です。
前提条件
- Red Hat OpenStack Platform 12 を使用していること
- 現行バージョンのアンダークラウドの最新のマイナーリリースに更新済みであること
- オーバークラウドのバックアップを実行済みであること
手順
コンテナー化されたサービスのイメージの最新タグを確認します。
$ openstack overcloud container image tag discover \ --image registry.access.redhat.com/rhosp12/openstack-base:latest \ --tag-from-label version-release
最も新しいタグを書き留めておきます。
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
この環境ファイルを異なるソース種別用に生成する方法についての詳しい情報は、『director のインストールと使用方法』ガイドの「コンテナーレジストリー情報の設定」を参照してください。
openstack overcloud update stackコマンドを実行して、オーバークラウド内のコンテナーイメージの場所を更新します。$ openstack overcloud update stack --init-minor-update \ --container-registry-file /home/stack/templates/overcloud_images.yaml
--init-minor-updateはオーバークラウドスタック内のパラメーターの更新のみを実行します。実際のパッケージやコンテナーの更新は行いません。このコマンドが完了するまで待ちます。openstack overcloud updateコマンドを使用してパッケージとコンテナーの更新を実行します。--nodesオプションを使用して、各ロールのノードをアップグレードします。たとえば、以下のコマンドは、Controllerロールのノードを更新します。$ openstack overcloud update stack --nodes Controller
以下の順序で、各ロールグループにこのコマンドを実行します。
-
Controller -
CephStorage -
Compute -
ObjectStorage -
Database、MessageBus、Networkerなどのカスタムのロール
-
- 選択したロールの更新プロセスが開始します。director は Ansible playbook を使用して更新を実行し、各タスクの出力を表示します。
- 次のロールグループを更新します。全ノードの更新が完了するまで作業を繰り返してください。
-
更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。カーネルまたは Open vSwitch を更新した場合には、再起動が必要です。各ノードの
/var/log/yum.logファイルをチェックして、kernelまたはopenvswitchのパッケージのメジャー/マイナーバージョンが更新されているかどうかを確認します。更新されている場合には、『director インストールと使用方法』ガイドの「ノードの再起動」の手順に従って各ノードを再起動します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.