第3章 OpenStack の一括アップグレード
本章では、全サービスを一度にアップグレードする方法で RHEL OpenStack Platform 6 から RHEL OpenStack Platform 7 へのアップグレード手順を説明します。この方法ではは、すべての OpenStack サービスを同時に無効にしてからアップグレードを実行し、アップグレードプロセスの完了後に全サービスを有効化して稼働状態に戻す必要があります。この手順は、Red Hat Enterprise Linux OpenStack Platform 7 へのアップグレード方法の中で、最も簡単な方法です。
パッケージをアップグレードする前にベースオペレーティングシステムを Red Hat Enterprise Linux 7 の最新バージョンにアップグレードする必要がない場合には、全 OpenStack サービスが停止されるのでオーケストレーションは必要ありません。
大規模な環境の場合は、このアップグレードにより、データベーススキーマのアップグレード完了までのダウンタイムが長時間に及ぶ可能性があります。あらかじめテスト環境でアップグレード手順のリハーサルを実行し、特定の時間帯にダウンタイムを計画してアップグレードを行うことによって、ダウンタイムによる影響を軽減することができます。
注記
本章での手順では、全 Red Hat Enterprise Linux OpenStack Platform ドキュメントが採用するアーキテクチャーの命名規則を使用します。この規則に精通していない場合には、Red Hat Enterprise Linux OpenStack Platform ドキュメントスイート から『アーキテクチャーガイド』を参照してから続行してください。
OpenStack デプロイメントのアップグレードを開始する前に、適切なチャンネルにサブスクライブするようにしてください。詳しい情報は、「2章前提条件」を参照してください。
3.1. OpenStack サービスの同時アップグレード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、クラウドデプロイメントを全コンポーネントを一括で更新して Juno から Kilo にアップグレードする際に従う必要のあるステップを説明しています。ステップの中には、高可用性と非高可用性のシナリオのいずれかを選択することができるものもあります。クラウドが高可用性の場合には、Pacemaker コマンドを使用してクラウド環境の開始および停止をしてください。
各ホストで以下の手順を実行してください。
手順3.1 ホスト上の OpenStack コンポーネントのアップグレード
- Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 用の yum リポジトリーをインストールします。
openstack-utilsパッケージがインストールされていることを確認します。yum install openstack-utils
# yum install openstack-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 全ノードで OpenStack サービスをすべて停止します。このステップは、サービスがどのようにノードに分散されているかによって異なります。
- 非高可用性環境:1 つのノードで実行されている OpenStack サービスをすべて停止するには、そのノードにログインして以下のコマンドを実行します。
openstack-service stop
# openstack-service stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 高可用性環境:
- 1 つのノードで実行されている OpenStack サービスをすべて停止するには、そのノードにログインして以下のコマンドを実行します。
openstack-service stop
# openstack-service stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスター上で
stop-all-resourcesを設定して、Pacemaker で管理されているリソースをすべて無効にします。Pacemaker クラスターの 1 つのメンバーで以下のコマンドを実行します。pcs property set stop-all-resources=true
# pcs property set stop-all-resources=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow pcs statusの出力で、すべてのリソースが停止されたことが表示されるまで待機します。
- 全パッケージの完全なアップグレードを実行してから、Identity Service 内の期限切れトークンをフラッシュします (データベースの同期の所要時間が短縮される可能性があります)。
yum upgrade
# yum upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 各サービスに対して必要とされる設定更新を実行します。
- Identity ServiceRHEL OpenStack Platform 7 (Kilo) リリースでは、token.persistence.backends の場所が変更されました。
keystone.confの[token]のセクションのdriverオプションを更新する必要があります。これには、keystone.token.backendsをkeystone.token.persistence.backendsに置き換える必要があります。sed -i 's/keystone.token.backends/keystone.token.persistence.backends/g' \ /etc/keystone/keystone.conf
# sed -i 's/keystone.token.backends/keystone.token.persistence.backends/g' \ /etc/keystone/keystone.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの更新には、新しいsystemdのユニットファイルが含まれている可能性があるため、更新されたファイルがsystemdにより認識されていることを確認します。systemctl daemon-reload
# systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenStack Networking ServiceOpenStack Networking Service のアップグレードが完了したら、
rootwrap dhcp.filterの設定ファイルを編集する必要があります。これには、/usr/share/neutron/rootwrap/dhcp.filtersファイルで、以下のようにdnsmasqの値を更新します。たとえば、次のように記載されているとします。dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように置き換えます。dnsmasq: CommandFilter, dnsmasq, root
dnsmasq: CommandFilter, dnsmasq, rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- データベースを使用する各サービスのデータベーススキーマをアップグレードします。この操作を行うには、サービスをホストしているノードにログインして以下のコマンドを実行します。
openstack-db --service SERVICENAME --update
# openstack-db --service SERVICENAME --updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow SERVICENAME は、サービスのプロジェクト名に置き換えます。たとえば、Idenitity Service のデータベーススキーマをアップグレードするためのコマンドは以下のようになります。openstack-db --service keystone --update
# openstack-db --service keystone --updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表3.1 データベースを使用する各 OpenStack サービスのプロジェクト名 サービス プロジェクト名 Identity keystone Block Storage cinder Image Service glance Compute nova Networking neutron Orchestration heat openstack-dbコマンドで対応されていないサービスについては、Juno から Kilo のアップグレードの一部として追加でデータベースのメンテナンスを行う必要がある場合もあります。- Identity Service初期のバージョンのインストーラーでは、期限切れの keystone トークンが自動的に削除されるようにシステム設定されていない可能性があるため、トークンテーブルに期限切れのエントリーが多数含まれている可能性があります。このような場合には、データベーススキーマのアップグレードの所要時間が大幅に増大する可能性があります。Keystone データベースのアップグレードプロセスを開始する前に、以下のコマンドを実行してこの問題を軽減します。
keystone-manage token_flush
# keystone-manage token_flushCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、データベースから期限切れのトークンがフラッシュされます。cronを使用して、このコマンドが定期的に (例: 1 日 1 回など) 実行されるように設定する必要があります。 - ComputeKilo に完全に更新した後に (すべてのノードが Kilo を実行している場合)、フレーバー情報のバックグラウンド移行を開始する必要があります。Kilo のコンダクターノードは、必要な場合にこの操作を自動的に行いますが、それ以外のアイドルデータはバックグラウンドで移行する必要があります。以下のコマンドは、
novaユーザーとして実行してください。runuser -u nova -- nova-manage db migrate_flavor_data
# runuser -u nova -- nova-manage db migrate_flavor_dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 上記の操作によって生成された設定ファイルを確認します。アップグレードされたパッケージには、Red Hat Enterprise Linux OpenStack Platform 7 バージョンのサービスに適した
.rpmnewファイルがインストールされているはずです。新しいバージョンの OpenStack サービスでは、特定の設定オプションが非推奨になっている可能性があります。このような非推奨の設定オプションが原因で今後のアップグレードの際に問題が発生する可能性があるため、非推奨の警告については OpenStack のログも参照してください。各サービスで新規追加/更新された設定オプションや非推奨となった設定オプションについての詳しい説明は、Red Hat Enterprise Linux OpenStack Platform ドキュメントスイート で『Configuration Reference』を参照してください。 - パッケージのアップグレードで再起動が必要な場合には (例: アップグレードの一環として新規カーネルがインストールされた場合など)、OpenStack サービスが無効な状態のうちに、影響を受けたホストを再起動してください。
- 非高可用性環境:OpenStack サービスを再起動するには、各ノードで以下のコマンドを実行します。
openstack-service start
# openstack-service startCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 高可用性環境:
stop-all-resourcesプロパティーを再設定して、Pacemaker がリソースを再起動できるようにします。Pacemaker クラスターの 1 つのメンバー上で、以下のコマンドを実行します。pcs property set stop-all-resources=false
# pcs property set stop-all-resources=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow pcs statusの出力で、すべてのリソースが停止されたことが表示されるまで待機します (数分かかる可能性があります)。- コンピュートノードで OpenStack サービスを再起動します。各コンピュートノードで以下のコマンドを実行します。
openstack-service start
# openstack-service startCopy to Clipboard Copied! Toggle word wrap Toggle overflow