4.3. ストレージクラスターのアップグレード
手順
Ansible の管理ノードから以下のコマンドを使用します。
root
ユーザーとして、/usr/share/ceph-ansible/
ディレクトリーにナビゲートします。[root@admin ~]# cd /usr/share/ceph-ansible/
Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。
group_vars/all.yml
ファイルおよびgroup_vars/osds.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.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 のインストール」 をご覧ください。[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
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 }}" }
client.test
を実際のクライアント名に置き換え、クライアントキーをクライアント定義の行に追加します。以下に例を示します。key: "ADD-KEYRING-HERE=="
これで、行全体の例は次のようになります。
- { 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 }}" }
注記クライアントキーを取得するには、
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
group_vars/all.yml
ファイルにfetch_directory
パラメーターを追加してください。fetch_directory: <full_directory_path>
以下を置き換えます。
-
<full_directory_path>
を、書き込み可能な場所 (Ansible ユーザーのホームディレクトリーなど) に置き換えます。ストレージクラスターの初期インストール時に使用した既存のパスを入力してください。
既存のパスが失われていたり、なくなっていたりする場合は、まず次のことを行ってください。
既存の
group_vars/all.yml
ファイルに以下のオプションを追加します。fsid: <add_the_fsid> generate_fsid: false
take-over-existing-cluster.yml
Ansible playbook を実行します。[user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml . [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.yml
-
アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合は、
radosgw_interface
パラメーターをgroup_vars/all.yml
ファイルに追加します。radosgw_interface: <interface>
以下を置き換えます。
-
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
に設定し、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>
infrastructure-playbooks
ディレクトリーから現在のディレクトリーに、rolling_update.yml
をコピーします。[root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
/var/log/ansible/
ディレクトリーを作成し、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
次のように
log_path
値を更新して、/usr/share/ceph-ansible/ansible.cfg
ファイルを編集します。log_path = /var/log/ansible/ansible.log
Ansible ユーザーとして、Playbook を実行します。
[user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
Ansible インベントリーファイルの特定のノードグループにのみ Playbook を使用するには、
--limit
オプションを使用します。詳細は、「limit
オプションについて」 を参照してください。RBD ミラーリングデーモンノードに
root
ユーザーとしてログインしているときに、rbd-mirror
を手動でアップグレードします。# yum upgrade rbd-mirror
デーモンを再起動します。
# systemctl restart ceph-rbd-mirror@<client-id>
クラスターの健全性に問題がないことを確認します。
root
ユーザーとしてモニターノードにログインし、実行中のすべてのコンテナーをリストします。[root@monitor ~]# docker ps
クラスターの正常性が正常であることを確認します。
[root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -s
以下を置き換えます。
-
<mon-id>
は、最初の手順で見つかった Monitor コンテナーの名前に置き換えます。
以下は例になります。
[root@monitor ~]# docker exec ceph-mon-monitor ceph -s
-
OpenStack 環境で動作する場合には、すべての
cephx
ユーザーがプールに RBD プロファイルを使用するように更新します。以下のコマンドはroot
ユーザーとして実行する必要があります。Glance ユーザー
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
例
[root@monitor ~]# 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@monitor ~]# 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@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'
重要ライブクライアントの移行を実行する前に、これらの CAPS 更新を行います。これにより、クライアントがメモリーで実行している新しいライブラリーを使用でき、古い CAPS 設定がキャッシュから破棄され、新しい RBD プロファイル設定が適用されるようになります。