第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 コンポーネントのアップグレード

  1. Red Hat Enterprise Linux OpenStack Platform 7 (Kilo) 用の yum リポジトリーをインストールします。
  2. openstack-utils パッケージがインストールされていることを確認します。
    # yum install openstack-utils
  3. 全ノードで OpenStack サービスをすべて停止します。このステップは、サービスがどのようにノードに分散されているかによって異なります。
    • 非高可用性環境:
      1 つのノードで実行されている OpenStack サービスをすべて停止するには、そのノードにログインして以下のコマンドを実行します。
      # openstack-service stop
    • 高可用性環境:
      1. 1 つのノードで実行されている OpenStack サービスをすべて停止するには、そのノードにログインして以下のコマンドを実行します。
        # openstack-service stop
      2. クラスター上で stop-all-resources を設定して、Pacemaker で管理されているリソースをすべて無効にします。Pacemaker クラスターの 1 つのメンバーで以下のコマンドを実行します。
        # pcs property set stop-all-resources=true
        pcs status の出力で、すべてのリソースが停止されたことが表示されるまで待機します。
  4. 全パッケージの完全なアップグレードを実行してから、Identity Service 内の期限切れトークンをフラッシュします (データベースの同期の所要時間が短縮される可能性があります)。
    # yum upgrade
  5. 各サービスに対して必要とされる設定更新を実行します。
    1. Identity Service
      RHEL OpenStack Platform 7 (Kilo) リリースでは、token.persistence.backends の場所が変更されました。keystone.conf[token] のセクションの driver オプションを更新する必要があります。これには、keystone.token.backendskeystone.token.persistence.backends に置き換える必要があります。
      # sed -i 's/keystone.token.backends/keystone.token.persistence.backends/g' \
      /etc/keystone/keystone.conf
      パッケージの更新には、新しい systemd のユニットファイルが含まれている可能性があるため、更新されたファイルが systemd により認識されていることを確認します。
      # systemctl daemon-reload
    2. OpenStack Networking Service
      OpenStack Networking Service のアップグレードが完了したら、rootwrap dhcp.filter の設定ファイルを編集する必要があります。
      これには、/usr/share/neutron/rootwrap/dhcp.filters ファイルで、以下のように dnsmasq の値を更新します。たとえば、次のように記載されているとします。
      dnsmasq: EnvFilter, env, root, CONFIG_FILE=, NETWORK_ID=, dnsmasq
      以下のように置き換えます。
      dnsmasq: CommandFilter, dnsmasq, root
  6. データベースを使用する各サービスのデータベーススキーマをアップグレードします。この操作を行うには、サービスをホストしているノードにログインして以下のコマンドを実行します。
    # openstack-db --service SERVICENAME --update
    SERVICENAME は、サービスのプロジェクト名に置き換えます。たとえば、Idenitity Service のデータベーススキーマをアップグレードするためのコマンドは以下のようになります。
    # openstack-db --service keystone --update

    表3.1 データベースを使用する各 OpenStack サービスのプロジェクト名

    サービス プロジェクト名
    Identity keystone
    Block Storage cinder
    Image Service glance
    Compute nova
    Networking neutron
    Orchestration heat
    openstack-db コマンドで対応されていないサービスについては、Juno から Kilo のアップグレードの一部として追加でデータベースのメンテナンスを行う必要がある場合もあります。
    1. Identity Service
      初期のバージョンのインストーラーでは、期限切れの keystone トークンが自動的に削除されるようにシステム設定されていない可能性があるため、トークンテーブルに期限切れのエントリーが多数含まれている可能性があります。このような場合には、データベーススキーマのアップグレードの所要時間が大幅に増大する可能性があります。
      Keystone データベースのアップグレードプロセスを開始する前に、以下のコマンドを実行してこの問題を軽減します。
      # keystone-manage token_flush
      このコマンドにより、データベースから期限切れのトークンがフラッシュされます。cron を使用して、このコマンドが定期的に (例: 1 日 1 回など) 実行されるように設定する必要があります。
    2. Compute
      Kilo に完全に更新した後に (すべてのノードが Kilo を実行している場合)、フレーバー情報のバックグラウンド移行を開始する必要があります。Kilo のコンダクターノードは、必要な場合にこの操作を自動的に行いますが、それ以外のアイドルデータはバックグラウンドで移行する必要があります。以下のコマンドは、nova ユーザーとして実行してください。
      # runuser -u nova -- nova-manage db migrate_flavor_data
  7. 上記の操作によって生成された設定ファイルを確認します。アップグレードされたパッケージには、Red Hat Enterprise Linux OpenStack Platform 7 バージョンのサービスに適した .rpmnew ファイルがインストールされているはずです。
    新しいバージョンの OpenStack サービスでは、特定の設定オプションが非推奨になっている可能性があります。このような非推奨の設定オプションが原因で今後のアップグレードの際に問題が発生する可能性があるため、非推奨の警告については OpenStack のログも参照してください。各サービスで新規追加/更新された設定オプションや非推奨となった設定オプションについての詳しい説明は、Red Hat Enterprise Linux OpenStack Platform ドキュメントスイート で『Configuration Reference』を参照してください。
  8. パッケージのアップグレードで再起動が必要な場合には (例: アップグレードの一環として新規カーネルがインストールされた場合など)、OpenStack サービスが無効な状態のうちに、影響を受けたホストを再起動してください。
    • 非高可用性環境:
      OpenStack サービスを再起動するには、各ノードで以下のコマンドを実行します。
      # openstack-service start
    • 高可用性環境:
      1. stop-all-resources プロパティーを再設定して、Pacemaker がリソースを再起動できるようにします。Pacemaker クラスターの 1 つのメンバー上で、以下のコマンドを実行します。
        # pcs property set stop-all-resources=false
        pcs status の出力で、すべてのリソースが停止されたことが表示されるまで待機します (数分かかる可能性があります)。
      2. コンピュートノードで OpenStack サービスを再起動します。各コンピュートノードで以下のコマンドを実行します。
        # openstack-service start