1.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 Object Gateway (RGW) ノード
- Ceph RBD-mirror ノード
- Ceph NFS ノード
- すべての Ceph iSCSI ゲートウェイノード
- Ceph クライアントノード
- Ceph-crash デーモン
- すべてのノードでの node-exporter
- Ceph Dashboard
ストレージクラスターが Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 にアップグレードされると、Grafana UI に 2 つのダッシュボードが表示されます。これは、Red Hat Ceph Storage 4 の Prometheus のポートが 9092 で、Red Hat Ceph Storage 5 のポートが 9095 であるためです。grafana は削除できます。cephadm
はサービスとデーモンを再デプロイし、Grafana UI 上の古いダッシュボードを削除します。
Red Hat Ceph Storage 5 は、コンテナー化されたデプロイメントのみをサポートします。
Ceph-ansible
は現在 Red Hat Ceph Storage 5 ではサポートされません。つまり、ストレージクラスターを Red Hat Ceph Storage 5 に移行したら、cephadm
を使用して後続の更新を実行する必要があります。
単一レルムおよび複数レルムを使用してマルチサイト Ceph Object Gateway をデプロイするには、all.yml
ファイルを編集してください。詳細は、Red Hat Ceph Storage 4 インストールガイドの マルチサイト Ceph Object Gateway の設定 を参照してください。
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 管理ノードへの root レベルのアクセス。
-
Red Hat Ceph Storage 5 で利用可能な Ansible および
ceph-ansible
の最新バージョン。 -
Ansible アプリケーションで使用する
ansible
ユーザーアカウント。 - ストレージクラスターのノードが、Red Hat Enterprise Linux 8.4 EUS 以降にアップグレードされている。
Ansible インベントリーファイルは ceph-ansible
ディレクトリーに存在する必要がある。
手順
Ansible 管理ノードで Ceph および Ansible リポジトリーを有効にします。
Red Hat Enterprise Linux 8
subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
Red Hat Enterprise Linux 9
subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
Ansible 管理ノードで、
ansible
およびceph-ansible
パッケージの最新バージョンがインストールされていることを確認します。構文
dnf update ansible ceph-ansible
/usr/share/ceph-ansible
ディレクトリーに移動します。例:
[root@admin ~]# cd /usr/share/ceph-ansible
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
-
Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 にアップグレードする場合は、
group_vars/all.yml
ファイルを編集し、Red Hat Ceph Storage 5 の詳細を追加します。 上記の 2 つの手順を実行したら、以前の
yaml
ファイルから新しいyaml
ファイルに設定をコピーします。これらの設定パラメーターの値は Red Hat Ceph Storage 5 用であるため、ceph_rhcs_version
、ceph_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_USERNAME dashboard_admin_password: DASHBOARD_ADMIN_PASSWORD grafana_admin_user: GRAFANA_ADMIN_USER grafana_admin_password: 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 コンテナーイメージがデフォルト値に設定されていることを確認します。
group_vars/osds.yml
ファイルを編集します。以下のオプションを追加して設定します。構文
nb_retry_wait_osd_up: 50 delay_wait_osd_up: 30
group_vars/all.yml
ファイルを開き、古いall.yml
ファイルから以下の値が存在することを確認します。fetch_directory
オプションは、古いall.yml
ファイルと同じ値で設定されます。構文
fetch_directory: FULL_DIRECTORY_PATH
FULL_DIRECTORY_PATH を、Ansible ユーザーのホームディレクトリーなどの書き込み可能な場所に置き換えます。
アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合には、
radosgw_interface
オプションを追加します。radosgw_interface: INTERFACE
INTERFACE を、Ceph Object Gateway ノードがリッスンするインターフェイスに置き換えます。
現在の設定に SSL 証明書が設定されている場合は、以下を編集します。
構文
radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME radosgw_frontend_port: 443
upgrade_ceph_packages
オプションをコメント解除して、True
に設定します。構文
upgrade_ceph_packages: True
ストレージクラスターでノードごとに複数の Ceph Object Gateway インスタンスがある場合、
radosgw_num_instances
設定をコメント解除して、クラスターのノードごとのインスタンス数に設定します。構文
radosgw_num_instances : NUMBER_OF_INSTANCES_PER_NODE
例:
radosgw_num_instances : 2
-
ストレージクラスターに Ceph Object Gateway マルチサイトが定義されている場合は、
all.yml
のマルチサイト設定を確認し、古いall.yml
ファイルと同じ値が含まれていることを確認します。
バケットが作成されているか、
num_shards = 0
である場合は、Red Hat Ceph Storage 5.3 へのアップグレードを計画する前に、バケットを手動でリシャーディングします。警告bucket_index_max_shards
が0
の場合に以前のリリースから Red Hat Ceph Storage 5.3 にアップグレードすると、Ceph Object Gateway バケットのメタデータが失われ、バケットにアクセスしようとしたときにバケットが使用できなくなる可能性があります。そのため、bucket_index_max_shards
が11
シャードに設定されていることを確認してください。そうでない場合は、ゾーングループレベルでこの設定を変更します。構文
radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
例:
[ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
-
Ansible 管理ノードで
ansible-user
としてログインします。 --extra-vars
オプションを使用してinfrastructure-playbooks/rolling_update.yml
Playbook を更新し、health_osd_check_retries
とhealth_osd_check_delay
の値をそれぞれ50
と30
に変更します。例:
[root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"
各 OSD ノードでは、これらの値により、
ceph-ansible
はストレージクラスターの健全性を 30 秒ごとに最大 50 回チェックします。つまり、ceph-ansible
は OSD ごとに最大 25 分待機します。ストレージクラスターの使用済みのストレージ容量に基づいて、
health_osd_check_retries
オプションの値を上下に調整します。たとえば、436 TB のうち、ストレージ容量の 50% にあたる 218 TB を使用している場合は、health_osd_check_retries
オプションを50
に設定します。/etc/ansible/hosts
は、Ansible インベントリーファイルのデフォルトの場所です。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 オプションは、アップグレードプロセスの詳細ログを収集します。
例:
[ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts
重要rolling_update.yml
Playbook で--limit
Ansible オプションを使用することはサポートされていません。- Ansible Playbook のログ出力をチェックして、アップグレードのステータスを確認します。
検証
実行中のすべてのコンテナーをリスト表示します。
例:
[root@mon ~]# podman ps
クラスターの健全性状態を確認します。MONITOR_ID は、前のステップで見つかった Ceph Monitor コンテナーの名前に置き換えます。
構文
podman exec ceph-mon-MONITOR_ID ceph -s
例:
[root@mon ~]# podman exec ceph-mon-mon01 ceph -s
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