Fast Forward Upgrade
Red Hat OpenStack Platform 10 から 13 へのロングライフバージョン間のアップグレード
概要
第1章 はじめに
本書では、Red Hat OpenStack Platform 環境を最新のロングライフバージョンにアップグレードするために役立つワークフローについて説明します。
1.1. 作業を開始する前に
以下の点に注意してください。
-
Fast Forward Upgrade のワークフローは、現在開発中です。特に
ffwd-upgradeCLI コマンドの起動は、最初は開発/テスト環境に限定すべきです。Fast Forward Upgrade を実稼働環境で使用することにした場合には、実稼働レベルの Fast Forward Upgrade の実行を試みる前に、Customer Experience and Engagement チーム (https://access.redhat.com/support) に連絡してサポートを受けてください。 バージョン 7 または 8 を使用する Red Hat OpenStack Platform 環境を最初にデプロイした場合には、XFS ファイルシステムの古いバージョンでアップグレードパスとコンテナー化されたサービスのデプロイを妨げる問題があることに注意してください。この問題に関する詳しい情報と解決方法については、以下の記事を参照してください。
1.2. Fast Forward Upgrade
Red Hat OpenStack Platform には Fast Forward Upgrade 機能が実装されました。この機能は、複数のバージョンを経由するオーバークラウドのアップグレードパスを提供します。目的は、ユーザーが ロングライフバージョン とされる特定の OpenStack バージョンを使用し続け、次のロングライフバージョンが提供された時点でアップグレードできるようにすることです。
本ガイドは、以下のバージョンの Fast Forward Upgrade パスを提供します。
| 旧バージョン | 新バージョン |
|---|---|
|
Red Hat OpenStack Platform 10 |
Red Hat OpenStack Platform 13 |
1.3. ワークフローの概要
以下の表には、Fast Forward Upgrade プロセスに必要なステップの概要をまとめています。
| ステップ | 説明 |
|---|---|
|
環境の準備 |
アンダークラウドノードとオーバークラウドのコントローラーノードのデータベースおよび設定のバックアップを実行してから、最新のマイナーリリースに更新して、再起動し、環境を検証します。 |
|
アンダークラウドのアップグレード |
OpenStack Platform 10 から OpenStack Platform 13 まで、アンダークラウドのバージョンを 1 つずつ順番にアップグレードします。 |
|
コンテナーイメージの取得 |
さまざまな OpenStack サービス用のコンテナーイメージの場所が記載された環境ファイルを作成します。 |
|
オーバークラウドの準備 |
オーバークラウドの設定ファイルを OpenStack Platform 13 に移行するための適切なステップを実行します。 |
|
Fast Forward Upgrade の実行 |
OpenStack Platform director の最新のテンプレートセットを使用して、オーバークラウドプランをアップグレードします。パッケージとデータベースのバージョンを 1 つずつ順番にアップグレードして、データベーススキーマを OpenStack Platform 13 にアップグレードできる状態にします。 |
|
コントローラーノードのアップグレード |
全コントローラーノードを同時に OpenStack Platform 13 にアップグレードします。 |
|
コンピュートノードのアップグレード |
選択したコンピュートノードでアップグレードをテストします。テストが成功したら、全コンピュートノードをアップグレードします。 |
|
Ceph Storage ノードのアップグレード |
全 Ceph Storage ノードをアップグレードします。これには、Red Hat Ceph Storage 3 のコンテナー化されたバージョンへのアップグレードも含まれます。 |
|
アップグレードの最終段階 |
コンバージェンスのコマンドを実行して、オーバークラウドスタックをリフレッシュします。 |
第2章 OpenStack Platform アップグレードの準備
このプロセスでは、OpenStack Platform 環境を準備します。これには、以下のステップを伴います。
- アンダークラウドとオーバークラウドの両方をバックアップします。
- アンダークラウドを OpenStack Platform 10 の最新のマイナーバージョンに更新します (最新の Open vSwitch を含む)。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、アンダークラウドを再起動します。
- オーバークラウドを OpenStack Platform 10 の最新のマイナーバージョンに更新します (最新の Open vSwitch を含む)。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、オーバークラウドノードを再起動します。
- アンダークラウドとオーバークラウドの両方で検証のチェックを実行します。
これらの手順により、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
バックアッププロセスを実行する前に、アンダークラウドに利用可能なディスク容量が十分にあることを確認します。アーカイブファイルは、少なくとも 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ファイルをセキュアな場所にコピーします。
関連情報
- アンダークラウドのバックアップを復元する必要がある場合には、「付録A アンダークラウドの復元」を参照してください。
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/`hostname`-filesystem-`date '+%Y-%m-%d-%H-%M-%S'`.tar \ /etc \ /srv/node \ /var/log \ /var/lib/nova \ --exclude /var/lib/nova/instances \ /var/lib/glance \ /var/lib/keystone \ /var/lib/cinder \ /var/lib/heat \ /var/lib/heat-config \ /var/lib/heat-cfntools \ /var/lib/rabbitmq \ /var/lib/neutron \ /var/lib/haproxy \ /var/lib/openvswitch \ /var/lib/redis \ /usr/libexec/os-apply-config \ /home/heat-admin--ignore-failed-readオプションを使用すると、見つからないディレクトリーは無視されます。これは、特定のサービスが使用されていない場合や、独自のカスタムロール上に分離されている場合に役立ちます。
-
作成された
tarファイルを安全な場所にコピーします。
関連情報
- オーバークラウドのバックアップを復元する必要がある場合には、「付録B オーバークラウドの復元」を参照してください。
2.3. NFV 対応環境の更新準備
環境でネットワーク機能仮想化 (NFV) が有効化されている場合には、アンダークラウドとオーバークラウドを更新する前に以下のステップを実行する必要があります。
手順
-
この post-install.yaml のサンプルファイルの内容を既存の
post-install.yamlファイルのいずれかに追加します。 カスタムの環境ファイル (例:
network-environment.yaml) で、vhost ユーザーソケットディレクトリーを変更します。parameter_defaults: NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"
openstack overcloud deployコマンドにovs-dpdk-permissions.yamlファイルを追加して、qemu グループの設定値を OVS-DPDK 向けにhugetlbfsに設定します。-e environments/ovs-dpdk-permissions.yaml
2.4. 現在のアンダークラウドパッケージの OpenStack Platform 10.z の更新
director では、アンダークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、OpenStack Platform 10 内でのマイナー更新です。
このステップにより、アンダークラウドのオペレーティングシステムも Red Hat Enterprise Linux 7 の最新バージョンに更新され、Open vSwtich はバージョン 2.9 となります。
手順
-
アンダークラウドに
stackユーザーとしてログインします。 主要な OpenStack Platform サービスを停止します。
$ sudo systemctl stop 'openstack-*' 'neutron-*' httpd
注記これにより、アンダークラウドで短時間のダウンタイムが生じます。アンダークラウドのアップグレード中もオーバークラウドは引き続き機能します。
python-tripleoclientパッケージと依存関係を更新し、マイナーバージョンの更新向けの最新のスクリプトを使用できるようにします。$ sudo yum update -y python-tripleoclient
openstack undercloud upgradeコマンドを実行します。$ openstack undercloud upgrade
- コマンドの実行が完了するまで待ちます。
アンダークラウドを再起動して、オペレーティングシステムのカーネルとその他のシステムパッケージを更新します。
$ sudo reboot
- ノードが起動するまで待ちます。
-
アンダークラウドに
stackユーザーとしてログインします。
アンダークラウドのパッケージの更新に加えて、オーバークラウドのイメージを最新の状態に維持して、イメージの設定が openstack-tripleo-heat-template パッケージと同期するようにすることを推奨します。これにより、現在の準備段階と実際の Fast Foward Upgrade の間に実行されるデプロイメントとスケーリングの操作が正常に実行されるようになります。次の項では、このシナリオでイメージを更新する方法について説明します。環境を準備した直後にアップグレードを行う予定の場合には、次の項はスキップできます。
2.5. 現在のオーバークラウドイメージの OpenStack Platform 10.z の更新
アンダークラウドの更新プロセスで、rhosp-director-images および rhosp-director-images-ipa パッケージから新規イメージアーカイブがダウンロードされる可能性があります。このプロセスにより、Red Hat OpenStack Platform 10 内のアンダークラウドでそれらのイメージが更新されます。
前提条件
- アンダークラウドを現行バージョンの最新のマイナーリリースに更新済みであること
手順
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-10.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-10.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 は古いイメージを保持して、それらが更新された時のタイムスタンプを使用して名前を変更します。必要がなくなったイメージは削除してください。
director が更新され、最新のイメージを使用するようになりました。この更新の後にはサービスを再起動する必要はありません。
アンダークラウドでは、更新された OpenStack Platform 10 のパッケージが使用されるようになりました。次にオーバークラウドを最新のマイナーリリースに更新します。
2.6. 現在のオーバークラウドパッケージの OpenStack Platform 10.z の更新
director では、全オーバークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、OpenStack Platform 環境の現在のバージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 10 内でのマイナー更新です。
このステップにより、オーバークラウドノードのオペレーティングシステムも Red Hat Enterprise Linux 7 の最新バージョンに更新され、Open vSwtich はバージョン 2.9 となります。
前提条件
- アンダークラウドを現行バージョンの最新のマイナーリリースに更新済みであること
- オーバークラウドのバックアップを実行済みであること
手順
元の
openstack overcloud deployコマンドに--update-plan-onlyオプションを追加して、現在のプランを更新します。以下に例を示します。$ openstack overcloud deploy --update-plan-only \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/storage-environment.yaml \ -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \ [-e <environment_file>|...]
--update-plan-onlyのオプションを指定すると、director に保管されているオーバークラウドのプランのみが更新されます。-eオプションを使用して、オーバークラウドと関連のある環境ファイルとその更新パスを追加します。後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。以下の一覧は、環境ファイルの順序の例です-
Heat テンプレートコレクションの初期化ファイル (
environments/network-isolation.yaml) を含むネットワーク分離ファイルと、次にカスタムの NIC 設定ファイル - 外部のロードバランシングの環境ファイル
- ストレージの環境ファイル
- Red Hat CDN または Satellite 登録用の環境ファイル
- その他のカスタム環境ファイル
-
Heat テンプレートコレクションの初期化ファイル (
openstack overcloud updateコマンドを使用して、全ノードでパッケージの更新を実行します。以下に例を示します。$ openstack overcloud update stack -i overcloud
-iのオプションを指定すると、各ノードは対話モードで更新されます。更新プロセスによりノードの更新が完了すると、スクリプトにより、確認のためのブレークポイントが提供されます。-iオプションを使用しなかった場合には、最初のブレークポイントで更新が一時停止されたままとなるため、-iオプションの指定は必須です。注記全ノードで並行して更新を実行すると問題が発生する可能性があります。たとえば、パッケージの更新には、サービスの再起動が必要となる場合があり、その操作によって他のノードが中断される可能性があります。そのため、このプロセスでは、一連のブレークポイントを設けて、ノードごとに更新します。1 つのノードでパッケージの更新が完了すると、更新プロセスは次のノードに移ります。
更新のプロセスが開始します。このプロセス中に、director は
IN_PROGRESSのステータスを報告して、ブレークポイントを通過するように定期的に要求します。以下に例を示します。not_started: [u'overcloud-controller-0', u'overcloud-controller-1', u'overcloud-controller-2'] on_breakpoint: [u'overcloud-compute-0'] Breakpoint reached, continue? Regexp or Enter=proceed, no=cancel update, C-c=quit interactive mode:
Enter を押すと、
on_breakpoint一覧の最後のノードからブレークポイントを通過します。これで、そのノードの更新が開始します。また、ノード名を入力して特定のノードでブレークポイントを通過したり、複数のノードで一度にブレークポイントを通過するための Python ベースの正規表現を入力することも可能です。ただし、複数のコントローラーノードで同時にブレークポイントを通過することはお勧めしません。全ノードが更新を完了するまで、このプロセスを継続します。更新が完了すると、コマンドにより
COMPLETEのステータスが報告されます。... IN_PROGRESS IN_PROGRESS IN_PROGRESS COMPLETE update finished with status COMPLETE
コントローラーノードにフェンシングを設定している場合には、更新プロセスによってその設定が無効になる場合があります。更新プロセスの完了時には、コントローラーノードの 1 つで以下のコマンドを実行してフェンシングを再度有効にします。
$ sudo pcs property set stonith-enabled=true
更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。カーネルおよびその他のシステムッケージを更新した場合には、再起動が必要です。各ノードの /var/log/yum.log ファイルをチェックして、kernel または openvswitch のパッケージのメジャー/マイナーバージョンが更新されているかどうかを確認します。更新されている場合には、以下の手順に従って各ノードを再起動します。
2.7. コントローラーノードおよびコンポーザブルノードの再起動
以下の手順では、コントローラーノードと、コンポーザブルロールをベースとするスタンドアロンのノードを再起動します。これには、コンピュートノードと 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.8. 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.9. コンピュートノードの再起動
以下の手順では、コンピュートノードを再起動します。OpenStack Platform 環境内のインスタンスのダウンタイムを最小限に抑えるために、この手順には、選択したコンピュートノードからインスタンスを移行するステップも含まれています。これは、以下のワークフローを伴います。
- 再起動するコンピュートノードを選択して無効にし、新規インスタンスをプロビジョニングしないようにします。
- インスタンスを別のコンピュートノードに移行します。
- 空のコンピュートノードを再起動して有効化します。
手順
-
アンダークラウドに
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.10. システムパッケージの確認
アップグレードを行う前に、全ノードが以下のパッケージの最新バージョンを使用している必要があります。
| パッケージ | バージョン |
|---|---|
|
|
最小 2.9 |
|
|
最小 2.10 |
|
|
最小 2.10 |
|
|
最小 2.10 |
|
|
最小 2.10 |
各ノードで以下の手順を実行して、パッケージのバージョンを確認します。
手順
- ノードにログインします。
yumを実行して、システムパッケージを確認します。$ sudo yum list qemu-img-rhev qemu-kvm-common-rhev qemu-kvm-rhev qemu-kvm-tools-rhev openvswitch
ovs-vsctlを実行して、現在実行中のバージョンを確認します。$ sudo ovs-vsctl --version
アンダークラウドは、更新された OpenStack Platform 10 パッケージを使用するようになりました。次の 2 つの手順で、システムが稼動状態かどうかを確認します。
2.11. OpenStack Platform 10 アンダークラウドの検証
Red Hat OpenStack Platform 10 のアンダークラウドをアップグレードする前に機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
エラーが発生している Systemd サービスがあるかどうかを確認します。
$ sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker'
アンダークラウドの空き領域を確認します。
$ df -h
アンダークラウド上に NTP をインストールしている場合にはクロックが同期されていることを確認します。
$ sudo ntpstat
アンダークラウドのネットワークサービスを確認します。
$ openstack network agent list
全エージェントが
Aliveで、それらの状態がUPである必要があります。アンダークラウドの Compute サービスを確認します。
$ openstack compute service list
全エージェントのステータスが
enabledで、状態がupである必要があります。
関連情報
- OpenStack Orchestration (heat) のデータベースで削除済みとマークされている stack のエントリーを完全削除する方法は https://access.redhat.com/solutions/2215131 のソリューションに記載されています。
2.12. OpenStack Platform 10 オーバークラウドの検証
Red Hat OpenStack Platform 10 のオーバークラウドをアップグレードする前に機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
ベアメタルノードのステータスを確認します。
$ openstack baremetal node list
全ノードの電源状態が有効で (
on)、かつメンテナンスモードがfalseである必要があります。エラーが発生している Systemd サービスがあるかどうかを確認します。
$ 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
全サービスへの HAProxy 接続をチェックします。コントロールプレーンの仮想 IP アドレスと
haproxy.statsサービスの認証情報を取得します。$ 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 /etc/haproxy/haproxy.cfg'
以下の cURL 要求でそれらの情報を使用します。
$ 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 サービスとそれらの接続ステータスが表示されます。オーバークラウドデータベースのレプリケーションの正常性をチェックします。
$ for NODE in $(openstack server list --name controller -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo clustercheck" ; done
RabbitMQ クラスターの正常性を確認します。
$ for NODE in $(openstack server list --name controller -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo rabbitmqctl node_health_check" ; done
Pacemaker リソースの正常性を確認します。
$ 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のアクションがないこと
-
全クラスターノードが
各オーバークラウドノードでディスク領域を確認します。
$ 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ツールが実行されて、クラスターをチェックします。$ 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ツールが実行され、空き領域をチェックします。$ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo ceph df"
オーバークラウドノードでクロックが同期されていることを確認します。
$ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo ntpstat" ; done
オーバークラウドのアクセス情報を読み込みます。
$ source ~/overcloudrc
オーバークラウドのネットワークサービスを確認します。
$ openstack network agent list
全エージェントが
Aliveで、それらの状態がUPである必要があります。オーバークラウドの Compute サービスを確認します。
$ openstack compute service list
全エージェントのステータスが
enabledで、状態がupである必要があります。オーバークラウドのボリュームサービスを確認します。
$ 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 の推奨値に合わせて調整する方法が記載されています。
- 「Database Size Management for Red Hat Enterprise Linux OpenStack Platform」の記事を参照して、オーバークラウド上の OpenStack サービスの未使用のデータベースレコードをチェックしてクリーニングします。
2.13. NFV 対応環境の更新の最終処理
環境でネットワーク機能仮想化 (NFV) が有効化されている場合には、アンダークラウドとオーバークラウドを更新した後に以下のステップを実行する必要があります。
手順
既存の OVS-DPDK インスタンスを移行して、OVS ポートで vhost ソケットモードがdkdpvhostuser から dkdpvhostuserclient に変わることを確認します。既存のインスタンスのスナップショットを作成して、そのスナップショットイメージをベースに再ビルドすることを推奨します。インスタンスのスナップショットに関する詳しい説明は、「Manage Instance Snapshots」を参照してください。
インスタンスのスナップショットを作成して、そのスナップショットから新規インスタンスを起動するには、以下の手順を実行します。
スナップショットを作成するインスタンスのサーバー ID を確認します。
# openstack server list
スナップショットを作成する前に、元のインスタンスをシャットダウンして、全データがディスクにフラッシュされるようにしてください。
# openstack server stop SERVER_IDインスタンスのスナップショットイメージを作成します。
# openstack image create --id SERVER_ID SNAPSHOT_NAME
このスナップショットイメージで新規インスタンスを起動します。
# openstack server create --flavor DPDK_FLAVOR --nic net-id=DPDK_NET_ID--image SNAPSHOT_NAME INSTANCE_NAME
オプションとして、新規インスタンスのステータスが
ACTIVEであることを確認します。# openstack server list
スナップショットを作成する必要のある全インスタンスでこの手順を繰り返してから、再起動します。
2.14. 次のステップ
準備段階が完了したので、次に「3章アンダークラウドのアップグレード」に記載の手順でアンダークラウドを 10 から 13 にアップグレードします。
第3章 アンダークラウドのアップグレード
以下の手順では、アンダークラウドを Red Hat OpenStack Platform 13 にアップグレードします。これは、OpenStack Platform 10 から OpenStack Platform 13 までのバージョンを 1 つずつ順番にアップグレードしていくことによって実行します。
3.1. アンダークラウドを OpenStack Platform 11 にアップグレードする手順
この手順では、アンダークラウドのツールセットと Heat のコアテンプレートを OpenStack Platform 11 リリースにアップグレードします。
手順
-
director に
stackユーザーとしてログインします。 現在設定されている OpenStack Platform リポジトリーを無効にします。
$ sudo subscription-manager repos --disable=rhel-7-server-openstack-10-rpms
新しい OpenStack Platform リポジトリーを有効にします。
$ sudo subscription-manager repos --enable=rhel-7-server-openstack-11-rpms
主要な OpenStack Platform サービスを停止します。
$ sudo systemctl stop 'openstack-*' 'neutron-*' httpd
注記これにより、アンダークラウドで短時間のダウンタイムが生じます。アンダークラウドのアップグレード中もオーバークラウドは引き続き機能します。
デフォルトのプロビジョニング/コントロールプレーンネットワークが
192.0.2.0/24から192.168.24.0/24に変わりました。以前のundercloud.confファイルで、デフォルトのネットワーク値を使用していた場合には、プロビジョニング/コントロールプレーンネットワークは192.0.2.0/24に設定されます。これは、undercloud.confファイルの特定のパラメーターを設定して、192.0.2.0/24ネットワークを引き続き使用する必要のあることを意味します。それらのパラメーターは以下のとおりです。-
local_ip -
network_gateway -
undercloud_public_vip -
undercloud_admin_vip -
network_cidr -
masquerade_network -
dhcp_start -
dhcp_end
ネットワークの値を
undercloud.confに設定して、今後アップグレードを実行する間に192.0.2.0/24CIDR を引き続き使用するようにします。openstack undercloud upgradeコマンドを実行する前に、ネットワークの構成が正しく設定されていることを確認してください。-
yumコマンドを実行して、director の主要なパッケージをアップグレードします。$ sudo yum update -y instack-undercloud openstack-puppet-modules openstack-tripleo-common python-tripleoclient
以下のコマンドを実行してアンダークラウドをアップグレードします。
$ openstack undercloud upgrade
- アンダークラウドのアップグレードプロセスが完了するまで待ちます。
アンダークラウドを OpenStack Platform 11 リリースにアップグレードする手順が完了しました。
3.2. アンダークラウドを OpenStack Platform 12 にアップグレードする手順
この手順では、アンダークラウドのツールセットと Heat のコアテンプレートを OpenStack Platform 12 リリースにアップグレードします。
手順
-
director に
stackユーザーとしてログインします。 現在設定されている OpenStack Platform リポジトリーを無効にします。
$ sudo subscription-manager repos --disable=rhel-7-server-openstack-11-rpms
新しい OpenStack Platform リポジトリーを有効にします。
$ sudo subscription-manager repos --enable=rhel-7-server-openstack-12-rpms
オーバークラウドが Ceph Storage とともに構成されている場合には、
ceph-ansibleパッケージをインストールします。$ sudo yum install -y ceph-ansible
yumコマンドを実行して、director の主要なパッケージをアップグレードします。$ sudo yum update -y python-tripleoclient
-
/home/stack/undercloud.confファイルを編集して、enabled_driversパラメーターにpxe_sshドライバーが含まれていないことを確認します。Virtual Baseboard Management Controller (VBMC) が推奨されるようになったため、このドライバーは非推奨となり、Red Hat OpenStack Platform から削除されました。この新しいドライバーと移行の手順については、『director のインストールと使用方法』ガイドの「Virtual Baseboard Management Controller (VBMC)」の項を参照してください。 以下のコマンドを実行してアンダークラウドをアップグレードします。
$ openstack undercloud upgrade
- アンダークラウドのアップグレードプロセスが完了するまで待ちます。
アンダークラウドを OpenStack Platform 12 リリースにアップグレードする手順が完了しました。
3.3. アンダークラウドを 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.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 Data Processing (sahara) をデプロイする場合には、/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_images_namesファイルを、Satellite 6 のhammerツールが含まれるシステムにコピーします。あるいは、『Hammer CLI ガイド』に記載の手順に従って、hammerツールをアンダークラウドにインストールします。 以下の
hammerコマンドを実行して、実際の Satellite 組織に新規製品 (OSP13 Containers) を作成します。$ 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 サービス
オーバークラウドのアップグレードによる影響を受けない項目
- アップグレード中に実行するインスタンス
- Ceph Storage OSD (インスタンス向けのバックエンドストレージ)
- Linux ネットワーク
- Open vSwitch ネットワーク
- アンダークラウド
5.2. アップグレードテスト用のコンピュートノードの選択
オーバークラウドのアップグレードプロセスでは、次のいずれかを行うことができます。
- 1 つのロールのノードをすべてアップグレードする
- 個別のノードを別々にアップグレードする
オーバークラウドのアップグレードプロセスを円滑にするには、全コンピュートノードをアップグレードする前に環境内にある個々のコンピュートノードのいくつかでアップグレードをテストすると役立ちます。これにより、アップグレード中に大きな問題が発生しなくなり、ワークロードのダウンタイムを最小限に抑えることができます。
アップグレードをテストするノードを選択するにあたっては、以下の推奨事項を参考にしてください。
- アップグレードのテストには、2 台または 3 台のコンピュートノードを選択します。
- クリティカルなインスタンスが実行されていないノードを選択します。
- 必要な場合には、選択したテスト用のコンピュートノードから他のコンピュートノードにクリティカルなインスタンスを移行します。
「6章オーバークラウドのアップグレード」の手順では、全コンピュートノードでアップグレードを実行する前のアップグレードのテスト用のコンピュートノードの例として、compute-0 を使用しています。
次のステップでは、roles_data ファイルを更新して、新しいコンポーザブルサービスが環境内の適切なロールに追加されるようにします。既存の roles_data ファイルを手動で編集するには、以下に記載する OpenStack Platform 13 のロール向けの新規コンポーザブルサービスの一覧を使用してください。
5.3. 新規コンポーザブルサービス
Red Hat OpenStack Platform の今回のバージョンには、新たなコンポーザブルサービスが含まれています。自分独自のロールにカスタムの roles_data ファイルを使用する場合には、これらの新しい必須サービスを該当するロールに追加してください。
全ロール
以下の新規サービスは全ロールに適用されます。
OS::TripleO::Services::MySQLClient- 他のコンポーザブルサービス用のデータベース設定を提供する MariaDB クライアントをノード上で設定します。このサービスは、スタンドアロンのコンポーザブルサービスを使用する全ロールに追加してください。
OS::TripleO::Services::CertmongerUser- オーバークラウドが Certmonger からの証明書を必要とするようにすることができます。TLS/SSL 通信を有効にしている場合にのみ使用されます。
OS::TripleO::Services::Docker-
コンテナー化されたサービスを管理するために
dockerをインストールします。 OS::TripleO::Services::ContainersLogrotateCrond-
コンテナーログ用の
logrotateサービスをインストールします。 OS::TripleO::Services::Securetty-
ノード上で
securettyの設定ができるようにします。environments/securetty.yaml環境ファイルで有効化します。 OS::TripleO::Services::Tuned-
Linux のチューニングデーモン (
tuned) を有効化して設定します。 OS::TripleO::Services::AuditD-
auditdデーモンを追加して、ルールを設定します。デフォルトでは無効になっています。 OS::TripleO::Services::Collectd-
collectdデーモンを追加します。デフォルトでは無効になっています。 OS::TripleO::Services::Rhsm- Ansible ベースの方法を使用してサブスクリプションを設定します。デフォルトでは無効になっています。
OS::TripleO::Services::RsyslogSidecar- ロギング用のサイドカーコンテナーを設定します。デフォルトでは無効になっています。
特定のロール
以下の新規サービスは特定のロールに適用されます。
OS::TripleO::Services::NovaPlacement- OpenStack Compute (nova) Placement API を設定します。現在のオーバークラウドでスタンドアロンの Nova API ロールを使用している場合には、そのロールにこのサービスを追加します。そうでない場合には、このサービスを Controller ロールに追加してください。
OS::TripleO::Services::PankoApi- OpenStack Telemetry Event Storage (panko) サービスを設定します。現在のオーバークラウドでスタンドアロンの Telemetry ロールを使用している場合には、このサービスをそのロールに追加します。そうでない場合には、このサービスを Controller ロールに追加してください。
OS::TripleO::Services::Clustercheck-
OS::TripleO::Services::MySQLservice, such as the Controller またはスタンドアロンの Database ロールなど、OS::TripleO::Services::MySQLサービスも使用するロールに必要です。 OS::TripleO::Services::Iscsid-
Controller ロール、Compute ロール、BlockStorage ロールで
iscsidサービスを設定します。 OS::TripleO::Services::NovaMigrationTarget- コンピュート ノード上でマイグレーションターゲットサービスを設定します。
OS::TripleO::Services::Ec2Api- コントローラー ノードで OpenStack Compute (nova) EC2-API サービスを有効化します。デフォルトでは無効になっています。
OS::TripleO::Services::CephMgr-
コントローラー ノードで Ceph Manager サービスを有効にします。
ceph-ansible設定の一部として有効化されます。 OS::TripleO::Services::CephMds- コントローラー ノードで Ceph Metadata Service (MDS) を有効化します。デフォルトでは無効になっています。
OS::TripleO::Services::CephRbdMirror- RADOS Block Device (RBD) ミラーリングサービスを有効化します。デフォルトでは無効になっています。
上記に加えて、特定のカスタムロール向けのサービスの最新のリストは、『Advanced Overcloud Customization』ガイドの「Service Architecture: Standalone Roles」の項を参照してください。
新規コンポーザブルサービスに加えて、OpenStack Platform 13 で非推奨になったサービスについても注意してください。
5.4. 非推奨のコンポーザブルサービス
カスタムの roles_data ファイルを使用する場合には、該当するロールから以下のサービスを削除してください。
OS::TripleO::Services::Core- このサービスは、他の Pacemaker サービスのコアの依存関係として機能していましたが、高可用性のコンポーザブルサービスに対応するために削除されました。
OS::TripleO::Services::VipHosts- このサービスは、ノードのホスト名と IP アドレスで /etc/hosts ファイルを設定していましたが、director の Heat テンプレートに直接統合されました。
OS::TripleO::Services::FluentdClient-
このサービスは、
OS::TripleO::Services::Fluentdサービスに置き換えられました。 OS::TripleO::Services::ManilaBackendGeneric- Manila の汎用バックエンドはサポートされなくなりました。
カスタムの roles_data ファイルを使用する場合には、各ロールから以下のサービスを削除してください。
上記に加えて、特定のカスタムロール向けのサービスの最新のリストは、『Advanced Overcloud Customization』ガイドの「Service Architecture: Standalone Roles」の項を参照してください。
5.5. 非推奨パラメーター
以下のパラメーターは非推奨となり、ロール固有のパラメーターに置き換えられた点に注意してください。
| 旧パラメーター | 新規パラメーター |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
カスタムの環境ファイルでこれらのパラメーターを更新します。
OpenStack Platform 環境で非推奨となったこれらのパラメーターがまだ必要な場合には、デフォルトの 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.6. 非推奨の 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 パラメーターに変換して、環境ファイルに追加することを推奨します。
本ガイドの後半には、 これらの新しいパラメーターを含む deprecated_cli_options.yaml 環境ファイルの例を記載しています。
5.7. コンポーザブルネットワーク
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.8. Ceph Storage ノードのアップグレードの準備
コンテナー化されたサービスにアップグレードされたため、Ceph Storage ノードのインストールと更新の方法が変わりました。Ceph Storage の設定では、ceph-ansible パッケージ内の Playbook のセットを使用するようになりました。このパッケージはアンダークラウドにインストールします。
前提条件
- オーバークラウドに、director で管理されている Ceph Storage クラスターがあること
手順
ceph-ansibleパッケージをアンダークラウドにインストールします。[stack@director ~]$ sudo yum install -y ceph-ansible
ストレージの環境ファイルで、最新のリソースと設定を使用するようにします。これは、以下のように変更する必要があります。
resource_registryは、puppet/servicesサブディレクトリーの代わりに、コア Heat テンプレートコレクションのdocker/servicesサブディレクトリーからコンテナー化されたサービスを使用します。以下に例を示します。resource_registry: OS::TripleO::Services::CephMon: /usr/share/openstack-tripleo-heat-templates/puppet/services/ceph-mon.yaml OS::TripleO::Services::CephOSD: /usr/share/openstack-tripleo-heat-templates/puppet/services/ceph-osd.yaml OS::TripleO::Services::CephClient: /usr/share/openstack-tripleo-heat-templates/puppet/services/ceph-client.yaml
上記の行を、以下のように置き換えます。
resource_registry: OS::TripleO::Services::CephMon: /usr/share/openstack-tripleo-heat-templates/docker/services/ceph-ansible/ceph-mon.yaml OS::TripleO::Services::CephOSD: /usr/share/openstack-tripleo-heat-templates/docker/services/ceph-ansible/ceph-osd.yaml OS::TripleO::Services::CephClient: /usr/share/openstack-tripleo-heat-templates/docker/services/ceph-ansible/ceph-client.yaml
重要この設定は、
/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yamlの環境ファイルに記載されています。このファイルは、-eでデプロイメントのコマンドに追加することができます。新しい
CephAnsibleDisksConfigパラメーターを使用して、ディスクのマッピングの方法を定義します。以前のバージョンの Red Hat OpenStack Platform では、ceph::profile::params::osdshieradata を使用して OSD レイアウトを定義していました。この hieradata をCephAnsibleDisksConfigパラメーターの構成に変換します。たとえば、hieradata に以下の内容が記載されているとします。parameter_defaults: ExtraConfig: ceph::profile::params::osd_journal_size: 512 ceph::profile::params::osds: '/dev/sdb': {} '/dev/sdc': {} '/dev/sdd': {}この場合には、
CephAnsibleDisksConfigは以下のようになります。parameter_defaults: ExtraConfig: {} CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd journal_size: 512 osd_scenario: collocatedceph-ansibleに使用する OSD ディスクレイアウトオプションの完全な一覧は、/usr/share/ceph-ansible/group_vars/osds.yml.sampleのサンプルファイルを参照してください。
-
今後は、デプロイメントのコマンドで
-eオプションを使用して新しい Ceph の設定環境ファイルを指定するようにしてください。
5.9. ストレージバックエンドの準備
一部のストレージバックエンドは、設定フックではなく、独自のコンポーザブルサービスを使用するように変更されました。カスタムストレージバックエンドを使用する場合には、environments ディレクトリーで関連する環境ファイルに新規パラメーターとリソースが含まれているかどうかを確認してください。バックエンド用のカスタム環境ファイルを更新します。以下に例を示します。
-
NetApp Block Storage (cinder) バックエンドの場合は、デプロイメント内の新しい
environments/cinder-netapp-config.yamlを使用してください。 -
Dell EMC Block Storage (cinder) バックエンドの場合は、デプロイメント内の新しい
environments/cinder-dellsc-config.yamlを使用してください。 -
Dell EqualLogic Block Storage (cinder) バックエンドの場合は、デプロイメント内の新しい
environments/cinder-dellps-config.yamlを使用してください。
NetApp Block Storage (cinder) バックエンドは、それぞれのバージョンに以下のリソースを使用していました。
-
OpenStack Platform 10 以前:
OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml -
OpenStack Platform 11 以降:
OS::TripleO::Services::CinderBackendNetApp: ../puppet/services/cinder-backend-netapp.yaml
今回の変更の結果、このバックエンドには新しい OS::TripleO::Services::CinderBackendNetApp リソースと、関連付けられたサービステンプレートを使用するようになりました。
5.10. SSL/TLS を介してアンダークラウドのパブリック API にアクセスするための準備
オーバークラウドは、アップグレード中にアンダークラウドの OpenStack Object Storage (swift) のパブリック API にアクセスする必要があります。アンダークラウドで自己署名証明書を使用している場合には、アンダークラウドの認証局を各オーバークラウドノードに追加する必要があります。
前提条件
- アンダークラウドで、パブリック API に SSL/TLS を使用していること
手順
director の動的な Ansible スクリプトが OpenStack Platform 12 バージョンに更新され、オーバークラウドプラン内の
RoleNetHostnameMapHeat パラメーターを使用してインベントリーを定義するようになりました。ただし、オーバークラウドは現在 OpenStack Platform 11 のテンプレートバージョンを使用しており、これにはRoleNetHostnameMapパラメーターがないため、一時的な静的インベントリーファイルを作成する必要があります。このファイルは、以下のコマンドを実行すると生成することができます。$ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
以下の内容を記述した Ansible Playbook (
undercloud-ca.yml) を作成します。--- - name: Add undercloud CA to overcloud nodes hosts: all user: heat-admin become: true vars: ca_certificate: /etc/pki/ca-trust/source/anchors/cm-local-ca.pem tasks: - name: Copy undercloud CA copy: src: "{{ ca_certificate }}" dest: /etc/pki/ca-trust/source/anchors/ - name: Update trust command: "update-ca-trust extract" - name: Get the swift endpoint shell: | sudo hiera swift::keystone::auth::public_url | awk -F/ '{print $3}' register: swift_endpoint delegate_to: 127.0.0.1 become: yes become_user: stack - name: Verify URL uri: url: https://{{ swift_endpoint.stdout }}/healthcheck return_content: yes register: verify - name: Report output debug: msg: "{{ ansible_hostname }} can access the undercloud's Public API" when: verify.content == "OK"この Playbook には複数のタスクが含まれており、各ノードで以下の操作を実行します。
-
アンダークラウドの認証局ファイルをオーバークラウドノードにコピーします。アンダークラウドによって生成された場合には、デフォルトの場所は
/etc/pki/ca-trust/source/anchors/cm-local-ca.pemです。 - オーバークラウドノードで、CA トラストデータベースを更新するコマンドを実行します。
- オーバークラウドノードから、アンダークラウドの Object Storage Public API をチェックして、成功したかどうかを報告します。
-
アンダークラウドの認証局ファイルをオーバークラウドノードにコピーします。アンダークラウドによって生成された場合には、デフォルトの場所は
以下のコマンドで Playbook を実行します。
$ ansible-playbook -i overcloud_hosts undercloud-ca.yml
ここでは、一時インベントリーを使用して、Ansible にオーバークラウドノードを指定します。
カスタムの認証局ファイルを使用している場合は、
ca_certificate変数で場所を変更することができます。以下に例を示します。$ ansible-playbook -i overcloud_hosts undercloud-ca.yml -e ca_certificate=/home/stack/ssl/ca.crt.pem
その結果、Ansible の出力には、ノードのデバッグメッセージが表示されます。以下に例を示します。
ok: [192.168.24.100] => { "msg": "overcloud-controller-0 can access the undercloud's Public API" }
関連情報
- オーバークラウドでの Ansible 自動化の実行に関する詳しい情報は、『director のインストールと使用方法』ガイドの「動的インベントリースクリプトの実行」 を参照してください。
5.11. Fast Forward Upgrade の登録の設定
Fast Forward Upgrade プロセスでは、リポジトリーの切り替えに新しい方法を採用しています。このため、デプロイメントのコマンドから以前の rhel-registration 環境ファイルを削除する必要があります。以下に例を示します。
- environment-rhel-registration.yaml
- rhel-registration-resource-registry.yaml
Fast Forward Upgrade のプロセスでは、アップグレードの各段階でスクリプトを使用してリポジトリーを変更します。このスクリプトは、OS::TripleO::Services::TripleoPackages コンポーザブルサービス (puppet/services/tripleo-packages.yaml) の一部として含まれ、FastForwardCustomRepoScriptContent パラメーターを使用します。スクリプトの内容は以下のとおりです。
#!/bin/bash
set -e
case $1 in
ocata)
subscription-manager repos --disable=rhel-7-server-openstack-10-rpms
subscription-manager repos --enable=rhel-7-server-openstack-11-rpms
;;
pike)
subscription-manager repos --disable=rhel-7-server-openstack-11-rpms
subscription-manager repos --enable=rhel-7-server-openstack-12-rpms
;;
queens)
subscription-manager repos --disable=rhel-7-server-openstack-12-rpms
subscription-manager repos --enable=rhel-7-server-openstack-13-rpms
;;
*)
echo "unknown release $1" >&2
exit 1
esacdirector は、スクリプトに対して、OpenStack Platform バージョンのアップストリームのコード名を渡します。
| コード名 | バージョン |
|---|---|
|
|
OpenStack Platform 11 |
|
|
OpenStack Platform 12 |
|
|
OpenStack Platform 13 |
状況によっては、カスタムのスクリプトを使用する必要がある場合があります。以下に例を示します。
- カスタムのリポジトリー名で Red Hat Satellite を使用する場合
- カスタムの名前で接続されていないリポジトリーを使用する場合
- 各段階に追加のコマンドを実行する場合
このような状況では、FastForwardCustomRepoScriptContent パラメーターを設定してカスタムスクリプトを追加します。
parameter_defaults:
FastForwardCustomRepoScriptContent: |
[INSERT UPGRADE SCRIPT HERE]たとえば、以下のスクリプトは Satellite 6 アクティベーションキーのセットを使用して、リポジトリーを変更します。
parameter_defaults:
FastForwardCustomRepoScriptContent: |
set -e
URL="satellite.example.com"
case $1 in
ocata)
subscription-manager register --baseurl=https://$URL --force --activationkey=rhosp11 --org=Default_Organization
;;
pike)
subscription-manager register --baseurl=https://$URL --force --activationkey=rhosp12 --org=Default_Organization
;;
queens)
subscription-manager register --baseurl=https://$URL --force --activationkey=rhosp13 --org=Default_Organization
;;
*)
echo "unknown release $1" >&2
exit 1
esac
本ガイドの後半には、カスタムスクリプトを含む custom_repositories_script.yaml 環境ファイルを記載しています。
5.12. カスタムの 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.13. ネットワークインターフェースのテンプレートを新しい構造に変換する方法
以前は、ネットワークインターフェースの構造は 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.14. 次のステップ
オーバークラウドの準備段階が完了しました。次に「6章オーバークラウドのアップグレード」に記載の手順でオーバークラウドを 10 から 13 にアップグレードします。
第6章 オーバークラウドのアップグレード
本項ではオーバークラウドをアップグレードします。これには、以下のワークフローが含まれます。
- Fast Forward Upgrade の parepare コマンドの実行
- fast forward upgrade コマンドの実行
- コントローラーノードのアップグレード
- コンピュートノードのアップグレード
- Ceph Storage ノードのアップグレード
- Fast Forward Upgrade の最終処理
このワークフローを一旦開始すると、全ステップを完了するまでオーバークラウドの OpenStack サービスは完全には制御できなくなることを認識しておいてください。これは、全ノードが OpenStack Platform 13 に正常にアップグレードされるまで、ワークロードは管理できないことを意味します。ワークロード自体は影響を受けず、稼働を続けます。オーバークラウドのワークロードへの変更または追加は、Fast Forward Upgrade が完了するまで待つ必要があります。
6.1. オーバークラウドの Fast Forward Upgrade の実行
Fast Forward Upgrade には、以下のタスクを実行する 2 つのコマンドが必要です。
- オーバークラウドのプランを OpenStack Platform 13 に更新します。
- Fast Forward Upgrade に備えてノードを準備します。
Fast Forward Upgrade の対象となる各バージョンのアップグレードステップを順番に実行します。以下の作業が含まれます。
- 各 OpenStack Platform サービスのバージョン固有のタスク
- リポジトリーの変更。Fast Forward Upgrade の対象となる OpenStack Platform バージョンを 1 つずつ順番に切り替える
- データベースのアップグレードに必要な特定のパッケージを更新する
- データベースのバージョンを 1 つずつ順番にアップグレードする
- OpenStack Platform 13 への最終アップグレードに向けてオーバークラウドを準備します。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
Fast Forward Upgrade の parepare コマンドを実行します。
$ openstack overcloud ffwd-upgrade prepare \ --templates \ -e /home/stack/templates/overcloud_images.yaml \ -e /home/stack/templates/deprecated_cli_options.yaml \ -e /home/stack/templates/custom_repositories_script.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を使用するのが推奨されるようになっているので、警告は無視して問題ありません。 -
該当する場合は、非推奨になった CLI オプションを Heat パラメーターにマッピングする環境ファイル。
deprecated_cli_options.yamlを使用します。 -
該当する場合は、カスタムリポジトリーのスクリプトを指定する環境ファイル。
custom_repositories_script.yamlを使用します。 - Ceph Storage ノードを使用する場合には、関連する環境ファイル
- お使いの環境に関連する追加の環境ファイル
-
コンテナーイメージの場所が記載された環境ファイル (
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。 -
該当する場合には、
--roles-fileを使用する、カスタムロール (roles_data) のファイル
重要ffwd-upgradeコマンドの実行を確認するプロンプトが表示されます。yesと入力してください。- オーバークラウドプランが OpenStack Platform 13 バージョンに更新されます。Fast Forward Upgrade の準備が完了するまで待ちます。
Fast Forward Upgrade の コマンドを実行します。
$ openstack overcloud ffwd-upgrade run
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
重要ffwd-upgradeコマンドの実行を確認するプロンプトが表示されます。yesと入力してください。-
カスタムのスタック名を使用する場合には、
- Fast Forward Upgrade が完了するまで待ちます。
この段階では、
- ワークロードは引き続き稼働中です。
- オーバークラウドのデータベースは OpenStack Platform 12 にアップグレードされます。
- オーバークラウドのサービスがすべて無効化されます。
- Ceph Storage ノードはまだバージョン 2 です。
これは、オーバークラウドが、OpenStack Platform 13 に達するための標準のアップグレードステップを実行できる状態にあることを意味します。
6.2. 全コントローラーノードのアップグレード
このプロセスでは、全コントローラーノードを OpenStack Platform 13 にアップグレードします。このプロセスは、openstack overcloud upgrade run コマンドに --roles Controller オプションを指定して、操作をコントローラノードのみに制限して実行する必要があります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --roles Controller --skip-tags validation
注記OpenStack Platform サービスはオーバークラウド上では非アクティブな状態で検証できないため、上記のコマンドには
--skip-tags validationを使用しています。-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- コントローラーノードのアップグレードが完了するまで待ちます。
この段階では、
- ワークロードは引き続き稼働中です。
- オーバークラウドのデータベースが OpenStack Platform 13 バージョンにアップグレードされました。
- コントローラーノードが OpenStack Platform 13 にアップグレードされました。
- すべてのコントローラーサービスが有効化されました。
- コンピュートノードは、まだアップグレードする必要があります。
- Ceph Storage ノードは、まだバージョン 2 で、アップグレードする必要があります。
コントローラーサービスは有効化されていますが、コンピュートノードと Ceph Storage サービスが無効になるまではワークロードの操作は実行しないでください。ワークロードを操作すると、 仮想マシンが孤立してしまう可能性があります。環境全体がアップグレードされるまで待ってください。
6.3. テスト用コンピュートノードのアップグレード
このプロセスは、テスト用に選択したコンピュートノードをアップグレードします。このプロセスでは、openstack overcloud upgrade run コマンドに --nodes オプションを指定して、操作をテスト用ノードのみに制限して実行する必要があります。この手順では、コマンドで --nodes compute-0 を例として使用しています。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --nodes compute-0 --skip-tags validation
注記OpenStack Platform サービスはオーバークラウド上では非アクティブな状態で検証できないため、上記のコマンドには
--skip-tags validationを使用しています。-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- テスト用ノードのアップグレードが完了するまで待ちます。
6.4. 全コンピュートノードのアップグレード
このプロセスでは、残りのコンピュートノードを OpenStack Platform 13 にアップグレードします。このプロセスは、openstack overcloud upgrade run コマンドに --roles Compute オプションを指定して、操作をコンピュートノードのみに制限して実行する必要があります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --roles Compute --skip-tags validation
注記OpenStack Platform サービスはオーバークラウド上では非アクティブな状態で検証できないため、上記のコマンドには
--skip-tags validationを使用しています。-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- コンピュートノードのアップグレードが完了するまで待ちます。
この段階では、
- ワークロードは引き続き稼働中です。
- コントローラーノードとコンピュートノードが OpenStack Platform 13 にアップグレードされました。
- Ceph Storage ノードは、まだバージョン 2 で、アップグレードする必要があります。
6.5. 全 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 --skip-tags validation
注記OpenStack Platform サービスはオーバークラウド上では非アクティブな状態で検証できないため、上記のコマンドには
--skip-tags validationを使用しています。-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。
-
カスタムのスタック名を使用する場合には、
- ノードのアップグレードが完了するまで待ちます。
Ceph Storage のアップグレードコマンドを実行します。以下に例を示します。
$ openstack overcloud ceph-upgrade run \ --templates \ -e <ENVIRONMENT FILE> \ -e /home/stack/templates/overcloud_images.yaml \ -e /home/stack/templates/deprecated_cli_options.yaml \ -e /home/stack/templates/custom_repositories_script.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/ceph-customization.yaml \ --ceph-ansible-playbook '/usr/share/ceph-ansible/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml,/usr/share/ceph-ansible/infrastructure-playbooks/rolling_update.yml'以下のオプションの中で、お使いの環境に適切なオプションを追加します。
カスタム設定の環境ファイル (
-eで指定)。以下に例を示します。-
コンテナーイメージの場所が記載された環境ファイル (
overcloud_images.yaml)。アップグレードのコマンドで--container-registry-fileの使用に関する警告が表示される場合があることに注意してください。このオプションは非推奨になり、コンテナーイメージの環境ファイルには-eを使用するのが推奨されるようになっているので、警告は無視して問題ありません。 -
該当する場合は、非推奨になった CLI オプションを Heat パラメーターにマッピングする環境ファイル。
deprecated_cli_options.yamlを使用します。 -
該当する場合は、カスタムリポジトリーのスクリプトを指定する環境ファイル。
custom_repositories_script.yamlを使用します。 - Ceph Storage ノード用の関連する環境ファイル
- お使いの環境に関連する追加の環境ファイル
-
コンテナーイメージの場所が記載された環境ファイル (
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。 -
該当する場合には、
--roles-fileを使用する、カスタムロール (roles_data) のファイル - 以下の Ansible Playbook
-
/usr/share/ceph-ansible/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml -
/usr/share/ceph-ansible/infrastructure-playbooks/rolling_update.yml
- Ceph Storage ノードのアップグレードが完了するまで待ちます。
この段階では、
- 全ノードが OpenStack Platform 13 にアップグレードされ、ワークロードは引き続き稼働しています。
環境はアップグレードされましたが、最後のステップを 1 つ実行して、アップグレードの最終処理を行う必要があります。
6.6. Fast Forward Upgrade の最終処理
Fast Forward Upgrade には、オーバークラウドスタックを更新する最終ステップが必要です。これにより、スタックのリソース構造が OpenStack Platform 13 の標準のデプロイメントと一致し、今後、通常の openstack overcloud deploy の機能を実行できるようになります。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
Fast Forward Upgrade の最終処理のコマンドを実行します。
$ openstack overcloud ffwd-upgrade converge \ --templates \ -e /home/stack/templates/overcloud_images.yaml \ -e /home/stack/templates/deprecated_cli_options.yaml \ -e /home/stack/templates/custom_repositories_script.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/ceph-customization.yaml \ -e <OTHER ENVIRONMENT FILES>以下のオプションの中で、お使いの環境に適切なオプションを追加します。
カスタム設定の環境ファイル (
-eで指定)。以下に例を示します。-
コンテナーイメージの場所が記載された環境ファイル (
overcloud_images.yaml)。アップグレードのコマンドで--container-registry-fileの使用に関する警告が表示される場合があることに注意してください。このオプションは非推奨になり、コンテナーイメージの環境ファイルには-eを使用するのが推奨されるようになっているので、警告は無視して問題ありません。 -
該当する場合は、非推奨になった CLI オプションを Heat パラメーターにマッピングする環境ファイル。
deprecated_cli_options.yamlを使用します。 -
該当する場合は、カスタムリポジトリーのスクリプトを指定する環境ファイル。
custom_repositories_script.yamlを使用します。 - Ceph Storage ノードを使用する場合には、関連する環境ファイル
- お使いの環境に関連する追加の環境ファイル
-
コンテナーイメージの場所が記載された環境ファイル (
-
カスタムのスタック名を使用する場合には、
--stackオプションでその名前を渡します。 -
該当する場合には、
--roles-fileを使用する、カスタムロール (roles_data) のファイル
重要ffwd-upgradeコマンドの実行を確認するプロンプトが表示されます。yesと入力してください。- Fast Forward Upgrade の最終処理が完了するまで待ちます。
6.7. 次のステップ
オーバークラウドのアップグレードが完了しました。これで、 「7章アップグレード後のステップの実行」に記載のステップに従って、アップグレード後のオーバークラウドの設定を行うことができます。今後のデプロイメント操作では、OpenStack Platform 13 環境に関連する全環境ファイルを必ず指定してください。これには、アップグレード中に新規作成または変換した環境ファイルが含まれます。
第7章 アップグレード後のステップの実行
このプロセスでは、主要なアップグレードプロセスが完了した後の最終のステップを実行します。これには、Fast Forward Upgrade プロセスが終了後のイメージの変更、追加の設定ステップ、考慮事項などが含まれます。
7.1. アンダークラウドの検証
アンダークラウドの機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ 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 のソリューションに記載されています。
7.2. コンテナー化されたオーバークラウドの検証
コンテナー化されたオーバークラウドの機能を確認する手順を以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ 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 ソフトウェアを使用してノードのイントロスペクションとプロビジョニングを行うことができるようになります。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
手順
stackユーザーのimagesディレクトリー (/home/stack/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 のイメージのみを使用してください。
7.4. デプロイメントのテスト
オーバークラウドはアップグレードされましたが、今後のデプロイメント操作が正常に実行されるようにするには、テストデプロイメントを実行することを推奨します。
手順
stackrcファイルを読み込みます。$ source ~/stackrc
オーバークラウドに関連する全環境ファイルを指定してデプロイのコマンドを実行します。
$ openstack overcloud deploy \ --templates \ -e <ENVIRONMENT FILE>以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
-eを使用してカスタム設定環境ファイル -
該当する場合には、
--roles-fileを使用する、カスタムロール (roles_data) のファイル
-
- デプロイメントが完了するまで待ちます。
7.5. 結果
これで Fast Forward Upgrade のプロセスが完全に終了しました。
付録A アンダークラウドの復元
以下の復元プロセスは、アンダークラウドノードでエラーが発生して、回復不可能な状態であることを前提としています。この手順では、新規インストール環境でデータベースおよびクリティカルなファイルシステムの復元を行う必要があります。以下が前提条件です。
- Red Hat Enterprise Linux 7 の最新版を再インストール済みであること
- ハードウェアレイアウトが同じであること
- マシンのホスト名とアンダークラウドの設定が同じであること
-
バックアップアーカイブが
rootディレクトリーにコピー済みであること
手順
-
アンダークラウドに
rootユーザーとしてログインします。 stackユーザーを作成します。[root@director ~]# useradd stack
そのユーザーのパスワードを設定します。
[root@director ~]# passwd stack
sudoを使用する場合にパスワードを要求されないようにします。[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
[root@director ~]# sudo subscription-manager register
Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
[root@director ~]# sudo subscription-manager attach --pool=Valid-Pool-Number-123456
デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。
[root@director ~]# sudo subscription-manager repos --disable=* [root@director ~]# sudo subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpms
システムで更新を実行して、ベースシステムパッケージを最新の状態にします。
[root@director ~]# sudo yum update -y [root@director ~]# sudo reboot
アンダークラウドの時刻が同期されていることを確認します。以下に例を示します。
[root@director ~]# sudo yum install -y ntp [root@director ~]# sudo systemctl start ntpd [root@director ~]# sudo systemctl enable ntpd [root@director ~]# sudo ntpdate pool.ntp.org [root@director ~]# sudo systemctl restart ntpd
バックアップ用に一時ディレクトリーを作成します。
[root@director ~]# mkdir /var/tmp/undercloud_backup
ファイルシステムのバックアップアーカイブを一時ディレクトリーに抽出します。
[root@director ~]# sudo tar -xvf /root/undercloud-backup-[timestamp].tar -C /var/tmp/undercloud_backup --xattrs || true
rsyncをインストールします。[root@director ~]# sudo yum -y install rsync
以下のディレクトリーをバックアップのコンテンツと同期します。
[root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/home/stack/ /home/stack [root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/etc/haproxy/ /etc/haproxy/ [root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/etc/pki/instack-certs/ /etc/pki/instack-certs/ [root@director ~]# sudo mkdir -p /etc/puppet/hieradata/ [root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/etc/puppet/hieradata/ /etc/puppet/hieradata/ [root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/srv/node/ /srv/node/ [root@director ~]# sudo rsync -a -X /var/tmp/undercloud_backup/var/lib/glance/ /var/lib/glance/
openstack-keystoneパッケージをインストールして、その設定データを同期します。[root@director ~]# sudo yum -y install openstack-keystone [root@director ~]# sudo rsync -a /var/tmp/undercloud_backup/etc/keystone/ /etc/keystone/
policycoreutils-pythonパッケージをインストールします。[root@director ~]# sudo yum -y install policycoreutils-python
アンダークラウドで SSL を使用している場合には、CA 証明書をリフレッシュします。
[root@director ~]# sudo semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" [root@director ~]# sudo restorecon -R /etc/pki/instack-certs [root@director ~]# sudo update-ca-trust extract
データベースサーバーとクライアントツールをインストールします。
[root@director ~]# sudo yum install -y mariadb mariadb-server python-tripleoclient
データベースを起動します。
[root@director ~]# sudo systemctl start mariadb [root@director ~]# sudo systemctl enable mariadb
データベースのバックアップのサイズに対応するように、許可されるパケット数を増やします。
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
データベースのバックアップを復元します。
[root@director ~]# mysql -u root < /var/tmp/undercloud_backup/root/undercloud-all-databases.sql
Mariadb を再起動して、バックアップファイルからパーミッションをリフレッシュします。
[root@director ~]# sudo systemctl restart mariadb
古いユーザーパーミッションの一覧を取得します。
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'
リストされた各ホストの古いユーザーパーミッションを削除します。以下に例を示します。
[root@director ~]# HOST="192.0.2.1" [root@director ~]# USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) [root@director ~]# for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done [root@director ~]# mysql -e 'flush privileges'
openstack-glanceパッケージをインストールして、そのファイルパーミッションを復元します。[root@director ~]# sudo yum install -y openstack-glance [root@director ~]# sudo chown -R glance: /var/lib/glance/images
openstack-swiftパッケージをインストールして、そのファイルパーミッションを復元します。[root@director ~]# sudo yum install -y openstack-swift [root@director ~]# sudo chown -R swift: /srv/node
新規作成した
stackユーザーに切り替えます。[root@director ~]# su - stack [stack@director ~]$
アンダークラウドのインストールコマンドを実行します。このコマンドは、
stackユーザーのホームディレクトリーから実行するようにしてください。[stack@director ~]$ openstack undercloud install
- インストールが完了するまで待ちます。アンダークラウドは、オーバークラウドへの接続を自動的に復元します。ノードは、保留中のタスクに対して、OpenStack Orchestration (heat) のポーリングを続けます。
付録B オーバークラウドの復元
B.1. オーバークラウドのコントロールプレーンサービスの復元
以下の手順では、オーバークラウドのデータベースと設定を復元します。このような場合には、ターミナルのウィンドウを 3 つ開いて、特定の操作を 3 つのコントローラーノードすべてで同時に実行できるようにすることを推奨します。また、高可用性の操作を実行するコントローラーノードを 1 台選択することもお勧めします。この手順では、このコントローラーノードを ブートストラップコントローラーノード と呼びます。
この手順では、コントロールプレーンサービスのみを復元します。コンピュートノードのワークロードや Ceph Storage ノード上のデータの復元は含まれません。
手順
メジャーバージョンのアップグレードの失敗から復元する場合には、全ノードで実行された
yumトランザクションをすべて元に戻さなければならない場合があります。これには、各ノードで以下の操作が必要です。以前のバージョンのリポジトリーを有効化します。以下に例を示します。
# sudo subscription-manager repos --enable=rhel-7-server-openstack-10-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-11-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-12-rpms
yumの履歴をチェックします。# sudo yum history list all
アップグレードプロセス中に発生したトランザクションを特定します。これらの操作の大半は、コントローラーノードの 1 台で発生しているはずです (アップグレード中にブートストラップノードとして選択されていたコントローラーノード)。特定のトランザクションを確認する必要がある場合は、
history infoサブコマンドで表示してください。# sudo yum history info 25
注記yum history list allで各トランザクションから実行したコマンドを表示するように強制するには、yum.confファイルでhistory_list_view=commandsを設定します。アップグレードから発生した
yumトランザクションをすべて元に戻します。以下に例を示します。# sudo yum history undo 25 # sudo yum history undo 24 # sudo yum history undo 23 ...
最後のトランザクションから開始して、降順に操作を継続するようにしてください。また、
rollbackオプションを使用すると、複数のトランザクションを 1 回の実行で元に戻すこともできます。たとえば、以下のコマンドは最後のトランザクションから 23 までのトランザクションをロールバックします。# sudo yum history rollback 23
重要各トランザクションの取り消しを確認できるようにするには、
rollbackではなくundoを使用することを推奨します。関連する
yumトランザクションが取り消されたら、全ノードで元の OpenStack Platform リポジトリーのみを有効化します。以下に例を示します。# sudo subscription-manager repos --disable=rhel-7-server-openstack-*-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-10-rpms
データベースを復元します。
- ブートストラップコントローラーノードにデータベースのバックアップをコピーします。
全コントローラーノード上でデータベースポートへの接続を停止します。
# MYSQLIP=$(hiera mysql_bind_host) # sudo /sbin/iptables -I INPUT -d $MYSQLIP -p tcp --dport 3306 -j DROP
これにより、ノードへのデータベーストラフィックがすべて分離されます。
ブートストラップコントローラーノードで、Pacemaker による Galera の管理を無効にします。
# pcs resource unmanage galera
コントローラーノード上の
/etc/my.cnf.d/galera.cnfからwsrep_cluster_addressパラメーターをコメントアウトします。# grep wsrep_cluster_address /etc/my.cnf.d/galera.cnf # vi /etc/my.cnf.d/galera.cnf
すべてのコントローラーノード上の MariaDB データベースを停止します。
# mysqladmin -u root shutdown
注記HAProxy から、データベースが無効になったという警告が表示される可能性があります。
既存の MariaDB データディレクトリーを移動し、全コントローラーノード上で新規データディレクトリーを準備します。
# mv /var/lib/mysql/ /var/lib/mysql.old # mkdir /var/lib/mysql # chown mysql:mysql /var/lib/mysql # chmod 0755 /var/lib/mysql # mysql_install_db --datadir=/var/lib/mysql --user=mysql # chown -R mysql:mysql /var/lib/mysql/ # restorecon -R /var/lib/mysql
root の設定とクラスターのチェックを全コントローラーノード上のバックアップファイルに移動します。
# sudo mv /root/.my.cnf /root/.my.cnf.old # sudo mv /etc/sysconfig/clustercheck /etc/sysconfig/clustercheck.old
ブートストラップコントローラーノードで、Pacemaker が Galera クラスターを管理するように設定します。
# pcs resource manage galera # pcs resource cleanup galera
Galera クラスターがきちんと立ち上がるのを待ちます。以下のコマンドを実行して、全ノードがマスターとして設定されているかどうかを確認します。
# watch "pcs status | grep -C3 galera" Master/Slave Set: galera-master [galera] Masters: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ]
クリーンアップの実行後に全コントローラーがマスターとして表示されない場合には、クリーンアップコマンドを再度実行してください。
# pcs resource cleanup galera
ブートストラップコントローラーノードで、OpenStack データベースを復元します。これは、Galera によって他のコントローラーノードに複製されます。
# mysql -u root < openstack_database.sql
ブートストラップコントローラーノードで、ユーザーとパーミッションを復元します。
# mysql -u root < grants.sql
ブートストラップコントローラーノードで、データベースのパスワードを元のパスワードに再設定します。
# /usr/bin/mysqladmin -u root password "$(hiera mysql::server::root_password)"
ブートストラップコントローラーノードで、
pcs statusを実行して Galera リソースを表示します。# pcs status | grep -C3 galera
このコマンドでエラーが表示される場合があります。これは、データベースが間違ったユーザー名とパスワードを使用して接続し、データベースのステータスをポーリングするようになったことが理由です。全コントローラーノードで、データベースの設定を復元します。
# sudo mv /root/.my.cnf.old /root/.my.cnf # sudo mv /etc/sysconfig/clustercheck.old /etc/sysconfig/clustercheck
各コントローラーノードのクラスターチェックをローカルでテストします。
# /bin/clustercheck
ブートストラップコントローラーノードで、Pacemaker のクリーンアップを実行して、Galera の状態を再度プロービングするようにします。
# pcs resource cleanup galera
各コントローラーノードでクラスターのチェックをテストします。
# curl overcloud-controller-0:9200 # curl overcloud-controller-1:9200 # curl overcloud-controller-2:9200
各ノードからファイアウォールルールを削除して、サービスがデータベースへのアクセスを復元するようにします。
# sudo /sbin/iptables -D INPUT -d $MYSQLIP -p tcp --dport 3306 -j DROP
コントローラーノード上の
/etc/my.cnf.d/galera.cnfからwsrep_cluster_addressパラメーターをコメント解除します。# vi /etc/my.cnf.d/galera.cnf
ファイルシステムを復元します。
各コントローラーノードのバックアップ
tarファイルを一時ディレクトリーにコピーして、圧縮された全データを展開します。# mkdir /var/tmp/filesystem_backup/data/ # cd /var/tmp/filesystem_backup/data/ # mv <backup_file>.tar.gz . # tar -xvzf --xattrs <backup_file>.tar.gz
注記/ディレクトリーには直接展開しないようにしてください。直接展開すると、現在のファイルシステムが上書きされてしまいます。一時ディレクトリーで抽出することを推奨します。/usr/libexec/os-apply-config/templates/etc/os-net-config/config.jsonファイルを復元します。$ cp /var/tmp/filesystem_backup/data/usr/libexec/os-apply-config/templates/etc/os-net-config/config.json /usr/libexec/os-apply-config/templates/etc/os-net-config/config.json
- 設定ファイルが必要な場合には、このディレクトリーを保持します。
redis リソースをクリーンアップします。
# pcs resource cleanup redis
オーバークラウドのコントロールプレーンのデータを復元した後には、関連する各サービスが有効化されて正しく実行されていることを確認します。
コントローラーノード上の高可用性サービスの場合:
# pcs resource enable [SERVICE] # pcs resource cleanup [SERVICE]
コントローラーおよびコンピュートノード上のシステムサービスの場合:
# systemctl start [SERVICE] # systemctl enable [SERVICE]
以下の項には、有効にすべきサービスについての参考情報を記載します。
B.2. 復元した高可用性サービス
復元の後に OpensTack Platform 10 のコントローラーノードでアクティブにする必要のある高可用性サービスの一覧は以下のとおりです。これらのサービスのいずれかが無効化されている場合には、以下のコマンドで有効化します。
# pcs resource enable [SERVICE] # pcs resource cleanup [SERVICE]
| コントローラーサービス |
|---|
|
galera |
|
haproxy |
|
openstack-cinder-volume |
|
rabbitmq |
|
redis |
B.3. コントローラーサービスの復元
復元の後に OpensTack Platform 10 のコントローラーノードでアクティブにする必要のある Systemd のコアサービスの一覧は以下のとおりです。これらのサービスのいずれかが無効化されている場合には、以下のコマンドで有効化します。
# systemctl start [SERVICE] # systemctl enable [SERVICE]
| コントローラーサービス |
|---|
|
httpd |
|
memcached |
|
neutron-dhcp-agent |
|
neutron-l3-agent |
|
neutron-metadata-agent |
|
neutron-openvswitch-agent |
|
neutron-ovs-cleanup |
|
neutron-server |
|
ntpd |
|
openstack-aodh-evaluator |
|
openstack-aodh-listener |
|
openstack-aodh-notifier |
|
openstack-ceilometer-central |
|
openstack-ceilometer-collector |
|
openstack-ceilometer-notification |
|
openstack-cinder-api |
|
openstack-cinder-scheduler |
|
openstack-glance-api |
|
openstack-glance-registry |
|
openstack-gnocchi-metricd |
|
openstack-gnocchi-statsd |
|
openstack-heat-api-cfn |
|
openstack-heat-api-cloudwatch |
|
openstack-heat-api |
|
openstack-heat-engine |
|
openstack-nova-api |
|
openstack-nova-conductor |
|
openstack-nova-consoleauth |
|
openstack-nova-novncproxy |
|
openstack-nova-scheduler |
|
openstack-swift-account-auditor |
|
openstack-swift-account-reaper |
|
openstack-swift-account-replicator |
|
openstack-swift-account |
|
openstack-swift-container-auditor |
|
openstack-swift-container-replicator |
|
openstack-swift-container-updater |
|
openstack-swift-container |
|
openstack-swift-object-auditor |
|
openstack-swift-object-expirer |
|
openstack-swift-object-replicator |
|
openstack-swift-object-updater |
|
openstack-swift-object |
|
openstack-swift-proxy |
|
openvswitch |
|
os-collect-config |
|
ovs-delete-transient-ports |
|
ovs-vswitchd |
|
ovsdb-server |
|
pacemaker |
B.4. オーバークラウドの Compute サービスの復元
復元の後に OpensTack Platform 10 のコンピュートノードでアクティブにする必要のある Systemd のコアサービスは以下のとおりです。これらのサービスのいずれかが無効化されている場合には、以下のコマンドで有効化します。
# systemctl start [SERVICE] # systemctl enable [SERVICE]
| Compute サービス |
|---|
|
neutron-openvswitch-agent |
|
neutron-ovs-cleanup |
|
ntpd |
|
openstack-ceilometer-compute |
|
openstack-nova-compute |
|
openvswitch |
|
os-collect-config |
付録C NFV の更新用の YAML ファイルのサンプル
これらの YAML ファイルのサンプルは、OVS-DPDK デプロイメント向けの OVS を更新します。
C.1. Red Hat OpenStack Platform 10 OVS 2.9 の更新ファイル
C.1.1. post-install.yaml
heat_template_version: 2014-10-16
description: >
Example extra config for post-deployment
parameters:
servers:
type: json
resources:
ExtraDeployments:
type: OS::Heat::StructuredDeployments
properties:
servers: {get_param: servers}
config: {get_resource: ExtraConfig}
actions: ['CREATE','UPDATE']
ExtraConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config: |
#!/bin/bash
set -x
function tuned_service_dependency() {
tuned_service=/usr/lib/systemd/system/tuned.service
grep -q "network.target" $tuned_service
if [ "$?" -eq 0 ]; then
sed -i '/After=.*/s/network.target//g' $tuned_service
fi
grep -q "Before=.*network.target" $tuned_service
if [ ! "$?" -eq 0 ]; then
grep -q "Before=.*" $tuned_service
if [ "$?" -eq 0 ]; then
sed -i 's/^\(Before=.*\)/\1 network.target openvswitch.service/g' $tuned_service
else
sed -i '/After/i Before=network.target openvswitch.service' $tuned_service
fi
fi
}
if hiera -c /etc/puppet/hiera.yaml service_names | grep -q neutron_ovs_dpdk_agent; then
tuned_service_dependency
fi