7.3. Ansible を使用したストレージクラスターのアップグレード

Ansible デプロイメントツールを使用して、ローリングアップグレードを実行して Red Hat Ceph Storage クラスターをアップグレードできます。これらのステップは、特に特に記載がない限り、ベアメタルおよびコンテナーのデプロイメントの両方に適用されます。

前提条件

  • Ansible 管理ノードへのルートレベルのアクセス。
  • ansible ユーザーアカウント。

手順

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

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

  2. Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードする場合は、group_vars/all.yml ファイル、group_vars/osds.yml ファイル、および group_vars/clients.yml ファイルのバックアップコピーを作成します。

    [root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
  3. Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードする場合は、group_vars/all.yml.samplegroup_vars/osds.yml.sample、および group_vars/clients.yml.sample ファイルの新しいコピーを作成し、名前を group_vars/all.ymlgroup_vars/osds.yml、および group_vars/clients.yml に変更します。以前にバックアップしたコピーに基づいて変更を開き、編集します。

    [root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
  4. group_vars/osds.yml ファイルを編集します。以下のオプションを追加して設定します。

    nb_retry_wait_osd_up: 60
    delay_wait_osd_up: 10
    注記

    これらはデフォルトの値であり、ユーザーの使用目的に応じて値を変更できます。

  5. Red Hat Ceph Storage 4 の新規マイナーバージョンにアップグレードする場合は、group_vars/all.ymlgrafana_container_image の値が group_vars/all.yml.sample の値と同じであることを確認します。同じでない場合は、同じになるように編集します。

    grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8:4

    注記

    以下に示すイメージパスは、ceph-ansible バージョン 4.0.23-1 に含まれています。

  6. サンプルファイルから最新の site.yml ファイルまたは site-container.yml ファイルをコピーします。

    1. ベアメタル デプロイメントの場合:

      [root@admin ceph-ansible]# cp site.yml.sample site.yml
    2. コンテナー デプロイメントの場合:

      [root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
  7. group_vars/all.yml ファイルを開き、以下のオプションを編集します。

    1. fetch_directory オプションを追加します。

      fetch_directory: FULL_DIRECTORY_PATH
      置き換え
      • FULL_DIRECTORY_PATH を、書き込み可能な場所 (Ansible ユーザーのホームディレクトリーなど) に置き換えます。
    2. アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合には、radosgw_interface オプションを追加します。

      radosgw_interface: INTERFACE
      置き換え
      • Ceph Object Gateway がリッスンするインターフェイスを使用する INTERFACE
    3. 現在の設定で SSL 証明書が設定されている場合は、以下を編集する必要があります。

      radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME
      radosgw_frontend_port: 443
    4. デフォルトの OSD オブジェクトストアは BlueStore です。従来の OSD オブジェクトストアを維持するには、osd_objectstore オプションを明示的に filestore に設定する必要があります。

      osd_objectstore: filestore
      注記

      osd_objectstore オプションを filestore に設定し、OSD を置き換えると BlueStore ではなく FileStore が使用されます。

      重要

      Red Hat Ceph Storage 4 以降、FileStore は非推奨の機能になりました。Red Hat は、FileStore OSD を BlueStore OSD に移行することを推奨します。

    5. Red Hat Ceph Storage 4.1 以降、/usr/share/ceph-ansible/group_vars/all.ymldashboard_admin_password および grafana_admin_password をコメント解除するか設定する必要があります。それぞれに安全なパスワードを設定します。dashboard_admin_user および grafana_admin_user のカスタムユーザー名も設定します。
    6. ベアメタル および コンテナー の両方のデプロイメントの場合:

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

        upgrade_ceph_packages: True
      2. ceph_rhcs_version オプションを 4 に設定します。

        ceph_rhcs_version: 4
        注記

        ceph_rhcs_version オプションを 4 に設定すると、最新バージョンの Red Hat Ceph Storage 4 がプルされます。

      3. ceph_docker_registry 情報を all.yml に追加します。

        構文

        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN

        注記

        Red Hat レジストリーサービスアカウントがない場合は、レジストリーサービスアカウントの Web ページ を使用して作成します。詳細は、Red Hat Container Registry Authentication のナレッジベース記事を参照してください。

        注記

        ceph_docker_registry_username および ceph_docker_registry_password パラメーターにサービスアカウントを使用するだけでなく、カスタマーポータルの認証情報を使用することもできますが、ceph_docker_registry_password パラメーターを暗号化してセキュリティーを確保してください。詳細は、ansible-vault で Ansible のパスワード変数を暗号化する を参照してください。

    7. コンテナー のデプロイメントの場合:

      1. ceph_docker_image オプションを変更して、Ceph 4 コンテナーバージョンを指定します。

        ceph_docker_image: rhceph/rhceph-4-rhel8
      2. ceph_docker_image_tag オプションを変更して、rhceph/rhceph-4-rhel8 の最新バージョンを参照します。

        ceph_docker_image_tag: latest
  8. Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードする場合は、Ansible インベントリーファイルでデフォルトで /etc/ansible/hosts を開き、[grafana-server] セクションに Ceph ダッシュボードのノード名または IP アドレスを追加します。このセクションが存在しない場合は、ノード名または IP アドレスとともにこのセクションも追加します。
  9. Ansible ユーザーに切り替えるかログインしてから、rolling_update.yml Playbook を実行します。

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

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

  10. RBD ミラーリングデーモンノードの root ユーザーとして、rbd-mirror パッケージを手動でアップグレードします。

    [root@rbd ~]# yum upgrade rbd-mirror
  11. rbd-mirror デーモンを再起動します。

    systemctl restart ceph-rbd-mirror@CLIENT_ID
  12. ストレージクラスターのヘルスステータスを確認します。

    1. ベアメタル デプロイメントの場合は、root ユーザーとして monitor ノードにログインし、Ceph status コマンドを実行します。

      [root@mon ~]# ceph -s
    2. container デプロイメントの場合は、Ceph Monitor ノードに root ユーザーとしてログインします。

      1. 実行中のコンテナーのリストを表示します。

        Red Hat Enterprise Linux 7

        [root@mon ~]# docker ps

        Red Hat Enterprise Linux 8

        [root@mon ~]# podman ps

      2. ヘルスステータスを確認します。

        Red Hat Enterprise Linux 7

        [root@mon ~]# docker exec ceph-mon-MONITOR_NAME ceph -s

        Red Hat Enterprise Linux 8

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

        置き換え
        • MONITOR_NAME は、前のステップで見つかった Ceph Monitor コンテナーの名前にします。

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

  13. オプション: Red Hat Ceph Storage 3.x から Red Hat Ceph Storage 4.x にアップグレードした場合に、Legacy BlueStore stats reporting detected on 336 OSD(s). というヘルスに関する警告が表示される場合があります。これは、新しいコードではプール統計の計算方法が異なることが原因です。これは、bluestore_fsck_quick_fix_on_mount パラメーターを設定することで解決できます。

    1. bluestore_fsck_quick_fix_on_mounttrue に設定します。

      [root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount true

    2. noout フラグと norebalance フラグを設定して、OSD がダウンしている間のデータ移動を防止します。

      [root@mon ~]# ceph osd set noout
      [root@mon ~]# ceph osd set norebalance

    3. ベアメタル デプロイメントの場合は、ストレージクラスターのすべての OSD ノードで ceph-osd.target を再起動します。

      [root@osd ~]# systemctl restart ceph-osd.target

    4. コンテナー化された デプロイメントの場合は、個々の OSD を順次再起動し、すべての配置グループが active+clean 状態になるまで待機します。

      構文

      systemctl restart ceph-osd@OSD_ID.service

      [root@osd ~]# systemctl restart ceph-osd@0.service

    5. すべての OSD が修復されたら、nout フラグおよび norebalance フラグの設定を解除します。

      [root@mon ~]# ceph osd unset noout
      [root@mon ~]# ceph osd unset norebalance

    6. すべての OSD が修復されたら、bluestore_fsck_quick_fix_on_mountfalse に設定します。

      [root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount false

    7. オプション: ベアメタル デプロイメントの代替方法として、OSD サービスを停止し、ceph-bluestore-tool コマンドを使用して OSD で修復機能を実行してから、OSD サービスを起動します。

      1. OSD サービスを停止します。

        [root@osd ~]# systemctl stop ceph-osd.target
      2. 実際の OSD ID を指定して、OSD の修復機能を実行します。

        構文

        ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-OSDID repair

        [root@osd ~]# ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-2 repair

      3. OSD サービスを起動します。

        [root@osd ~]# systemctl start ceph-osd.target
  14. アップグレードが終了したら、Ansible の Playbook を実行して、FileStore OSD を BlueStore OSD に移行します。

    構文

    ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit OSD_NODE_TO_MIGRATE

    [ansible@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit osd01

    移行が完了したら、以下のサブ手順を実行します。

    1. group_vars/osds.yml ファイルを編集するために開き、osd_objectstore オプションを bluestore に設定します。以下に例を示します。

      osd_objectstore: bluestore
    2. lvm_volumes 変数を使用している場合は、journal オプションおよび journal_vg オプションをそれぞれ db および db_vg に変更します。以下に例を示します。

      lvm_volumes:
        - data: /dev/sdb
          journal: /dev/sdc1
        - data: /dev/sdd
          journal: journal1
          journal_vg: journals

      Bluestore への変換後

      lvm_volumes:
        - data: /dev/sdb
          db: /dev/sdc1
        - data: /dev/sdd
          db: journal1
          db_vg: journals

  15. OpenStack 環境で動作する場合には、すべての cephx ユーザーがプールに RBD プロファイルを使用するように更新します。以下のコマンドは root ユーザーとして実行する必要があります。

    1. Glance ユーザー:

      構文

      ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=GLANCE_POOL_NAME'

      [root@mon ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'

    2. Cinder ユーザー:

      構文

      ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=CINDER_VOLUME_POOL_NAME, profile rbd pool=NOVA_POOL_NAME, profile rbd-read-only pool=GLANCE_POOL_NAME'

      [root@mon ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'

    3. OpenStack の一般ユーザーは、以下のようになります。

      構文

      ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=CINDER_VOLUME_POOL_NAME, profile rbd pool=NOVA_POOL_NAME, profile rbd-read-only pool=GLANCE_POOL_NAME'

      [root@mon ~]# ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'

      重要

      ライブクライアントの移行を実行する前に、これらの CAPS 更新を行います。これにより、クライアントがメモリーで実行している新しいライブラリーを使用でき、古い CAPS 設定がキャッシュから破棄され、新しい RBD プロファイル設定が適用されるようになります。

  16. 必要に応じて、クライアントノードで、Ceph クライアント側ライブラリーに依存するアプリケーションを再起動します。

    注記

    QEMU または KVM インスタンスを実行している OpenStack Nova コンピュートノードをアップグレードする場合や、専用の QEMU または KVM クライアントを使用する場合には、インスタンスを再起動しても機能しないため、QEMU または KVM インスタンスを停止して起動してください。

関連情報