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 インスタンスを停止して起動してください。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.