Red Hat OpenStack Platform のアップグレード
Red Hat OpenStack Platform 環境のアップグレード
概要
第1章 はじめに
本書には、Red Hat OpenStack Platform 環境を最新のメジャーバージョンにアップグレードし、そのバージョンのマイナーリリースで最新状態に維持するのに役立つワークフローを記載しています。
本ガイドは、以下のバージョンのアップグレードパスを提供します。
| 古いオーバークラウドバージョン | 新しいオーバークラウドバージョン |
|---|---|
|
Red Hat OpenStack Platform 12 |
Red Hat OpenStack Platform 13 |
1.1. ワークフローの概要
以下の表には、アップグレードのプロセスに必要なステップの概要をまとめています。
| ステップ | 説明 |
|---|---|
|
環境の準備 |
アンダークラウドとオーバークラウドのコントローラーノードのデータベースおよび設定のバックアップを実行してから、最新のマイナーリリースに更新し、環境を検証します。 |
|
アンダークラウドのアップグレード |
アンダークラウドを OpenStack Platform 12 から OpenStack Platform 13 にアップグレードします。 |
|
コンテナーイメージの取得 |
OpenStack Platform 13 のサービス用のコンテナーイメージの場所が記載された環境ファイルを作成します。 |
|
オーバークラウドの準備 |
オーバークラウドの設定ファイルを OpenStack Platform 13 に移行するための適切なステップを実行します。 |
|
コントローラーノードのアップグレード |
全コントローラーノードを同時に OpenStack Platform 13 にアップグレードします。 |
|
コンピュートノードのアップグレード |
選択したコンピュートノードでアップグレードをテストします。テストが成功したら、全コンピュートノードをアップグレードします。 |
|
Ceph Storage ノードのアップグレード |
全 Ceph Storage ノードをアップグレードします。これには、Red Hat Ceph Storage 3 のコンテナー化されたバージョンへのアップグレードも含まれます。 |
|
アップグレードの最終段階 |
コンバージェンスのコマンドを実行して、オーバークラウドスタックをリフレッシュします。 |
1.2. リポジトリー
アンダークラウドおよびオーバークラウドにはいずれも、Red Hat コンテンツ配信ネットワーク (CDN) か Red Hat Satellite 5 または 6 を使用した Red Hat リポジトリーへのアクセスが必要です。Red Hat Satellite サーバーを使用する場合は、必要なリポジトリーをお使いの OpenStack Platform 環境に同期します。以下の CDN チャネル名一覧を参考にしてください。
表1.1 OpenStack Platform リポジトリー
| 名前 | リポジトリー | 説明 |
|---|---|---|
|
Red Hat Enterprise Linux 7 Server (RPMS) |
|
x86_64 システム用ベースオペレーティングシステムのリポジトリー |
|
Red Hat Enterprise Linux 7 Server - Extras (RPMs) |
|
Red Hat OpenStack Platform の依存関係が含まれます。 |
|
Red Hat Enterprise Linux 7 Server - RH Common (RPMs) |
|
Red Hat OpenStack Platform のデプロイと設定ツールが含まれます。 |
|
Red Hat Satellite Tools for RHEL 7 Server RPMs x86_64 |
|
Red Hat Satellite 6 でのホスト管理ツール |
|
Red Hat Enterprise Linux High Availability (for RHEL 7 Server) (RPMs) |
|
Red Hat Enterprise Linux の高可用性ツール。コントローラーノードの高可用性に使用します。 |
|
Red Hat OpenStack Platform 13 for RHEL 7 (RPMs) |
|
Red Hat OpenStack Platform のコアリポジトリー。Red Hat OpenStack Platform director のパッケージも含まれます。 |
|
Red Hat Ceph Storage OSD 3 for Red Hat Enterprise Linux 7 Server (RPMs) |
|
(Ceph Storage ノード向け) Ceph Storage Object Storage デーモンのリポジトリー。Ceph Storage ノードにインストールします。 |
|
Red Hat Ceph Storage MON 3 for Red Hat Enterprise Linux 7 Server (RPMs) |
|
(Ceph Storage ノード向け) Ceph Storage Monitor デーモンのリポジトリー。Ceph Storage ノードを使用して OpenStack 環境にあるコントローラーノードにインストールします |
|
Red Hat Ceph Storage Tools 2 for Red Hat Enterprise Linux 7 Server (RPMs) |
|
Ceph Storage クラスターと通信するためのノード用のツールを提供します。このリポジトリーは、Ceph Storage クラスターを使用するオーバークラウドをデプロイする際に、全ノードに有効化する必要があります。 |
|
Enterprise Linux for Real Time for NFV (RHEL 7 Server) (RPMs) |
|
NFV 向けのリアルタイム KVM (RT-KVM) のリポジトリー。リアルタイムカーネルを有効化するためのパッケージが含まれています。このリポジトリーは、RT-KVM 対象の全コンピュートノードで有効化する必要があります。 |
ネットワークがオフラインの Red Hat OpenStack Platform 環境用リポジトリーを設定するには、「オフライン環境で Red Hat OpenStack Platform Director を設定する」の記事を参照してください。
第2章 OpenStack Platform のアップグレードの準備
このプロセスでは、完全な更新に向けて OpenStack を準備します。これには、以下のステップを伴います。
- アンダークラウドとオーバークラウドの両方をバックアップします。
- アンダークラウドのパッケージを更新し、アップグレードコマンドを実行します。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、アンダークラウドを再起動します。
- overcloud upgrade コマンドでオーバークラウドを更新します。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、オーバークラウドノードを再起動します。
- アンダークラウドとオーバークラウドの両方で検証のチェックを実行します。
これらの手順により、OpenStack Platform 環境は、アップグレードを開始する前に、最適な状態となります。
2.1. アンダークラウドのバックアップ
完全なアンダークラウドのバックアップには、以下のデータベースおよびファイルが含まれます。
- アンダークラウドノード上の MariaDB データベース
- (データベースを正確に復元できるように) アンダークラウド上の MariaDB 設定ファイル
-
設定データ:
/etc -
ログデータ:
/var/log -
イメージデータ:
/var/lib/glance -
証明書生成データ:
/var/lib/certmonger -
コンテナーイメージデータ:
/var/lib/docker、/var/lib/registry -
Swift の全データ:
/srv/node -
stack ユーザーのホームディレクトリー (/home/stack) 内の全データ:
/home/stack
バックアッププロセスを実行する前に、アンダークラウドに利用可能なディスク容量が十分にあることを確認します。アーカイブファイルは、少なくとも 3.5 GB となることが予想され、それ以上になる可能性があります。
手順
-
アンダークラウドに
rootユーザーとしてログインします。 データベースをバックアップします。
# mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
データベースのバックアップと設定ファイルをアーカイブします。
# sudo tar --xattrs --ignore-failed-read -cf \ undercloud-backup-`date +%F`.tar \ /root/undercloud-all-databases.sql \ /etc \ /var/log \ /var/lib/glance \ /var/lib/certmonger \ /var/lib/docker \ /var/lib/registry \ /srv/node \ /root \ /home/stackこれで、
undercloud-backup-<date>.tar.gzという名前のファイルが作成されます。<date>はシステムの日付です。このtarファイルをセキュアな場所にコピーします。
2.2. コンテナー化されたオーバークラウドのコントロールプレーンサービスのバックアップ
以下の手順では、コンテナー化されたオーバークラウドのデータベースと設定のバックアップを作成します。オーバークラウドのデータベースとサービスのバックアップにより、作業環境のスナップショットが確保されます。スナップショットがあると、操作のエラーが発生してオーバークラウドを元の状態に復元する必要がある場合に役立ちます。
この手順では、不可欠なコントロールプレーンサービスのみが含まれます。コンピュートノードのワークロード、Ceph Storage ノード上のデータ、追加のサービスのバックアップは対象外です。
手順
データベースのバックアップを実行します。
コントロールノードにログインします。オーバークラウドには、アンダークラウドからアクセスできます。
$ ssh heat-admin@192.0.2.100
rootユーザーに変更します。$ sudo -i
バックアップを保管するための一時ディレクトリーを作成します。
# mkdir -p /var/tmp/mysql_backup/
データベースのパスワードを取得して、
MYSQLDBPASSの環境変数に保存します。このパスワードは、/etc/puppet/hieradata/service_configs.jsonファイルのmysql::server::root_passwordの変数に保管されています。以下のコマンドを使用してパスワードを保管します。# MYSQLDBPASS=$(sudo hiera mysql::server::root_password)
データベースをバックアップします。
# mysql -uroot -p$MYSQLDBPASS -s -N -e "select distinct table_schema from information_schema.tables where engine='innodb' and table_schema != 'mysql';" | xargs mysqldump -uroot -p$MYSQLDBPASS --single-transaction --databases > /var/tmp/mysql_backup/openstack_databases-`date +%F`-`date +%T`.sql
このコマンドにより、
/var/tmp/mysql_backup/openstack_databases-<date>.sqlという名前のデータベースバックアップがダンプされます。<date>はシステムの日付と時刻です。このデータベースダンプを安全な場所にコピーします。ユーザーおよびパーミッションに関する全情報をバックアップします。
# mysql -uroot -p$MYSQLDBPASS -s -N -e "SELECT CONCAT('\"SHOW GRANTS FOR ''',user,'''@''',host,''';\"') FROM mysql.user where (length(user) > 0 and user NOT LIKE 'root')" | xargs -n1 mysql -uroot -p$MYSQLDBPASS -s -N -e | sed 's/$/;/' > /var/tmp/mysql_backup/openstack_databases_grants-`date +%F`-`date +%T`.sqlこのコマンドにより、
/var/tmp/mysql_backup/openstack_databases_grants-<date>.sqlという名前のデータベースバックアップがダンプされます。<date>はシステムの日付と時刻です。このデータベースダンプを安全な場所にコピーします。
OpenStack Telemetry データベースをバックアップします。
任意のコントローラーに接続して、MongoDB のプライマリーインスタンスの IP を取得します。
# MONGOIP=$(sudo hiera mongodb::server::bind_ip)
バックアップを作成します。
# mkdir -p /var/tmp/mongo_backup/ # mongodump --oplog --host $MONGOIP --out /var/tmp/mongo_backup/
-
/var/tmp/mongo_backup/内のデータベースダンプを安全な場所にコピーします。
Redis クラスターをバックアップします。
HAProxy から Redis のエンドポイントを取得します。
# REDISIP=$(sudo hiera redis_vip)
Redis クラスターのマスターパスワードを取得します。
# REDISPASS=$(sudo hiera redis::masterauth)
Redis クラスターの接続をチェックします。
# redis-cli -a $REDISPASS -h $REDISIP ping
Redis データベースをダンプします。
# redis-cli -a $REDISPASS -h $REDISIP bgsave
このコマンドにより、データベースのバックアップがデフォルトの
/var/lib/redis/ディレクトリーに保管されます。このデータベースダンプを安全な場所にコピーします。
各コントローラーノードのファイルシステムをバックアップします。
バックアップ用のディレクトリーを作成します。
# mkdir -p /var/tmp/filesystem_backup/
以下の
tarコマンドを実行します。# tar --ignore-failed-read --xattrs \ -zcvf /var/tmp/filesystem_backup/fs_backup-`date '+%Y-%m-%d-%H-%M-%S'`.tar.gz \ /var/lib/config-data \ /var/log/containers \ /etc/corosync \ /etc/logrotate.d \ /etc/openvswitch \ /var/log/openvswitch \ /srv/node \ /home/heat-admin--ignore-failed-readオプションを使用すると、見つからないディレクトリーは無視されます。これは、特定のサービスが使用されていない場合や、独自のカスタムロール上に分離されている場合に役立ちます。
-
作成された
tarファイルを安全な場所にコピーします。
2.3. アンダークラウドのマイナーアップデートの実行
director では、アンダークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。
手順
-
director に
stackユーザーとしてログインします。 python-tripleoclientパッケージと依存関係を更新し、マイナーバージョンの更新向けの最新のスクリプトを使用できるようにします。$ sudo yum update -y python-tripleoclient
director は
openstack undercloud upgradeコマンドを使用して、アンダークラウドの環境を更新します。以下のコマンドを実行します。$ openstack undercloud upgrade
- アンダークラウドのアップグレードプロセスが完了するまで待ちます。
アンダークラウドを再起動して、オペレーティングシステムのカーネルとその他のシステムパッケージを更新します。
$ sudo reboot
- ノードが起動するまで待ちます。
2.4. コンテナー化されたオーバークラウドのマイナー更新の実行
director では、全オーバークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。
手順
コンテナー化されたサービスのイメージの最新タグを確認します。
$ 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 を使用して更新を実行し、各タスクの出力を表示します。
- 次のロールグループを更新します。全ノードの更新が完了するまで作業を繰り返してください。
2.5. コントローラーノードおよびコンポーザブルノードの再起動
以下の手順では、コントローラーノードと、コンポーザブルロールをベースとするスタンドアロンのノードを再起動します。これには、コンピュートノードと Ceph Storage ノードは含まれません。
手順
- ノードを選択してログインします。
ノードを再起動します。
[heat-admin@overcloud-controller-0 ~]$ sudo reboot
- ノードが起動するまで待ちます。
ノードにログインしてサービスをチェックします。以下に例を示します。
ノードが Pacemaker サービスを使用している場合には、ノードがクラスターに再度参加したかどうかを確認します。
[heat-admin@overcloud-controller-0 ~]$ sudo pcs status
ノードが Systemd サービスを使用している場合には、全サービスが有効化されているかどうかを確認します。
[heat-admin@overcloud-controller-0 ~]$ sudo systemctl status
2.6. Ceph Storage (OSD) クラスターの再起動
以下の手順では、Ceph Storage (OSD) ノードのクラスターを再起動します。
手順
Ceph MON またはコントローラーノードにログインして、Ceph Storage クラスターのリバランスを一時的に無効にします。
$ sudo ceph osd set noout $ sudo ceph osd set norebalance
- 再起動する最初の Ceph Storage ノードを選択して、ログインします。
ノードを再起動します。
$ sudo reboot
- ノードが起動するまで待ちます。
ノードにログインして、クラスターのステータスを確認します。
$ sudo ceph -s
pgmapにより、すべてのpgsが正常な状態 (active+clean) として報告されることを確認します。- ノードからログアウトして、次のノードを再起動し、ステータスを確認します。全 Ceph Storage ノードが再起動されるまで、このプロセスを繰り返します。
完了したら、Ceph MON またはコントローラーノードにログインして、クラスターのリバランスを再度有効にします。
$ sudo ceph osd unset noout $ sudo ceph osd unset norebalance
最終のステータスチェックを実行して、クラスターが
HEALTH_OKを報告していることを確認します。$ sudo ceph status
2.7. コンピュートノードの再起動
以下の手順では、コンピュートノードを再起動します。OpenStackPlatform 環境内のインスタンスのダウンタイムを最小限に抑えるために、この手順には、選択したコンピュートノードからインスタンスを移行するステップも含まれています。これは、以下のワークフローを伴います。
- 再起動するコンピュートノードを選択して無効にし、新規インスタンスをプロビジョニングしないようにします。
- インスタンスを別のコンピュートノードに移行します。
- 空のコンピュートノードを再起動して有効化します。
手順
-
アンダークラウドに
stackユーザーとしてログインします。 全コンピュートノードとその UUID を一覧表示します。
$ source ~/stackrc (undercloud) $ openstack server list --name compute
再起動するコンピュートノードの UUID を特定します。
アンダークラウドから、コンピュートノードを選択し、そのノードを無効にします。
$ source ~/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service set [hostname] nova-compute --disable
コンピュートノード上の全インスタンスを一覧表示します。
(overcloud) $ openstack server list --host [hostname] --all-projects
以下のコマンドの 1 つを使用して、インスタンスを移行します。
選択した特定のホストにインスタンスを移行します。
(overcloud) $ openstack server migrate [instance-id] --live [target-host]--wait
nova-schedulerにより対象のホストが自動的に選択されるようにします。(overcloud) $ nova live-migration [instance-id]
一度にすべてのインスタンスのライブマイグレーションを行います。
$ nova host-evacuate-live [hostname]
注記novaコマンドで非推奨の警告が表示される可能性がありますが、安全に無視することができます。
- 移行が完了するまで待ちます。
正常に移行したことを確認します。
(overcloud) $ openstack server list --host [hostname] --all-projects
- 選択したコンピュートノードのインスタンスがなくなるまで、移行を続けます。
コンピュートノードのログインしてリブートします。
[heat-admin@overcloud-compute-0 ~]$ sudo reboot
- ノードが起動するまで待ちます。
コンピュートノードを再度有効化します。
$ source ~/overcloudrc (overcloud) $ openstack compute service set [hostname] nova-compute --enable
コンピュートノードが有効化されているかどうかを確認します。
(overcloud) $ openstack compute service list
2.8. アンダークラウドの検証
アンダークラウドの機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
エラーが発生している Systemd サービスがあるかどうかを確認します。
(undercloud) $ sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker'
アンダークラウドの空き領域を確認します。
(undercloud) $ df -h
アンダークラウド上に NTP をインストールしている場合にはクロックが同期されていることを確認します。
(undercloud) $ sudo ntpstat
アンダークラウドのネットワークサービスを確認します。
(undercloud) $ openstack network agent list
全エージェントが
Aliveで、それらの状態がUPである必要があります。アンダークラウドの Compute サービスを確認します。
(undercloud) $ openstack compute service list
全エージェントのステータスが
enabledで、状態がupである必要があります。
関連情報
- OpenStack Orchestration (heat) のデータベースで削除済みとマークされている stack のエントリーを完全削除する方法は https://access.redhat.com/solutions/2215131 のソリューションに記載されています。
2.9. コンテナー化されたオーバークラウドの検証
コンテナー化されたオーバークラウドの機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ 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サービスからのそれぞれの情報に置き換えます。その結果表示される一覧には、各ノード上の OpenStackPlatform サービスとそれらの接続ステータスが表示されます。オーバークラウドデータベースのレプリケーションの正常性をチェックします。
(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 の推奨値に合わせて調整する方法が記載されています。
第3章 アンダークラウドのアップグレード
以下の手順では、アンダークラウドと、そのオーバークラウドのイメージを Red Hat OpenStack Platform 13 にアップグレードします。
3.1. アンダークラウドを OpenStack Platform 13 にアップグレードする手順
この手順では、アンダークラウドのツールセットと Heat のコアテンプレートを OpenStack Platform 13 リリースにアップグレードします。
手順
-
director に
stackユーザーとしてログインします。 現在設定されている OpenStack Platform リポジトリーを無効にします。
$ sudo subscription-manager repos --disable=rhel-7-server-openstack-12-rpms
新しい OpenStack Platform リポジトリーを有効にします。
$ sudo subscription-manager repos --enable=rhel-7-server-openstack-13-rpms
yumコマンドを実行して、director の主要なパッケージをアップグレードします。$ sudo yum update -y python-tripleoclient
以下のコマンドを実行してアンダークラウドをアップグレードします。
$ openstack undercloud upgrade
- アンダークラウドのアップグレードプロセスが完了するまで待ちます。
アンダークラウドを再起動して、オペレーティングシステムのカーネルとその他のシステムパッケージを更新します。
$ sudo reboot
- ノードが起動するまで待ちます。
アンダークラウドが OpenStack Platform 13 リリースにアップグレードされました。
3.2. オーバークラウドイメージのアップグレード
現在のオーバークラウドイメージを新しいバージョンに置き換える必要があります。新しいイメージにより、director は最新バージョンの OpenStack Platform ソフトウェアを使用してノードのイントロスペクションとプロビジョニングを行うことができるようになります。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
手順
stackユーザーのホーム (/home/stack/images) にあるimagesディレクトリーから既存のイメージをすべて削除します。$ rm -rf ~/images/*
アーカイブを展開します。
$ cd ~/images $ for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; done $ cd ~
director に最新のイメージをインポートします。
$ openstack overcloud image upload --update-existing --image-path /home/stack/images/
ノードが新しいイメージを使用するように設定します。
$ openstack overcloud node configure $(openstack baremetal node list -c UUID -f value)
新規イメージが存在することを確認します。
$ openstack image list $ ls -l /httpboot
オーバークラウドノードをデプロイする際には、オーバークラウドイメージのバージョンが、その Heat テンプレートバージョンに対応していることを確認してください。たとえば、OpenStack Platform 13 の Heat テンプレートには、OpenStack Platform 13 のイメージのみを使用してください。
3.3. 以前のテンプレートバージョンの比較
アップグレードプロセスにより、最新のオーバークラウドバージョンに対応したコア Heat テンプレートの新しいセットがインストールされます。Red Hat OpenStack Platform のリポジトリーには、openstack-tripleo-heat-templates-compat パッケージ内のコアテンプレートコレクションの以前のバージョンが維持されています。以下の手順では、オーバークラウドのアップグレードに影響する可能性のある変更点を確認することができるように、それらのバージョンを比較する方法について説明します。
手順
openstack-tripleo-heat-templates-compatパッケージをインストールします。$ sudo yum install openstack-tripleo-heat-templates-compat
これにより、Heat テンプレートコレクションの
compatディレクトリー (/usr/share/openstack-tripleo-heat-templates/compat) に以前のテンプレートがインストールされ、以前のバージョン (ocata) から命名されたcompatへのリンクが作成されます。これらのテンプレートは、アップグレードされた director との後方互換性があるので、最新バージョンの director を使用して以前のバージョンのオーバークラウドをインストールすることができます。コア Heat テンプレートの一時的なコピーを作成します。
$ cp -a /usr/share/openstack-tripleo-heat-templates /tmp/osp13
以前のバージョンをそれ独自のディレクトリーに移動します。
$ mv /tmp/osp12/compat /tmp/osp12
両ディレクトリーのコンテンツに対して
diffを実行します。$ diff -urN /tmp/osp12 /tmp/osp13
このコマンドにより、バージョン間におけるコアテンプレートの変更が表示されます。この内容を確認すると、オーバークラウドのアップグレード中にどのような動作が行われるかがわかります。
3.4. 次のステップ
アンダークラウドのアップグレードが完了しました。これで、オーバークラウドをアップグレードに向けて準備することができます。
第4章 コンテナーイメージのソースの設定
コンテナー化されたオーバークラウドには、必要なコンテナーイメージを含むレジストリーへのアクセスが必要です。本章では、Red Hat OpenStack Platform 向けのコンテナーイメージを使用するためのレジストリーおよびオーバークラウドの設定の準備方法について説明します。
本ガイドでは、レジストリーを使用するためのユースケースをいくつか記載しています。これらのユースケースの 1 つを試す前には、イメージを準備するコマンドの使用方法をよく理解しておくことを推奨します。詳しくは、「container image prepare コマンドの使用方法」を参照してください。
4.1. レジストリーメソッド
Red Hat OpenStack Platform では、次のレジストリータイプがサポートされています。
- リモートレジストリー
-
オーバークラウドは、
registry.access.redhat.comから直接コンテナーイメージをプルします。これは、初期設定を生成するための最も簡単な方法ですが、それぞれのオーバークラウドノードが Red Hat Container Catalog から各イメージを直接プルするので、ネットワークの輻輳が生じてデプロイメントが遅くなる可能性があります。また、Red Hat Container Catalog にアクセスするためのインターネットアクセスが 全オーバークラウドノードに必要です。 - ローカルレジストリー
-
アンダークラウドにローカルレジストリーを作成し、
registry.access.redhat.comからプルしたイメージを同期します。オーバークラウドは、アンダークラウドからコンテナーイメージをプルします。この方法では、内部にレジストリーを保管することが可能なので、デプロイメントを迅速化してネットワークの輻輳を軽減することができます。ただし、アンダークラウドは基本的なレジストリーとしてのみ機能し、コンテナーイメージのライフサイクル管理は限定されます。 - Satellite サーバー
- Red Hat Satellite 6 サーバーを介して、コンテナーイメージの全アプリケーションライフサイクルを管理し、イメージを公開します。オーバークラウドは、Satellite サーバーからイメージをプルします。この方法は、Red Hat OpenStack Platform コンテナーを保管、管理、デプロイするためのエンタープライズ級のソリューションを提供します。
上記のリストから方法を選択し、レジストリー情報の設定を続けます。
4.2. container image prepare コマンドの使用方法
本項では、openstack overcloud container image prepare コマンドの使用方法について説明します。これには、このコマンドのさまざまなオプションについての概念的な情報も含まれます。
オーバークラウド用のコンテナーイメージ環境ファイルの生成
openstack overcloud container image prepare コマンドの主要な用途の 1 つに、オーバークラウドが使用するイメージの一覧が記載された環境ファイルの作成があります。このファイルは、openstack overcloud deploy などのオーバークラウドのデプロイメントコマンドで指定します。openstack overcloud container image prepare コマンドでは、この機能に以下のオプションを使用します。
--output-env-file- 作成される環境ファイルの名前を定義します。
以下のスニペットは、このファイルの内容の例を示しています。
parameter_defaults: DockerAodhApiImage: registry.access.redhat.com/rhosp13/openstack-aodh-api:latest DockerAodhConfigImage: registry.access.redhat.com/rhosp13/openstack-aodh-api:latest ...
インポート方法に対応したコンテナーイメージ一覧の生成
OpenStack Platform コンテナーイメージを異なるレジストリーソースにインポートする必要がある場合には、イメージの一覧を生成することができます。この一覧の構文は主に、アンダークラウド上のコンテナーレジストリーにコンテナーをインポートするのに使用されますが、Red Hat Satellite 6 などの別の方法に適した形式の一覧に変更することができます。
openstack overcloud container image prepare コマンドでは、この機能に次のオプションを使用します。
--output-images-file- 作成されるインポート一覧のファイル名を定義します。
このファイルの内容の例を以下に示します。
container_images: - imagename: registry.access.redhat.com/rhosp13/openstack-aodh-api:latest - imagename: registry.access.redhat.com/rhosp13/openstack-aodh-evaluator:latest ...
コンテナーイメージの名前空間の設定
--output-env-file と --output-images-file のオプションにはいずれも作成されるイメージの場所を生成するための名前空間が必要です。openstack overcloud container image prepare コマンドでは、以下のオプションを使用して、プルするコンテナーイメージの元の場所を設定します。
--namespace- コンテナーイメージ用の名前空間を定義します。これには通常、ホスト名または IP アドレスにディレクトリーを付けて指定します。
--prefix- イメージ名の前に追加するプレフィックスを定義します。
その結果、director は以下のような形式のイメージ名を生成します。
-
[NAMESPACE]/[PREFIX][IMAGE NAME]
コンテナーイメージタグの設定
openstack overcloud container image prepare コマンドは、デフォルトでは各コンテナーイメージに latest タグを使用しますが、以下のオプションのいずれか 1 つを使用すると、イメージバージョンに特定のタグを選択することができます。
--tag-from-label- 指定したコンテナーイメージラベルの値を使用して、全イメージのバージョンタグを検出します。
--tag-
全イメージ用の特定のタグを設定します。すべての OpenStack Platform コンテナーイメージで、同じタグを使用してバージョンの同期性を提供します。
--tag-from-labelと併用する場合には、 バージョンタグはこのタグから最初に検出されます。
4.3. 追加のサービス用のコンテナーイメージ
director は、OpenStack Platform のコアサービス用のコンテナーイメージのみを作成します。一部の追加機能には、追加のコンテナーイメージを必要とするサービスが使われます。これらのサービスは、環境ファイルで有効化することができます。openstack overcloud container image prepare コマンドでは、以下のオプションを使用して環境ファイルと対応するコンテナーイメージを追加します。
-e- 追加のコンテナーイメージを有効化するための環境ファイルを指定します。
以下の表は、コンテナーイメージを使用する追加のサービスのサンプル一覧とそれらの対応する環境ファイルがある /usr/share/openstack-tripleo-heat-templates ディレクトリー内の場所をまとめています。
| サービス | 環境ファイル |
|---|---|
|
Ceph Storage |
|
|
Collectd |
|
|
Congress |
|
|
Fluentd |
|
|
OpenStack Bare Metal (ironic) |
|
|
OpenStack Data Processing (sahara) |
|
|
OpenStack EC2-API |
|
|
OpenStack Key Manager (barbican) |
|
|
OpenStack Load Balancing-as-a-Service (octavia) |
|
|
OpenStack Shared File System Storage (manila) |
|
|
Sensu |
|
以下の項には、追加するサービスの例を記載します。
Ceph Storage
Red Hat Ceph Storage クラスターをオーバークラウドでデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml 環境ファイルを追加する必要があります。このファイルは、オーバークラウドで、コンテナー化されたコンポーザブルサービスを有効化します。director は、これらのサービスが有効化されていることを確認した上で、それらのイメージを準備する必要があります。
この環境ファイルに加えて、Ceph Storage コンテナーの場所を定義する必要があります。これは、OpenStack Platform サービスの場所とは異なります。--set オプションを使用して以下のパラメーターを Ceph Storage 固有に設定してください。
--set ceph_namespace-
Ceph Storage コンテナーイメージ用の名前空間を定義します。これは、
--namespaceオプションと同様に機能します。 --set ceph_image-
Ceph Storage コンテナーイメージの名前を定義します。通常は
rhceph-3-rhel7という名前です。 --set ceph_tag-
Ceph Storage コンテナーイメージに使用するタグを定義します。これは、
--tagオプションと同じように機能します。--tag-from-labelが指定されている場合には、バージョンタグはこのタグから検出が開始されます。
以下のスニペットは、コンテナーイメージファイル内に Ceph Storage が含まれている例です。
$ openstack overcloud container image prepare \
...
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
--set ceph_namespace=registry.access.redhat.com/rhceph \
--set ceph_image=rhceph-3-rhel7 \
--tag-from-label {version}-{release} \
...OpenStack Bare Metal (ironic)
オーバークラウドで OpenStack Bare Metal (ironic) をデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/services-docker/ironic.yaml 環境ファイルを追加して、director がイメージを準備できるようにする必要があります。以下のスニペットは、この環境ファイルの追加方法の例を示しています。
$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/ironic.yaml \ ...
OpenStack Data Processing (sahara)
オーバークラウドで OpenStack Bare Metal (ironic) をデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/services-docker/sahara.yaml 環境ファイルを追加して、director がイメージを準備できるようにする必要があります。以下のスニペットは、この環境ファイルの追加方法の例を示しています。
$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/sahara.yaml \ ...
4.4. Red Hat レジストリーをリモートレジストリーソースとして使用する方法
Red Hat では、オーバークラウドのコンテナーイメージを registry.access.redhat.com でホストしています。リモートレジストリーからイメージをプルする方法では、レジストリーはすでに設定済みで、必要なのはプルするイメージの URL と名前空間だけなので、最も簡単です。ただし、オーバークラウドの作成中には、オーバークラウドノードがリモートリポジトリーからすべてのイメージをプルするので、外部接続で輻輳が生じる場合があります。これが問題となる場合には、以下のいずれかの手段を取ることができます。
- ローカルレジストリーの設定
- Red Hat Satellite 6 上でのイメージのホスティング
手順
イメージを直接
registry.access.redhat.comからオーバークラウドデプロイメントにプルするには、イメージパラメーターを指定するための環境ファイルが必要となります。以下のコマンドにより、この環境ファイルが自動的に作成されます。(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp13 \ --prefix=openstack- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml-
-e: オプションのサービスの環境ファイルを指定します。 -
Ceph Storage を使用している場合は、Ceph Storage コンテナーイメージの場所を定義するための追加のパラメーターを含めます:
--set ceph_namespace、--set ceph_image、--set ceph_tag
-
-
これで、イメージの場所が記載された
overcloud_images.yaml環境ファイルがアンダークラウド上に作成されます。このファイルをデプロイメントで指定します。
4.5. ローカルレジストリーとしてアンダークラウドを使用する方法
アンダークラウド上でローカルレジストリーを設定して、オーバークラウドのコンテナーイメージを保管することができます。この方法は、以下の操作を伴います。
-
director は
registry.access.redhat.comから各イメージをプルします。 - director がオーバークラウドを作成します。
- オーバークラウドの作成中に、ノードが適切なイメージをアンダークラウドからプルします。
これにより、コンテナーイメージのネットワークトラフィックは、 内部ネットワーク内に留まるので、外部ネットワークとの接続で輻輳が発生せず、デプロイメントプロセスを迅速化することができます。
手順
ローカルアンダークラウドレジストリーのアドレスを特定します。アドレスは、以下のパターンを使用します。
<REGISTRY IP ADDRESS>:8787
アンダークラウドの IP アドレスを使用します。これは、以前に
undercloud.confファイルのlocal_ipパラメーターで設定されています。以下のコマンドでは、このアドレスが192.168.24.1:8787であると仮定しています。イメージをローカルレジストリーにアップロードするためのテンプレートと、それらのイメージを参照する環境ファイルを作成します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp13 \ --push-destination=192.168.24.1:8787 \ --prefix=openstack- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml \ --output-images-file /home/stack/local_registry_images.yaml-
-e: オプションのサービスの環境ファイルを指定します。 -
Ceph Storage を使用している場合は、Ceph Storage コンテナーイメージの場所を定義するための追加のパラメーターを含めます:
--set ceph_namespace、--set ceph_image、--set ceph_tag
-
これで 2 つのファイルが作成されます。
-
リモートソースからのコンテナーイメージの情報が含まれている
local_registry_images.yaml。このファイルを使用して、Red Hat Container Registry (registry.access.redhat.com) からイメージをアンダークラウドにプルします。 アンダークラウド上の最終的なイメージの場所が記載されている
overcloud_images.yaml。このファイルはデプロイメントで指定します。両方のファイルが存在することを確認します。
-
リモートソースからのコンテナーイメージの情報が含まれている
コンテナーイメージを
registry.access.redhat.comからアンダークラウドにプルします。(undercloud) $ sudo openstack overcloud container image upload \ --config-file /home/stack/local_registry_images.yaml \ --verbose
ネットワークおよびアンダークラウドディスクの速度によっては、必要なイメージをプルするのに時間がかかる場合があります。
注記コンテナーイメージは、およそ 10 GB のディスク領域を使用します。
レジストリーの設定の準備が整いました。
4.6. Satellite サーバーをレジストリーとして使用する手順
Red Hat Satellite 6 には、レジストリーの同期機能が備わっています。これにより、複数のイメージを Satellite サーバーにプルし、アプリケーションライフサイクルの一環として管理することができます。また、他のコンテナー対応システムも Satellite をレジストリーとして使うことができます。コンテナーイメージ管理の詳細は、『Red Hat Satellite 6 コンテンツ管理ガイド』の「コンテナーイメージの管理」 を参照してください。
以下の手順は、Red Hat Satellite 6 の hammer コマンドラインツールを使用した例を示しています。組織には、例として ACME という名称を使用しています。この組織は、実際に使用する Satellite 6 の組織に置き換えてください。
手順
イメージをローカルレジストリーにプルするためのテンプレートを作成します。
$ source ~/stackrc (undercloud) $ openstack overcloud container image prepare \ --namespace=rhosp13 \ --prefix=openstack- \ --output-images-file /home/stack/satellite_images \
-
-e: オプションのサービスの環境ファイルを指定します。 -
Ceph Storage を使用している場合は、Ceph Storage コンテナーイメージの場所を定義するための追加のパラメーターを含めます:
--set ceph_namespace、--set ceph_image、--set ceph_tag
注記上記の
openstack overcloud container image prepareコマンドは、registry.access.redhat.comのレジストリーをターゲットにしてイメージの一覧を生成します。この後のステップでは、openstack overcloud container image prepareコマンドで別の値を使用します。-
-
これで、コンテナーイメージの情報が含まれた
satellite_imagesという名前のファイルが作成されます。このファイルを使用して、コンテナーイメージを Satellite 6 サーバーに同期します。 satellite_imagesファイルから YAML 固有の情報を削除して、イメージ一覧のみが記載されたフラットファイルに変換します。この操作は、以下のsedコマンドで実行します。(undercloud) $ awk -F ':' '{if (NR!=1) {gsub("[[:space:]]", ""); print $2}}' ~/satellite_images > ~/satellite_images_namesこれにより、Satellite サーバーにプルするイメージのリストが提供されます。
-
Satellite 6 の
hammerツールがインストールされているシステムにsatellite_images_namesファイルをコピーします。または、『Hammer CLI ガイド』 に記載の手順に従ってアンダークラウドにhammerツールをインストールします。 以下の
hammerコマンドを実行して、新しい製品 (OSP13 Containers) を Satellite の組織に作成します。$ hammer product create \ --organization "ACME" \ --name "OSP13 Containers"
このカスタム製品に、イメージを保管します。
製品にベースコンテナーイメージを追加します。
$ hammer repository create \ --organization "ACME" \ --product "OSP13 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name rhosp13/openstack-base \ --name base
satellite_imagesファイルからオーバークラウドのコンテナーイメージを追加します。$ while read IMAGE; do \ IMAGENAME=$(echo $IMAGE | cut -d"/" -f2 | sed "s/openstack-//g" | sed "s/:.*//g") ; \ hammer repository create \ --organization "ACME" \ --product "OSP13 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name $IMAGE \ --name $IMAGENAME ; done < satellite_images_names
コンテナーイメージを同期します。
$ hammer product synchronize \ --organization "ACME" \ --name "OSP13 Containers"
Satellite サーバーが同期を完了するまで待ちます。
注記設定によっては、
hammerが Satellite サーバーのユーザー名とパスワードを要求する場合があります。設定ファイルを使用して、hammerが自動ログインするように設定することができます。『Hammer CLI ガイド』の「認証」 の項を参照してください。- Satellite 6 サーバーでコンテンツビューを使用している場合には、新規コンテンツビューを作成して、イメージを取り入れます。
baseイメージに使用可能なタグを確認します。$ hammer docker tag list --repository "base" \ --organization "ACME" \ --product "OSP13 Containers"
これにより、OpenStack Platform コンテナーイメージのタグが表示されます。
アンダークラウドに戻り、Satellite サーバー上のイメージ用に環境ファイルを生成します。環境ファイルを生成するコマンドの例を以下に示します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=satellite6.example.com:5000 \ --prefix=acme-osp13_containers- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml注記上記の
openstack overcloud container image prepareコマンドはSatelliteサーバーをターゲットにします。これは、前のステップで使用したopenstack overcloud container image prepareコマンドとは異なる値を使用します。このコマンドを実行する際には、以下の情報を含めてください。
-
--namespace: Satellite サーバー上のレジストリーの URL およびポート。Red Hat Satellite のデフォルトのレジストリーポートは 5000 です。例:--namespace=satellite6.example.com:5000 --prefix=: プレフィックスは Satellite 6 の命名規則に基づきます。これは、コンテンツビューを使用するかどうかによって異なります。-
コンテンツビューを使用する場合、構造は
[org]-[environment]-[content view]-[product]-となります (例:acme-production-myosp13-osp13_containers-)。 -
コンテンツビューを使用しない場合、構造は
[org]-[product]-となります (例:acme-osp13_containers-)。
-
コンテンツビューを使用する場合、構造は
-
--tag-from-label {version}-{release}: 各イメージの最新のタグを識別します。 -
-e: オプションのサービスの環境ファイルを指定します。 --set ceph_namespace、--set ceph_image、--set ceph_tag: Ceph Storageを使用する場合は、Ceph Storageコンテナーのイメージの場所を定義するための追加パラメーターを含めます。ceph_imageには現在 Satellite 固有のプレフィックスが付いている点に注意してください。このプレフィックスは、--prefixオプションと同じ値です。以下に例を示します。--set ceph_image=acme-osp13_containers-rhceph-3-rhel7
これにより、オーバークラウドは Satelite の命名規則の Ceph コンテナーイメージを使用することができます。
-
-
これで、Satellite サーバー上のイメージの場所が記載された
overcloud_images.yaml環境ファイルが作成されます。このファイルをデプロイメントで指定します。
レジストリーの設定の準備が整いました。
4.7. 次のステップ
コンテナーイメージのソースが記載された overcloud_images.yaml 環境ファイルができました。今後のアップグレードとデプロイメントの操作ではすべてこのファイルを追加してください。
これで、オーバークラウドをアップグレードに向けて準備することができます。
第5章 オーバークラウドのアップグレードの準備
以下の手順では、アップグレードプロセスに向けて、オーバークラウドの準備を行います。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
5.1. オーバークラウドの登録情報の準備
オーバークラウドに最新のサブスクリプション情報を提供して、アップグレードプロセスの実行中にオーバークラウドが最新のパッケージを使用するようにする必要があります。
前提条件
- 最新の OpenStack Platform リポジトリーが含まれたサブスクリプション
- 登録のためのアクティベーションキーを使用する場合には、新しい OpenStack Platform リポジトリーを含む新規アクティベーションキーを作成すること
手順
登録情報が記載された環境ファイルを編集します。以下に例を示します。
$ vi ~/templates/rhel-registration/environment-rhel-registration.yaml
以下のパラメーター値を編集します。
rhel_reg_repos- Red Hat OpenStack Platform 13 の新しいリポジトリーを追加するように更新します。
rhel_reg_activation_key- Red Hat OpenStack Platform 13 のリポジトリーにアクセスするためのアクティベーションキーを更新します。
rhel_reg_sat_repo- Red Hat Satellite 6 のより新しいバージョンを使用する場合には、Satellite 6 の管理ツールが含まれているリポジトリーを更新します。
- 環境ファイルを保存します。
関連情報
- 登録パラメータの詳細については、 『Advanced Overcloud Customizations』ガイドの「Registering the Overcloud with an Environment File」を参照してください。
5.2. 非推奨パラメーター
以下のパラメーターは非推奨となり、ロール固有のパラメーターに置き換えられた点に注意してください。
| 旧パラメーター | 新規パラメーター |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
カスタムの環境ファイルでこれらのパラメーターを更新します。
OpenStackPlatform 環境で非推奨となったこれらのパラメーターがまだ必要な場合には、デフォルトの roles_data ファイルで使用することができます。ただし、カスタムの roles_data ファイルを使用していて、オーバークラウドにそれらの非推奨パラメーターが引き続き必要な場合には、roles_data ファイルを編集して各ロールに以下の設定を追加することによって、パラメーターへのアクセスを可能にすることができます。
Controller ロール
- name: Controller uses_deprecated_params: True deprecated_param_extraconfig: 'controllerExtraConfig' deprecated_param_flavor: 'OvercloudControlFlavor' deprecated_param_image: 'controllerImage' ...
Compute ロール
- name: Compute uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' disable_upgrade_deployment: True ...
Object Storage ロール
- name: ObjectStorage uses_deprecated_params: True deprecated_param_metadata: 'SwiftStorageServerMetadata' deprecated_param_ips: 'SwiftStorageIPs' deprecated_param_image: 'SwiftStorageImage' deprecated_param_flavor: 'OvercloudSwiftStorageFlavor' disable_upgrade_deployment: True ...
5.3. 非推奨の CLI オプション
環境ファイルの parameter_defaults セクションに追加する Heat テンプレートのパラメーターの使用が優先されるため、一部のコマンドラインオプションは古いか非推奨となっています。以下の表では、非推奨となったパラメーターと、それに相当する Heat テンプレートのオプションを対照しています。
表5.1 非推奨の CLI オプションと Heat テンプレートのパラメーターの対照表
| オプション | 説明 | Heat テンプレートのパラメーター |
|---|---|---|
|
|
スケールアウトするコントローラーノード数 |
|
|
|
スケールアウトするコンピュートノード数 |
|
|
|
スケールアウトする Ceph Storage ノードの数 |
|
|
|
スケールアウトする Cinder ノード数 |
|
|
|
スケールアウトする Swift ノード数 |
|
|
|
コントローラーノードに使用するフレーバー |
|
|
|
コンピュートノードに使用するフレーバー |
|
|
|
Ceph Storage ノードに使用するフレーバー |
|
|
|
Cinder ノードに使用するフレーバー |
|
|
|
Swift Storage ノードに使用するフレーバー |
|
|
|
フラットなネットワークが neutron プラグインで設定されるように定義します。外部ネットワークを作成ができるようにデフォルトは「datacentre」に設定されています。 |
|
|
|
各ハイパーバイザーで作成する Open vSwitch ブリッジ。デフォルト値は「br-ex」で、通常この値は変更する必要はないはずです。 |
|
|
|
使用する論理ブリッジから物理ブリッジへのマッピング。ホスト (br-ex) の外部ブリッジを物理名 (datacentre) にマッピングするようにデフォルト設定されています。これは、デフォルトの Floating ネットワークに使用されます。 |
|
|
|
ネットワークノード向けにインターフェースを br-ex にブリッジするインターフェースを定義します。 |
|
|
|
Neutron のテナントネットワーク種別 |
|
|
|
neutron テナントネットワークのトンネリング種別。複数の値を指定するには、コンマ区切りの文字列を使用します。 |
|
|
|
テナントネットワークを割り当てに使用できる GRE トンネリングの ID 範囲 |
|
|
|
テナントネットワークを割り当てに使用できる VXLAN VNI の ID 範囲 |
|
|
|
サポートされる Neutron ML2 および Open vSwitch VLAN マッピングの範囲。デフォルトでは、物理ネットワーク「datacentre」上の VLAN を許可するように設定されています。 |
|
|
|
neutron テナントネットワークのメカニズムドライバー。デフォルトでは、「openvswitch」に設定されており、複数の値を指定するにはコンマ区切りの文字列を使用します。 |
|
|
|
VLAN で区切られたネットワークまたは neutron でのフラットネットワークを使用するためにトンネリングを無効化します。 |
パラメーターのマッピングなし |
|
|
オーバークラウドの作成プロセスでは、デプロイメントの前に一連のチェックが行われます。このオプションは、デプロイメント前のチェックで何らかの致命的なエラーが発生した場合に終了します。どのようなエラーが発生してもデプロイメントが失敗するので、このオプションを使用することを推奨します。 |
パラメーターのマッピングなし |
|
|
時刻の同期に使用する NTP サーバーを設定します。 |
|
これらのパラメーターは Red Hat OpenStack Platform から削除されました。CLI オプションは Heat パラメーターに変換して、環境ファイルに追加することを推奨します。
5.4. コンポーザブルネットワーク
Red Hat OpenStack Platform の今回のバージョンでは、コンポーザブルネットワーク向けの新機能が導入されています。カスタムの roles_data ファイルを使用する場合には、ファイルを編集して、コンポーザブルネットワークを各ロールに追加します。コントローラーノードの場合の例を以下に示します。
- name: Controller
networks:
- External
- InternalApi
- Storage
- StorageMgmt
- Tenant
デフォルトの /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ファイルをチェックして、構文のさらなる例を確認してください。ロールスニペットの例は、/usr/share/openstack-tripleo-heat-templates/roles を確認してください。
カスタムのスタンドアロンロールとコンポーザブルネットワークの対応表を以下に示します。
| ロール | 必要なネットワーク |
|---|---|
|
Ceph Storage Monitor |
|
|
Ceph Storage OSD |
|
|
Ceph Storage RadosGW |
|
|
Cinder API |
|
|
Compute |
|
|
Controller |
|
|
Database |
|
|
Glance |
|
|
Heat |
|
|
Horizon |
|
|
Ironic |
必要なネットワークはなし。API には、プロビジョニング/コントロールプレーンネットワークを使用します。 |
|
Keystone |
|
|
Load Balancer |
|
|
Manila |
|
|
Message Bus |
|
|
Networker |
|
|
Neutron API |
|
|
Nova |
|
|
OpenDaylight |
|
|
Redis |
|
|
Sahara |
|
|
Swift API |
|
|
Swift Storage |
|
|
Telemetry |
|
以前のバージョンでは、*NetName パラメーター (例: InternalApiNetName) によってデフォルトのネットワークの名前が変更されていました。このパラメーターはサポートされなくなりました。カスタムのコンポーザブルネットワークファイルを使用してください。詳しくは、『Advanced Overcloud Customization』 ガイドの 「Using Composable Networks」 を参照してください。
5.5. カスタムの Puppet パラメーターの確認
Puppet パラメーターのカスタマイズに ExtraConfig インターフェースを使用する場合には、アップグレード中に、Puppet が重複した宣言のエラーを報告する可能性があります。これは、Puppet モジュール自体によって提供されるインターフェースの変更が原因です。
この手順では、環境ファイル内のカスタムの ExtraConfig hieradata パラメーターを確認する方法を説明します。
手順
環境ファイルを選択し、
ExtraConfigパラメーターがあるかどうかをチェックします。$ grep ExtraConfig ~/templates/custom-config.yaml
-
このコマンドの結果に、選択したファイル内のいずれかのロールの
ExtraConfigパラメーター (例:ControllerExtraConfig) が表示された場合には、そのファイルの完全なパラメーター構造を確認してください。 SECTION/parameter構文でvalueが続くいずれかの puppet Hierdata がパラメーターに含まれている場合には、実際の Puppet クラスに置き換えられている可能性があります。以下に例を示します。parameter_defaults: ExtraConfig: neutron::config::dhcp_agent_config: 'DEFAULT/dnsmasq_local_resolv': value: 'true'director の Puppet モジュールを確認して、パラメーターが Puppet クラス内に存在しているかどうかを確認します。以下に例を示します。
$ grep dnsmasq_local_resolv
その場合には、新規インターフェースに変更します。
構文の変更の実例を以下に示します。
例 1:
parameter_defaults: ExtraConfig: neutron::config::dhcp_agent_config: 'DEFAULT/dnsmasq_local_resolv': value: 'true'変更後
parameter_defaults: ExtraConfig: neutron::agents::dhcp::dnsmasq_local_resolv: true例 1:
parameter_defaults: ExtraConfig: ceilometer::config::ceilometer_config: 'oslo_messaging_rabbit/rabbit_qos_prefetch_count': value: '32'変更後
parameter_defaults: ExtraConfig: oslo::messaging::rabbit::rabbit_qos_prefetch_count: '32'
5.6. ネットワークインターフェースのテンプレートを新しい構造に変換する方法
以前は、ネットワークインターフェースの構造は OS::Heat::StructuredConfig リソースを使用してインターフェースを設定していました。
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
[NETWORK INTERFACE CONFIGURATION HERE]
テンプレートは現在、 OS::Heat::SoftwareConfig リソースを設定に使用しています。
resources:
OsNetConfigImpl:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template:
get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
params:
$network_config:
network_config:
[NETWORK INTERFACE CONFIGURATION HERE]
この設定では、 $network_config 変数に保管されているインターフェースの設定を取得して、それを run-os-net-config.sh スクリプトの一部として挿入します。
ネットワークインターフェースのテンプレートがこの新しい構造を使用するように更新して、ネットワークインターフェースのテンプレートが引き続き構文を順守していることを必ず確認する必要があります。 この操作を実行しないと、Fast Forward Upgrade のプロセスでエラーが発生する可能性があります。
director の Heat テンプレートコレクションには、お使いのテンプレートをこの新しい形式に変換するためのスクリプトが含まれています。このスクリプトは、/usr/share/openstack-tripleo-heat-templates/tools/yaml-nic-config-2-script.py にあります。使用方法の例を以下に示します。
$ /usr/share/openstack-tripleo-heat-templates/tools/yaml-nic-config-2-script.py \
--script-dir /usr/share/openstack-tripleo-heat-templates/network/scripts \
[NIC TEMPLATE] [NIC TEMPLATE] ...このスクリプトを使用する場合には、テンプレートにコメント化された行が含まれていないことを確認します。コメント化された行があると、古いテンプレート構造の解析時にエラーが発生する可能性があります。
詳しくは、「Isolating Networks」を参照してください。
5.7. 次のステップ
オーバークラウドの準備段階が完了しました。次に「6章オーバークラウドのアップグレード」に記載の手順でオーバークラウドを 13 にアップグレードします。
第6章 オーバークラウドのアップグレード
以下の手順では、オーバークラウドをアップグレードします。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
- アップグレードでの変更に対応するためのカスタム環境ファイルの準備が完了していること
6.1. overcloud upgrade prepare の実行
アップグレードには、openstack overcloud upgrade prepare コマンドを実行する必要があります。このコマンドのより、次のタスクが実行されます。
- オーバークラウドのプランを OpenStack Platform 13 に更新します。
- アップグレードに向けたノードの準備
手順
stackrcファイルを読み込みます。$ source ~/stackrc
upgrade prepare コマンドを実行します。
$ openstack overcloud upgrade prepare \ --templates \ -e /home/stack/templates/overcloud_images.yaml \ -e <ENVIRONMENT FILE>以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
カスタム設定環境ファイル(
-e) -
新しいコンテナーイメージの場所が記載された環境ファイル (
-e)。アップグレードのコマンドで--container-registry-fileの使用に関する警告が表示される場合があることに注意してください。このオプションは非推奨になり、コンテナーイメージの環境ファイルには-eを使用するのが推奨されるようになっているので、警告は無視して問題ありません。 -
該当する場合は、
--roles-fileでカスタムロール (roles_data) のファイルを指定します。 -
該当する場合は、
--networks-fileでコンポーザブルネットワーク (network_data) のファイルを指定します。
-
カスタム設定環境ファイル(
- upgrade prepare が完了するまで待ちます。
6.2. 全コントローラーノードのアップグレード
このプロセスでは、全コントローラーノードを OpenStackPlatform 13 にアップグレードします。このプロセスは、openstack overcloud upgrade run コマンドに --roles Controller オプションを指定して、操作をコントローラノードのみに制限して実行する必要があります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --roles Controller
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- コントローラーノードのアップグレードが完了するまで待ちます。
6.3. 全コンピュートノードのアップグレード
このプロセスでは、残りのコンピュートノードをすべて OpenStackPlatform 13 にアップグレードします。このプロセスは、openstack overcloud upgrade run コマンドに --roles Compute オプションを指定して、操作をコンピュートノードのみに制限して実行する必要があります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --roles Compute
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- コンピュートノードのアップグレードが完了するまで待ちます。
6.4. 全 Ceph Storage ノードのアップグレード
このプロセスでは、Ceph Storage ノードをアップグレードします。このプロセスには、以下の操作が必要です。
-
openstack overcloud upgrade runコマンドを実行し、--roles CephStorageオプションを指定して、操作を Ceph Storageノードのみに制限して実行します。 -
openstack overcloud ceph-upgrade runコマンドを実行し、コンテナー化された Red Hat Ceph Storage 3 クラスターへのアップグレードを実行します。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --roles CephStorage
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- ノードのアップグレードが完了するまで待ちます。
Ceph Storage のアップグレードコマンドを実行します。以下に例を示します。
$ openstack overcloud ceph-upgrade run \ --templates \ -e /home/stack/templates/overcloud_images.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/ceph-customization.yaml \ -e <ENVIRONMENT FILE>以下のオプションの中で、お使いの環境に適切なオプションを追加します。
カスタム設定環境ファイル (
-e)。以下に例を示します。-
コンテナーイメージの場所が記載された環境ファイル (
overcloud_images.yaml)。アップグレードのコマンドで--container-registry-fileの使用に関する警告が表示される場合があることに注意してください。このオプションは非推奨になり、コンテナーイメージの環境ファイルには-eを使用するのが推奨されるようになっているので、警告は無視して問題ありません。 - Ceph Storage ノード用の関連する環境ファイル
- お使いの環境に関連する追加の環境ファイル
-
コンテナーイメージの場所が記載された環境ファイル (
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。 -
該当する場合は、
--roles-fileでカスタムロール (roles_data) のファイルを指定します。 -
該当する場合は、
--networks-fileでコンポーザブルネットワーク (network_data) のファイルを指定します。
- Ceph Storage ノードのアップグレードが完了するまで待ちます。
6.5. アップグレードの最終処理
アップグレードには、オーバークラウドスタックを更新する最終ステップが必要です。これにより、スタックのリソース構造が OpenStackPlatform 13 の標準のデプロイメントと一致し、今後、通常の openstack overcloud deploy の機能を実行できるようになります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードの最終処理のコマンドを実行します。
$ openstack overcloud upgrade converge \ --templates \ -e <ENVIRONMENT FILE>以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
カスタム設定環境ファイル (
-e) -
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。 -
該当する場合は、
--roles-fileでカスタムロール (roles_data) のファイルを指定します。 -
該当する場合は、
--networks-fileでコンポーザブルネットワーク (network_data) のファイルを指定します。
-
カスタム設定環境ファイル (
- アップグレードの最終処理が完了するまで待ちます。
第7章 アップグレード後のステップの実行
以下の手順では、主要なアップグレードプロセスが完了した後の最終ステップを実行します。
前提条件
- オーバークラウドを最新のメジャーリリースにアップグレードする作業が完了していること
7.1. オーバークラウドのアップグレード後の一般的な考慮事項
以下の項目は、オーバークラウドのアップグレード後の一般的な考慮事項です。
-
必要な場合にはオーバークラウドノードで作成された設定ファイルを確認します。パッケージをアップグレードすると、各サービスのアップレードされたバージョンに適した
.rpmnewファイルがインストールされている可能性があります。 コンピュートノードが
neutron-openvswitch-agentの問題をレポートする可能性があります。これが発生した場合には、各コンピュートノードにログインして、このサービスを再起動します。以下のようなコマンドを実行します。$ sudo systemctl restart neutron-openvswitch-agent
状況によっては、コントローラーノードの再起動後に IPv6 環境で
corosyncサービスの起動に失敗する可能性があります。これは、コントローラーノードが静的な IPv6 アドレスを設定する前に Corosync が起動してしまうことが原因です。このような場合は、コントローラーノードで Corosync を手動で再起動してください。$ sudo systemctl restart corosync
