Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
付録G Red Hat Ceph Storage 2 から 3 への手動アップグレード
Ceph Storage Cluster は、クラスターの実行中にローリング方式でバージョン 2 からバージョン 3 にアップグレードできます。クラスター内の各ノードを順番にアップグレードします。前のノードが完了した後でのみ、次のノードに進みます。
Red Hat では、以下の順序で Ceph コンポーネントをアップグレードすることをお勧めします。
- ノードの監視
- OSD ノード
- Ceph Object Gateway ノード
- その他すべての Ceph クライアントノード
Red Hat Ceph Storage 3 では、新しいデーモン Ceph Manager (ceph-mgr) が導入されています。モニターノードをアップグレードした後、ceph-mgr をインストールします。
Red Hat Ceph Storage 2 を 3 にアップグレードするには、2 つの方法があります。
- Red Hat のコンテンツ配信ネットワーク (CDN) の使用
- Red Hat が提供する ISO イメージファイルを使用する
ストレージクラスターをアップグレードした後、レガシーチューナブルを使用して CRUSH マップに関するヘルス警告を出すことができます。詳細は、Red Hat Ceph Storage3 のストレージ戦略ガイドの CRUSHTunables セクションを参照してください。
例
$ ceph -s
cluster 848135d7-cdb9-4084-8df2-fb5e41ae60bd
health HEALTH_WARN
crush map has legacy tunables (require bobtail, min is firefly)
monmap e1: 1 mons at {ceph1=192.168.0.121:6789/0}
election epoch 2, quorum 0 ceph1
osdmap e83: 2 osds: 2 up, 2 in
pgmap v1864: 64 pgs, 1 pools, 38192 kB data, 17 objects
10376 MB used, 10083 MB / 20460 MB avail
64 active+clean
Red Hat は、すべての Ceph クライアントが Ceph ストレージクラスターと同じバージョンを実行することを推奨しています。
前提条件
アップグレードするクラスターに
exclusive-lock機能を使用する Ceph Block Device イメージが含まれている場合には、全 Ceph Block Device ユーザーにクライアントをブラックリストに登録するパーミッションがあるようにしてください。ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
モニタノードのアップグレード
この項では、Ceph Monitorノードを後のバージョンにアップグレードする手順を説明します。モニターの数は奇数でなければなりません。1 つの Monitor をアップグレードしている間、ストレージクラスターにはクォーラムがあります。
手順
ストレージクラスタの各 Monitor ノードで以下の手順を行います。一度に 1 つの Monitor ノードのみをアップグレードします。
ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 をインストールした場合は、リポジトリーを無効にします。
# subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Red Hat Ceph Storage 3 Monitor リポジトリーを有効にします。
[root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
rootで Monitor プロセスを停止します。構文
# service ceph stop <daemon_type>.<monitor_host_name>
例
# service ceph stop mon.node1
rootで、ceph-monパッケージをアップデートします。# yum update ceph-mon
rootとして、所有者とグループの権限を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/mon # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring # chown ceph:ceph /etc/ceph/ceph.conf # chown ceph:ceph /etc/ceph/rbdmap
注記Ceph Monitor ノードが OpenStack Controller ノードと同じ場所にある場合、Glance および Cinder キーリングファイルは、それぞれ
glanceおよびcinderによって所有されている必要があります。以下に例を示します。# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...
SELinux が強制モードまたは許容モードの場合は、次回の再起動時に SELinux コンテキストのラベルを変更します。
# touch /.autorelabel
警告SELinux はすべてのファイルシステムをトラバースし、誤ってラベル付けされたファイルを修正する必要があるため、再ラベル付けは完了するまでに長い時間がかかる場合があります。ディレクトリーの再ラベル付けを除外するには、再起動する前にディレクトリーを
/etc/selinux/fixfiles_exclude_dirsファイルに追加します。rootとして、ceph-monプロセスを有効にします。# systemctl enable ceph-mon.target # systemctl enable ceph-mon@<monitor_host_name>
rootで Monitor ノードを再起動します。# shutdown -r now
Monitor ノードが起動したら、次の Monitor ノードに移動する前に、Ceph ストレージクラスターの状態を確認します。
# ceph -s
G.1. Ceph Manager の手動インストール
通常、Ansible 自動化ユーティリティーは、Red Hat Ceph Storage クラスターをデプロイする際に Ceph Manager デーモン (ceph-mgr) をインストールします。ただし、Ansible を使用して Red Hat Ceph Storage を管理しない場合は、Ceph Manager を手動でインストールすることができます。Red Hat は、Ceph Manager デーモンと Ceph Monitor デーモンを同じノードに配置することを推奨します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター
-
rootまたはsudoアクセス -
rhel-7-server-rhceph-3-mon-els-rpmsリポジトリーが有効 -
ファイアウォールを使用している場合は、パブリックネットワーク上でポート
6800-7300を開く
手順
ceph-mgr がデプロイされるノードで、root ユーザーまたは sudo ユーティリティーで以下のコマンドを使用します。
ceph-mgrパッケージをインストールします。[root@node1 ~]# yum install ceph-mgr
/var/lib/ceph/mgr/ceph-hostname/ディレクトリーを作成します。mkdir /var/lib/ceph/mgr/ceph-hostnamehostname を、
ceph-mgrデーモンがデプロイされるノードのホスト名に置き換えます。以下に例を示します。[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
新しく作成されたディレクトリーで、
ceph-mgrデーモンの認証キーを作成します。[root@node1 ~]# ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
/var/lib/ceph/mgr/ディレクトリーの所有者とグループをceph:cephに変更します。[root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
ceph-mgrターゲットを有効にします。[root@node1 ~]# systemctl enable ceph-mgr.target
ceph-mgrインスタンスを有効にして開始します。systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
hostname を、
ceph-mgrをデプロイするノードのホスト名に置き換えます。以下に例を示します。[root@node1 ~]# systemctl enable ceph-mgr@node1 [root@node1 ~]# systemctl start ceph-mgr@node1
ceph-mgrデーモンが正常に起動していることを確認します。ceph -s
出力には、
services:セクションの下に以下の行と同様の行が含まれます。mgr: node1(active)
-
追加の
ceph-mgrデーモンをインストールして、現在のアクティブなデーモンに障害が発生した場合にアクティブになるスタンバイデーモンとして機能します。
OSD ノードのアップグレード
この項では、Ceph OSD ノードを後のバージョンにアップグレードする手順を説明します。
前提条件
OSD ノードをアップグレードすると、OSD が停止または再起動する可能性があるため、一部の配置グループがデグレードされます。Ceph がリカバリープロセスを開始しないようにするには、Monitor ノードで、noout および norebalance OSD フラグを設定します。
[root@monitor ~]# ceph osd set noout [root@monitor ~]# ceph osd set norebalance
手順
ストレージクラスタの各 OSD ノードで以下の手順を行います。一度に 1 つの OSD ノードのみをアップグレードします。Red Hat Ceph Storage 2.3 に対して ISO ベースのインストールが実行された場合は、この最初のステップをスキップしてください。
rootで、Red Hat Ceph Storage 2 のリポジトリーを無効にします。# subscription-manager repos --disable=rhel-7-server-rhceph-2-osd-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Red Hat Ceph Storage 3 OSD リポジトリーを有効にします。
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
rootとして、実行中の OSD プロセスをすべて停止します。構文
# service ceph stop <daemon_type>.<osd_id>
例
# service ceph stop osd.0
rootとして、ceph-osdパッケージを更新します。# yum update ceph-osd
rootとして、新しく作成されたディレクトリーおよびファイルで所有者とグループのアクセス権を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/osd # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown -R ceph:ceph /etc/ceph
注記次の
findコマンドを使用すると、多数のディスクがある Ceph ストレージクラスターでchownコマンドを並行して使用することにより、所有権を変更するプロセスが速くなる可能性があります。# find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
SELinux が強制モードまたは許可モードに設定されている場合は、次の再起動のためにファイルに SELinux コンテキストの再ラベル付けを設定します。
# touch /.autorelabel
警告SELinux はすべてのファイルシステムをトラバースし、誤ってラベル付けされたファイルを修正する必要があるため、再ラベル付けは完了するまでに長い時間がかかります。ディレクトリーの再ラベル付けを除外するには、再起動する前にディレクトリーを
/etc/selinux/fixfiles_exclude_dirsファイルに追加します。注記配置グループ (PG) あたりのオブジェクト数が多い環境では、ディレクトリーの列挙速度が低下し、パフォーマンスに悪影響を及ぼします。これは、SELinux コンテキストを検証する xattr クエリが追加されたことが原因です。マウント時にコンテキストを設定すると、コンテキストに対する xattr クエリが削除され、特に低速のディスクでの全体的なディスクパフォーマンスが向上します。
/etc/ceph/ceph.confファイルの[osd]セクションに次の行を追加します。+
osd_mount_options_xfs=rw,noatime,inode64,context="system_u:object_r:ceph_var_lib_t:s0"
rootとして、カーネルからデバイスイベントを再生します。# udevadm trigger
rootとして、ceph-osdプロセスを有効にします。# systemctl enable ceph-osd.target # systemctl enable ceph-osd@<osd_id>
rootとして、OSD ノードを再起動します。# shutdown -r now
次の OSD ノードに移動します。
注記nooutフラグとnorebalanceフラグが設定されている場合、ストレージクラスターはHEALTH_WARN状態になります。$ ceph health HEALTH_WARN noout,norebalance flag(s) set
Ceph Storage Cluster のアップグレードが完了したら、以前に設定した OSD フラグの設定を解除し、ストレージクラスターのステータスを確認します。
モニターノードで、すべての OSD ノードがアップグレードされた後、noout フラグとnorebalance フラグの設定を解除します。
# ceph osd unset noout # ceph osd unset norebalance
さらに、ceph osd require-osd-release <release> コマンドを実行します。このコマンドにより、Red Hat Ceph Storage 2.3 を搭載した OSD をストレージクラスターに追加できなくなります。このコマンドを実行しない場合、ストレージステータスは HEALTH_WARN になります。
# ceph osd require-osd-release luminous
関連情報
- ストレージクラスターに新しい OSD を追加してストレージ容量を拡張するには、Red Hat Ceph Storage3 の 管理ガイド の OSD の追加 セクションを参照してください。
Ceph Object Gateway ノードのアップグレード
このセクションでは、Ceph Object Gateway ノードを新しいバージョンにアップグレードする手順について説明します。
前提条件
- Red Hat は、HAProxy などのロードバランサーの背後に Ceph Object Gateway を配置することをお勧めします。ロードバランサーを使用する場合は、リクエストが処理されなくなったら、ロードバランサーから Ceph Object Gateway を削除します。
rgw_region_root_poolパラメーターで指定されたリージョンプールのカスタム名を使用する場合は、Ceph 構成ファイルの[global]セクションにrgw_zonegroup_root_poolパラメーターを追加します。rgw_zonegroup_root_poolの値をrgw_region_root_poolと同じになるように設定します。次に例を示します。[global] rgw_zonegroup_root_pool = .us.rgw.root
手順
ストレージクラスター内の各 Ceph Object Gateway ノードで次の手順を実行します。一度に 1 つのノードのみをアップグレードします。
オンラインリポジトリーを使用して Red Hat Ceph Storage をインストールした場合は、2 つのリポジトリーを無効にします。
# subscription-manager repos --disable=rhel-7-server-rhceph-2.3-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
Ceph Object Gateway プロセス (
ceph-radosgw) を停止します。# service ceph-radosgw stop
ceph-radosgwパッケージを更新します。# yum update ceph-radosgw
新しく作成された
/var/lib/ceph/radosgw/および/var/log/ceph/ディレクトリーとそれらのコンテンツに対する所有者とグループの権限をcephに変更します。# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph
SELinux が強制モードまたは許容モードで実行するように設定されている場合は、次回の起動時に SELinux コンテキストのラベルを変更するように指示します。
# touch /.autorelabel
重要SELinux はすべてのファイルシステムをトラバースし、誤ってラベル付けされたファイルを修正する必要があるため、再ラベル付けは完了するまでに長い時間がかかります。ディレクトリーの再ラベル付けを除外するには、再起動する前にディレクトリーを
/etc/selinux/fixfiles_exclude_dirsファイルに追加します。ceph-radosgwプロセスを有効にします。# systemctl enable ceph-radosgw.target # systemctl enable ceph-radosgw@rgw.<hostname>
<hostname>を Ceph Object Gateway ホストの名前 (gateway-nodeなど) に置き換えます。# systemctl enable ceph-radosgw.target # systemctl enable ceph-radosgw@rgw.gateway-node
Ceph Object Gateway ノードを再起動します。
# shutdown -r now
- ロードバランサーを使用する場合は、Ceph Object Gateway ノードをロードバランサーに追加し直します。
関連項目
Ceph クライアントノードのアップグレード
Ceph のクライアントは
- Ceph ブロックデバイス
- OpenStack Nova コンピュートノード
- QEMU/KVM ハイパーバイザー
- Ceph クライアント側ライブラリーを使用するカスタムアプリケーション
Red Hat は、すべての Ceph クライアントが Ceph ストレージクラスターと同じバージョンを実行することを推奨しています。
前提条件
- パッケージのアップグレード中に Ceph クライアントノードに対するすべての I/O 要求を停止して、予期しないエラーが発生しないようにします
手順
ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 クライアントをインストールした場合は、リポジトリーを無効にします。
# subscription-manager repos --disable=rhel-7-server-rhceph-2-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
注記Red Hat Ceph Storage 2 クライアントに対して ISO ベースのインストールが実行された場合は、この最初のステップをスキップしてください。
クライアントノードで、Red Hat Ceph Storage Tools 3 リポジトリーを有効にします。
[root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
クライアントノードで、
ceph-commonパッケージを更新します。# yum update ceph-common
ceph-common パッケージをアップグレードした後、Ceph クライアントサイドライブラリーに依存するアプリケーションを再起動します。
QEMU/KVM インスタンスを実行している OpenStack Nova コンピュートノードをアップグレードする場合や、専用の QEMU/KVM クライアントを使用する場合には、インスタンスを再起動しても機能しないため、QEMU/KVM インスタンスを停止して起動してください。