Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第4章 オーバークラウドの更新

以下の手順では、オーバークラウドを更新します。

前提条件

  • アンダークラウドが最新バージョンに更新されていること

4.1. オーバークラウド更新のスピードアップ

オーバークラウドの更新プロセスを迅速化するには、DockerPuppetProcessCount heat パラメーターを設定し、削除されたデータベースエントリーをアーカイブし、更新を実施する前にオーバークラウドノードに必要なパッケージをダウンロードします。

大規模な OpenStack デプロイメントの更新プロセスの迅速化に関する詳しい情報は、Red Hat ナレッジベースのアーティクル Openstack Director Node Performance Tuning for large deployments を参照してください。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    $ source ~/stackrc
  3. 設定ファイルの生成に container-puppet が使用する同時プロセスの数を増やすには、DockerPuppetProcessCount パラメーターを設定する必要があります。

    1. templates ディレクトリーに updates-environment.yaml という名前の環境ファイルを作成します。

      $ touch ~/templates/updates-environment.yaml
    2. ファイルを編集し、以下の内容を追加します。

      parameter_defaults:
          DockerPuppetProcessCount: 8
    3. -e オプションを使用して、openstack overcloud update prepareopenstack overcloud ceph-upgrade run、および openstack overcloud update converge コマンドを実行するときにこの環境ファイルを含めます。
  4. コントローラーノードで、削除したデータベースエントリーをアーカイブします:

    1. オーバークラウドから、コントローラーノードのすべてのインスタンスを一覧表示します。

      $ source ~/overcloudrc
      $ openstack server list
    2. nova_api_cron コンテナーを実行しているコントローラーノードにログオンします。

      ssh heat-admin@<controller_ip>
      • <controller name or IP> をコントローラーノードの IP アドレスに置き換えます。
    3. 削除されたデータベースエントリーをアーカイブします。

      $ sudo docker exec -u 42436 -ti nova_api_cron bash
      $ nova-manage db archive_deleted_rows --max_rows 1000
      $ exit
  5. すべてのオーバークラウドノードで更新に必要なパッケージをすべてダウンロードするには、以下の手順を実施します。

    1. オーバークラウドの静的なインベントリーファイルを作成します。

      $ tripleo-ansible-inventory \
      --ansible_ssh_user heat-admin \
      --static-yaml-inventory ~/inventory.yaml
    2. 以下の Ansible Playbook を作成します。

      $ cat > ~/yum-download-only.yaml <<'EOF'
      - hosts: all
        gather_facts: false
        tasks:
          - name: Pre-download all packages on all overcloud nodes
            shell:
              yum upgrade -y --downloadonly
            become: true
      EOF
    3. Ansible Playbook yum-download-only.yaml を実行します。

      $ ansible-playbook \
      -i ~/inventory.yaml \
      -f 20 ~/yum-download-only.yaml \
      --limit Controller,Compute,CephStorage