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.yml
Copy 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.yml
Copy 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-rhel7
Copy 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: false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow take-over-existing-cluster.yml
Ansible 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.yml
Copy 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: filestore
Copy 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/ansible
Copy 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.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ansible ユーザーとして、Playbook を実行します。
ansible-playbook rolling_update.yml
[user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible インベントリーファイルの特定のノードグループにのみ Playbook を使用するには、
--limit
オプションを使用します。詳細は、「limit
オプションについて」 を参照してください。RBD ミラーリングデーモンノードに
root
ユーザーとしてログインしているときに、rbd-mirror
を手動でアップグレードします。yum upgrade rbd-mirror
# yum upgrade rbd-mirror
Copy 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 ps
Copy 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 -s
Copy 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 -s
Copy 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 プロファイル設定が適用されるようになります。