7.3. Ansible を使用したストレージクラスターのアップグレード
Ansible デプロイメントツールを使用して、ローリングアップグレードを実行して Red Hat Ceph Storage クラスターをアップグレードできます。これらのステップは、特に特に記載がない限り、ベアメタルおよびコンテナーのデプロイメントの両方に適用されます。
前提条件
- Ansible 管理ノードへのルートレベルのアクセス。
-
ansible
ユーザーアカウント。
手順
/usr/share/ceph-ansible
ディレクトリーに移動します。例
[root@admin ~]# cd /usr/share/ceph-ansible/
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
Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードする場合は、
group_vars/all.yml.sample
、group_vars/osds.yml.sample
、およびgroup_vars/clients.yml.sample
ファイルの新しいコピーを作成し、名前をgroup_vars/all.yml
、group_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
group_vars/osds.yml
ファイルを編集します。以下のオプションを追加して設定します。nb_retry_wait_osd_up: 60 delay_wait_osd_up: 10
注記これらはデフォルトの値であり、ユーザーの使用目的に応じて値を変更できます。
Red Hat Ceph Storage 4 の新規マイナーバージョンにアップグレードする場合は、
group_vars/all.yml
のgrafana_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 に含まれています。サンプルファイルから最新の
site.yml
ファイルまたはsite-container.yml
ファイルをコピーします。ベアメタル デプロイメントの場合:
[root@admin ceph-ansible]# cp site.yml.sample site.yml
コンテナー デプロイメントの場合:
[root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
group_vars/all.yml
ファイルを開き、以下のオプションを編集します。fetch_directory
オプションを追加します。fetch_directory: FULL_DIRECTORY_PATH
- 置き換え
- FULL_DIRECTORY_PATH を、書き込み可能な場所 (Ansible ユーザーのホームディレクトリーなど) に置き換えます。
アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合には、
radosgw_interface
オプションを追加します。radosgw_interface: INTERFACE
- 置き換え
- Ceph Object Gateway がリッスンするインターフェイスを使用する INTERFACE
現在の設定で SSL 証明書が設定されている場合は、以下を編集する必要があります。
radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME radosgw_frontend_port: 443
デフォルトの 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 に移行することを推奨します。
-
Red Hat Ceph Storage 4.1 以降、
/usr/share/ceph-ansible/group_vars/all.yml
のdashboard_admin_password
およびgrafana_admin_password
をコメント解除するか設定する必要があります。それぞれに安全なパスワードを設定します。dashboard_admin_user
およびgrafana_admin_user
のカスタムユーザー名も設定します。 ベアメタル および コンテナー の両方のデプロイメントの場合:
upgrade_ceph_packages
オプションをコメント解除して、True
に設定します。upgrade_ceph_packages: True
ceph_rhcs_version
オプションを4
に設定します。ceph_rhcs_version: 4
注記ceph_rhcs_version
オプションを4
に設定すると、最新バージョンの Red Hat Ceph Storage 4 がプルされます。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 のパスワード変数を暗号化する を参照してください。
コンテナー のデプロイメントの場合:
ceph_docker_image
オプションを変更して、Ceph 4 コンテナーバージョンを指定します。ceph_docker_image: rhceph/rhceph-4-rhel8
ceph_docker_image_tag
オプションを変更して、rhceph/rhceph-4-rhel8
の最新バージョンを参照します。ceph_docker_image_tag: latest
-
Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードする場合は、Ansible インベントリーファイルでデフォルトで
/etc/ansible/hosts
を開き、[grafana-server]
セクションに Ceph ダッシュボードのノード名または IP アドレスを追加します。このセクションが存在しない場合は、ノード名または IP アドレスとともにこのセクションも追加します。 Ansible ユーザーに切り替えるかログインしてから、
rolling_update.yml
Playbook を実行します。[ansible@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/rolling_update.yml -i hosts
重要rolling_update.yml
Playbook で--limit
Ansible オプションを使用することはサポートされていません。RBD ミラーリングデーモンノードの
root
ユーザーとして、rbd-mirror
パッケージを手動でアップグレードします。[root@rbd ~]# yum upgrade rbd-mirror
rbd-mirror
デーモンを再起動します。systemctl restart ceph-rbd-mirror@CLIENT_ID
ストレージクラスターのヘルスステータスを確認します。
ベアメタル デプロイメントの場合は、
root
ユーザーとして monitor ノードにログインし、Ceph status コマンドを実行します。[root@mon ~]# ceph -s
container デプロイメントの場合は、Ceph Monitor ノードに
root
ユーザーとしてログインします。実行中のコンテナーのリストを表示します。
Red Hat Enterprise Linux 7
[root@mon ~]# docker ps
Red Hat Enterprise Linux 8
[root@mon ~]# podman ps
ヘルスステータスを確認します。
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
オプション: 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
パラメーターを設定することで解決できます。bluestore_fsck_quick_fix_on_mount
はtrue
に設定します。例
[root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount true
noout
フラグとnorebalance
フラグを設定して、OSD がダウンしている間のデータ移動を防止します。例
[root@mon ~]# ceph osd set noout [root@mon ~]# ceph osd set norebalance
ベアメタル デプロイメントの場合は、ストレージクラスターのすべての OSD ノードで
ceph-osd.target
を再起動します。例
[root@osd ~]# systemctl restart ceph-osd.target
コンテナー化された デプロイメントの場合は、個々の OSD を順次再起動し、すべての配置グループが
active+clean
状態になるまで待機します。構文
systemctl restart ceph-osd@OSD_ID.service
例
[root@osd ~]# systemctl restart ceph-osd@0.service
すべての OSD が修復されたら、
nout
フラグおよびnorebalance
フラグの設定を解除します。例
[root@mon ~]# ceph osd unset noout [root@mon ~]# ceph osd unset norebalance
すべての OSD が修復されたら、
bluestore_fsck_quick_fix_on_mount
をfalse
に設定します。例
[root@mon ~]# ceph config set osd bluestore_fsck_quick_fix_on_mount false
オプション: ベアメタル デプロイメントの代替方法として、OSD サービスを停止し、
ceph-bluestore-tool
コマンドを使用して OSD で修復機能を実行してから、OSD サービスを起動します。OSD サービスを停止します。
[root@osd ~]# systemctl stop ceph-osd.target
実際の 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
OSD サービスを起動します。
[root@osd ~]# systemctl start ceph-osd.target
アップグレードが終了したら、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
移行が完了したら、以下のサブ手順を実行します。
group_vars/osds.yml
ファイルを編集するために開き、osd_objectstore
オプションをbluestore
に設定します。以下に例を示します。osd_objectstore: bluestore
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
OpenStack 環境で動作する場合には、すべての
cephx
ユーザーがプールに RBD プロファイルを使用するように更新します。以下のコマンドはroot
ユーザーとして実行する必要があります。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'
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'
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 プロファイル設定が適用されるようになります。
必要に応じて、クライアントノードで、Ceph クライアント側ライブラリーに依存するアプリケーションを再起動します。
注記QEMU または KVM インスタンスを実行している OpenStack Nova コンピュートノードをアップグレードする場合や、専用の QEMU または KVM クライアントを使用する場合には、インスタンスを再起動しても機能しないため、QEMU または KVM インスタンスを停止して起動してください。
関連情報
- 詳細は、limit オプションの理解 を参照してください。
- 詳細は、Red Hat Ceph Storage 管理ガイドの オブジェクトストアを FileStore から BlueStore に移行する方法 を参照してください。
- 詳細は、ナレッジベースの記事 After a ceph-upgrade the cluster status reports 'Legacy BlueStore stats reporting detected' を参照してください。