4.3. ストレージクラスターのアップグレード
手順
Ansible の管理ノードから以下のコマンドを使用します。
rootユーザーとして、/usr/share/ceph-ansible/ディレクトリーにナビゲートします。cd /usr/share/ceph-ansible/
[root@admin ~]# cd /usr/share/ceph-ansible/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。
group_vars/all.ymlファイルおよびgroup_vars/osds.ymlファイルをバックアップします。cp group_vars/all.yml group_vars/all_old.yml cp group_vars/osds.yml group_vars/osds_old.yml cp group_vars/clients.yml group_vars/clients_old.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.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合は、
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に名前を変更します。それらを開いて編集します。詳しくは、付録A バージョン 2 と 3 の間の Ansible 変数の変更 と 「コンテナーへの Red Hat Ceph Storage Cluster のインストール」 をご覧ください。cp group_vars/all.yml.sample group_vars/all.yml cp group_vars/osds.yml.sample group_vars/osds.yml cp group_vars/clients.yml.sample 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.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合は、
group_vars/clients.ymlファイルを開き、以下の行をアンコメントします。keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow client.testを実際のクライアント名に置き換え、クライアントキーをクライアント定義の行に追加します。以下に例を示します。key: "ADD-KEYRING-HERE=="
key: "ADD-KEYRING-HERE=="Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで、行全体の例は次のようになります。
- { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }- { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クライアントキーを取得するには、
ceph auth get-or-createコマンドを実行して、指定されたクライアントのキーを表示します。
2.x から 3.x にアップグレードする場合、
group_vars/all.ymlファイルでceph_docker_imageパラメーターを変更して、Ceph 3 コンテナーのバージョンを指すようにします。ceph_docker_image: rhceph/rhceph-3-rhel7
ceph_docker_image: rhceph/rhceph-3-rhel7Copy to Clipboard Copied! Toggle word wrap Toggle overflow group_vars/all.ymlファイルにfetch_directoryパラメーターを追加してください。fetch_directory: <full_directory_path>
fetch_directory: <full_directory_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を置き換えます。
-
<full_directory_path>を、書き込み可能な場所 (Ansible ユーザーのホームディレクトリーなど) に置き換えます。ストレージクラスターの初期インストール時に使用した既存のパスを入力してください。
既存のパスが失われていたり、なくなっていたりする場合は、まず次のことを行ってください。
既存の
group_vars/all.ymlファイルに以下のオプションを追加します。fsid: <add_the_fsid> generate_fsid: false
fsid: <add_the_fsid> generate_fsid: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow take-over-existing-cluster.ymlAnsible playbook を実行します。cp infrastructure-playbooks/take-over-existing-cluster.yml . ansible-playbook take-over-existing-cluster.yml
[user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml . [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合は、
radosgw_interfaceパラメーターをgroup_vars/all.ymlファイルに追加します。radosgw_interface: <interface>
radosgw_interface: <interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を置き換えます。
-
Ceph Object Gateway がリッスンするインターフェースを使用する
<interface>
-
Ceph Object Gateway がリッスンするインターフェースを使用する
Red Hat Ceph Storage 3.2 から、デフォルトの OSD オブジェクトストアは BlueStore です。従来の OSD オブジェクトストアを維持するには、
osd_objectstoreオプションをgroup_vars/all.ymlファイルのfilestoreに明示的に設定する必要があります。osd_objectstore: filestore
osd_objectstore: filestoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記osd_objectstoreオプションをfilestoreに設定し、OSD を置き換えると BlueStore ではなく FileStore が使用されます。/etc/ansible/hostsにある Ansible インベントリーファイルで、[mgrs]セクションの下に Ceph Manager (ceph-mgr) ノードを追加します。Ceph Manager デーモンを Monitor ノードにコロケーションします。バージョン 3.x から最新のバージョンにアップグレードする場合は、この手順をスキップします。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow infrastructure-playbooksディレクトリーから現在のディレクトリーに、rolling_update.ymlをコピーします。cp infrastructure-playbooks/rolling_update.yml .
[root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/ansible/ディレクトリーを作成し、ansibleユーザーに適切な権限を割り当てます。mkdir /var/log/ansible chown ansible:ansible /var/log/ansible chmod 755 /var/log/ansible
[root@admin ceph-ansible]# mkdir /var/log/ansible [root@admin ceph-ansible]# chown ansible:ansible /var/log/ansible [root@admin ceph-ansible]# chmod 755 /var/log/ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように
log_path値を更新して、/usr/share/ceph-ansible/ansible.cfgファイルを編集します。log_path = /var/log/ansible/ansible.log
log_path = /var/log/ansible/ansible.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Ansible ユーザーとして、Playbook を実行します。
ansible-playbook rolling_update.yml
[user@admin ceph-ansible]$ ansible-playbook rolling_update.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible インベントリーファイルの特定のノードグループにのみ Playbook を使用するには、
--limitオプションを使用します。詳細は、「limitオプションについて」 を参照してください。RBD ミラーリングデーモンノードに
rootユーザーとしてログインしているときに、rbd-mirrorを手動でアップグレードします。yum upgrade rbd-mirror
# yum upgrade rbd-mirrorCopy to Clipboard Copied! Toggle word wrap Toggle overflow デーモンを再起動します。
systemctl restart ceph-rbd-mirror@<client-id>
# systemctl restart ceph-rbd-mirror@<client-id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの健全性に問題がないことを確認します。
rootユーザーとしてモニターノードにログインし、実行中のすべてのコンテナーをリストします。docker ps
[root@monitor ~]# docker psCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの正常性が正常であることを確認します。
docker exec ceph-mon-<mon-id> ceph -s
[root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下を置き換えます。
-
<mon-id>は、最初の手順で見つかった Monitor コンテナーの名前に置き換えます。
以下は例になります。
docker exec ceph-mon-monitor ceph -s
[root@monitor ~]# docker exec ceph-mon-monitor ceph -sCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenStack 環境で動作する場合には、すべての
cephxユーザーがプールに RBD プロファイルを使用するように更新します。以下のコマンドはrootユーザーとして実行する必要があります。Glance ユーザー
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
[root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>'
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>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
[root@monitor ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>'
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>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
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'
[root@monitor ~]# 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'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ライブクライアントの移行を実行する前に、これらの CAPS 更新を行います。これにより、クライアントがメモリーで実行している新しいライブラリーを使用でき、古い CAPS 設定がキャッシュから破棄され、新しい RBD プロファイル設定が適用されるようになります。