4.9. アップグレードプロセス

ストレージ管理者は、Ansible Playbook を使用して Red Hat Ceph Storage 4 ストレージクラスターを Red Hat Ceph Storage 5 にアップグレードします。Ansible Playbook rolling_update.yml は、Red Hat Ceph Storage のデプロイメントのアップグレードを実行します。ceph-ansible は、Ceph ノードを以下の順序でアップグレードします。

  • Ceph Monitor
  • Ceph Manager
  • Ceph OSD ノード
  • MDS ノード
  • Ceph オブジェクトゲートウェイ (RGW) ノード
  • Ceph RBD-mirror ノード
  • Ceph NFS ノード
  • すべての Ceph iSCSI ゲートウェイノード
  • Ceph クライアントノード
  • Ceph-crash デーモン
  • すべてのノードでの node-exporter
  • Ceph ダッシュボード
注記

Red Hat Ceph Storage 5 は、コンテナー化されたデプロイメントのみをサポートします。

Ceph-ansible は現在 Red Hat Ceph Storage 5 ではサポートされません。つまり、ストレージクラスターを Red Hat Ceph Storage 5 に移行したら、cephadm を使用して後続の更新を実行する必要があります。

注記

Red Hat Ceph Storage 5 には、ストレージクラスターのデーモンのいずれかが Red Hat Ceph Storage の複数のバージョンを実行していることを検出した場合に、DAEMON_OLD_VERSION 警告を返すヘルスチェック関数も含まれています。この警告は、デーモンが mon_warn_older_version_delay オプションで設定された時間値を超えて Red Hat Ceph Storage の複数のバージョンを実行し続けるとトリガーされます。デフォルトでは、mon_warn_older_version_delay オプションは 1 週間に設定されます。この設定により、ほとんどのアップグレードは、警告を誤って表示することなく続行できます。アップグレードプロセスが長期間一時停止されてた場合は、健全性の警告をミュートできます。

ceph health mute DAEMON_OLD_VERSION --sticky

アップグレードが完了したら、健全性の警告のミュートを解除します。

ceph health unmute DAEMON_OLD_VERSION

前提条件

  • 実行中の Red Hat Ceph Storage クラスター。
  • ストレージクラスター内のすべてのホストへの root レベルのアクセス。
  • 有効なカスタマーサブスクリプションです。
  • Ansible 管理ノードへのルートレベルのアクセス。
  • Red Hat Ceph Storage 5 で利用可能な Ansible および ceph-ansible の最新バージョン
  • Ansible アプリケーションで使用する ansible ユーザーアカウント。
  • ストレージクラスターのノードが、Red Hat Enterprise Linux 8.4 以降にアップグレードされている。
重要

Ansible インベントリーファイルは ceph-ansible ディレクトリーに存在する必要がある。

手順

  1. Ansible 管理ノードで Ceph および Ansible リポジトリーを有効にします。

    構文

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms

  2. Ansible 管理ノードで、ansible および ceph-ansible パッケージの最新バージョンがインストールされていることを確認します。

    構文

    dnf update ansible ceph-ansible

  3. /usr/share/ceph-ansible ディレクトリーに移動します。

    [root@admin ~]# cd /usr/share/ceph-ansible

  4. Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 にアップグレードする場合は、group_vars/osds.yml.sample ファイルおよび group_vars/clients.yml.sample ファイルのコピーを作成し、その名前を group_vars/osds.yml および group_vars/clients.yml に変更します。

    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
    [root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml

  5. Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 にアップグレードする場合は、group_vars/all.yml ファイルを編集し、Red Hat Ceph Storage 5 の詳細を追加します。
  6. 上記の 2 つの手順を実行したら、以前の yaml ファイルから新しい yaml ファイルに設定をコピーします。これらの設定パラメーターの値は Red Hat Ceph Storage 5 用であるため、 ceph_rhcs_versionceph_docker_image、および grafana_container_image の値は変更しないでください。これにより、クラスターに関連するすべての設定が現在の yaml ファイルに存在するようになります。

    fetch_directory: ~/ceph-ansible-keys
    monitor_interface: eth0
    public_network: 192.168.0.0/24
    ceph_docker_registry_auth: true
    ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
    ceph_docker_registry_password: TOKEN
    dashboard_admin_user:
    dashboard_admin_password:
    grafana_admin_user:
    grafana_admin_password:
    radosgw_interface: eth0
    ceph_docker_image: "rhceph/rhceph-5-rhel8"
    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
    grafana_container_image: registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:5
    prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
    alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6

    注記

    Red Hat Ceph Storage 5 コンテナーイメージがデフォルト値に設定されていることを確認します。

  7. group_vars/osds.yml ファイルを編集します。以下のオプションを追加して設定します。

    構文

    nb_retry_wait_osd_up: 50
    delay_wait_osd_up: 30

  8. group_vars/all.yml ファイルを開き、古い all.yml ファイルから以下の値が存在することを確認します。

    1. fetch_directory オプションは、古い all.yml ファイルと同じ値で設定されます。

      構文

      fetch_directory: FULL_DIRECTORY_PATH

      FULL_DIRECTORY_PATH を、Ansible ユーザーのホームディレクトリーなどの書き込み可能な場所に置き換えます。

    2. アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合には、radosgw_interface オプションを追加します。

      radosgw_interface: INTERFACE

      INTERFACE を、Ceph Object Gateway ノードがリッスンするインターフェースに置き換えます。

    3. 現在の設定に SSL 証明書が設定されている場合は、以下を編集します。

      構文

      radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME
      radosgw_frontend_port: 443

    4. upgrade_ceph_packages オプションをコメント解除して、True に設定します。

      構文

      upgrade_ceph_packages: True

    5. ストレージクラスターでノードごとに複数の rgw インスタンスがある場合、radosgw_num_instances 設定をコメント解除して、クラスターのノードごとのインスタンス数に設定します。

      構文

      radosgw_num_instances : NUMBER-OF-INSTANCES-PER-NODE

      radosgw_num_instances : 2

    6. ストレージクラスターに RGW マルチサイトが定義されている場合は、all.yml のマルチサイト設定を確認し、古い all.yml ファイルと同じ値が含まれていることを確認します。
  9. Ansible 管理ノードで ansible-user としてログインします。
  10. rolling_update.yml Playbook を実行して、ストレージクラスターを Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 に変換します。

    構文

    ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i INVENTORY-FILE

    -vvvv オプションは、アップグレードプロセスの詳細ログを収集します。

    [ansible@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts

    重要

    rolling_update.yml Playbook で --limit Ansible オプションを使用することはサポートされていません。

  11. Ansible Playbook のログ出力をチェックして、アップグレードのステータスを確認します。

検証

  1. 実行中のコンテナーの一覧を表示します。

    [root@mon ~]# podman ps

  2. クラスターの健全性状態を確認します。MONITOR-ID は、前のステップで見つかった Ceph Monitor コンテナーの名前に置き換えます。

    構文

    podman exec ceph-mon-MONITOR-ID ceph -s

    [root@mon ~]# podman exec ceph-mon-mon01 ceph -s

  3. Ceph クラスターのデーモンのバージョンを確認し、すべてのデーモンのアップグレードを確認します。MONITOR-ID は、前のステップで見つかった Ceph Monitor コンテナーの名前に置き換えます。

    構文

    podman exec ceph-mon-MONITOR-ID ceph --cluster ceph versions

    [root@mon ~]# podman exec ceph-mon-mon01 ceph --cluster ceph versions