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 ノードのみをアップグレードします。

  1. ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 をインストールした場合は、リポジトリーを無効にします。

    1. 以下の行が /etc/apt/sources.list または /etc/apt/sources.list.d/ceph.list ファイルにある場合は、行の先頭にハッシュ記号 (#) を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。

      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer
      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
    2. 以下のファイルを /etc/apt/sources.list.d/ ディレクトリーから削除してください。

      Installer.list
      Tools.list
  2. Red Hat Ceph Storage 3 Monitor リポジトリーを有効にします。

    $ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/MON $(lsb_release -sc) main | tee /etc/apt/sources.list.d/MON.list'
    $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
    $ sudo apt-get update
  3. root で Monitor プロセスを停止します。

    構文

    $ sudo stop ceph-mon id=<monitor_host_name>

    $ sudo stop ceph-mon id=node1

  4. root で、ceph-mon パッケージをアップデートします。

    $ sudo apt-get update
    $ sudo apt-get dist-upgrade
    $ sudo apt-get install ceph-mon
    1. Red Hat の最新バージョンがインストールされていることを確認します。

      $ dpkg -s ceph-base | grep Version
      Version: 10.2.2-19redhat1trusty
  5. 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
    ...
  6. 不要になったパッケージを削除します。

    $ sudo apt-get purge ceph ceph-osd
  7. root として、カーネルからデバイスイベントを再生します。

    # udevadm trigger
  8. root として、ceph-mon プロセスを有効にします。

    $ sudo systemctl enable ceph-mon.target
    $ sudo systemctl enable ceph-mon@<monitor_host_name>
  9. root で Monitor ノードを再起動します。

    # shutdown -r now
  10. 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 ユーティリティーで以下のコマンドを使用します。

  1. ceph-mgr パッケージをインストールします。

    [user@node1 ~]$ sudo apt-get install ceph-mgr
  2. /var/lib/ceph/mgr/ceph-hostname/ ディレクトリーを作成します。

    mkdir /var/lib/ceph/mgr/ceph-hostname

    hostname を、ceph-mgr デーモンがデプロイされるノードのホスト名に置き換えます。以下に例を示します。

    [user@node1 ~]$ sudo mkdir /var/lib/ceph/mgr/ceph-node1
  3. 新しく作成されたディレクトリーで、ceph-mgr デーモンの認証キーを作成します。

    [user@node1 ~]$ sudo ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
  4. /var/lib/ceph/mgr/ ディレクトリーの所有者とグループを ceph:ceph に変更します。

    [user@node1 ~]$ sudo chown -R ceph:ceph /var/lib/ceph/mgr
  5. ceph-mgr ターゲットを有効にします。

    [user@node1 ~]$ sudo systemctl enable ceph-mgr.target
  6. ceph-mgr インスタンスを有効にして開始します。

    systemctl enable ceph-mgr@hostname
    systemctl start ceph-mgr@hostname

    hostname を、ceph-mgr をデプロイするノードのホスト名に置き換えます。以下に例を示します。

    [user@node1 ~]$ sudo systemctl enable ceph-mgr@node1
    [user@node1 ~]$ sudo systemctl start ceph-mgr@node1
  7. ceph-mgr デーモンが正常に起動していることを確認します。

    ceph -s

    出力には、services: セクションの下に以下の行と同様の行が含まれます。

        mgr: node1(active)
  8. 追加の 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 ベースのインストールが実行された場合は、この最初のステップをスキップしてください。

  1. root で、Red Hat Ceph Storage 2 のリポジトリーを無効にします。

    1. 以下の行が /etc/apt/sources.list または /etc/apt/sources.list.d/ceph.list ファイルにある場合は、行の先頭にハッシュ記号 (#) を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。

      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer
      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
    2. 以下のファイルを /etc/apt/sources.list.d/ ディレクトリーから削除してください。

      Installer.list
      Tools.list
      注記

      APT ソースファイル内の Red Hat Ceph Storage2 への参照をすべて削除します。Red Hat Ceph Storage 2 に対して ISO ベースのインストールが実行された場合は、この最初のステップをスキップしてください。

  2. Red Hat Ceph Storage 3 OSD リポジトリーを有効にします。

    $ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/OSD $(lsb_release -sc) main | tee /etc/apt/sources.list.d/OSD.list'
    $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
    $ sudo apt-get update
  3. root として、実行中の OSD プロセスをすべて停止します。

    構文

    $ sudo stop ceph-osd id=<osd_id>

    $ sudo stop ceph-osd id=0

  4. root として、ceph-osd パッケージを更新します。

    $ sudo apt-get update
    $ sudo apt-get dist-upgrade
    $ sudo apt-get install ceph-osd
    1. Red Hat の最新バージョンがインストールされていることを確認します。

      $ dpkg -s ceph-base | grep Version
      Version: 10.2.2-19redhat1trusty
  5. 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
  6. 不要になったパッケージを削除します。

    $ sudo apt-get purge ceph ceph-mon
    注記

    ceph パッケージがメタパッケージになりました。Monitor ノードでは ceph-mon パッケージのみが必要であり、OSD ノードでは ceph-osd パッケージのみが必要であり、RADOSGateway ノードでは ceph-radosgw パッケージのみが必要です。

  7. root として、カーネルからデバイスイベントを再生します。

    # udevadm trigger
  8. root として、ceph-osd プロセスを有効にします。

    $ sudo systemctl enable ceph-osd.target
    $ sudo systemctl enable ceph-osd@<osd_id>
  9. root として、OSD ノードを再起動します。

    # shutdown -r now
  10. 次の 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 は、これらのアップグレード手順を続行する前に、システムをバックアップすることをお勧めします。

前提条件

  • 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 つのノードのみをアップグレードします。

  1. オンラインリポジトリーを使用して Red Hat Ceph Storage をインストールした場合は、2 つのリポジトリーを無効にします。

    1. /etc/apt/sources.list ファイルと /etc/apt/sources.list.d/ceph.list ファイルの次の行をコメントアウトします。

      # deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer
      # deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
    2. /etc/apt/sources.list.d/ ディレクトリーから次のファイルを削除します。

      # rm /etc/apt/sources.list.d/Installer.list
      # rm /etc/apt/sources.list.d/Tools.list
  2. Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。

    $ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list'
    $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
    $ sudo apt-get update
  3. Ceph Object Gateway プロセス (ceph-radosgw) を停止します。

    $ sudo stop radosgw id=rgw.<hostname>

    <hostname> を Ceph Object Gateway ホストの名前 (gateway-node など) に置き換えます。

    $ sudo stop radosgw id=rgw.node
  4. ceph-radosgw パッケージを更新します。

    $ sudo apt-get update
    $ sudo apt-get dist-upgrade
    $ sudo apt-get install radosgw
  5. 新しく作成された /var/lib/ceph/radosgw/ および /var/log/ceph/ ディレクトリーとそれらのコンテンツに対する所有者とグループの権限を ceph に変更します。

    # chown -R ceph:ceph /var/lib/ceph/radosgw
    # chown -R ceph:ceph /var/log/ceph
  6. 不要になったパッケージを削除します。

    $ sudo apt-get purge ceph
    注記

    ceph パッケージがメタパッケージになりました。Monitor、OSD、Ceph Object Gatewayの各ノードでは、ceph-monceph-osdceph-radosgw パッケージのみが必要です。

  7. ceph-radosgw プロセスを有効にします。

    $ sudo systemctl enable ceph-radosgw.target
    $ sudo systemctl enable ceph-radosgw@rgw.<hostname>

    <hostname> を Ceph Object Gateway ホストの名前 (gateway-node など) に置き換えます。

    $ sudo systemctl enable ceph-radosgw.target
    $ sudo systemctl enable ceph-radosgw@rgw.gateway-node
  8. Ceph Object Gateway ノードを再起動します。

    # shutdown -r now
  9. ロードバランサーを使用する場合は、Ceph Object Gateway ノードをロードバランサーに追加し直します。

関連項目

Ceph クライアントノードのアップグレード

Ceph のクライアントは

  • Ceph ブロックデバイス
  • OpenStack Nova コンピュートノード
  • QEMU/KVM ハイパーバイザー
  • Ceph クライアント側ライブラリーを使用するカスタムアプリケーション

Red Hat は、すべての Ceph クライアントが Ceph ストレージクラスターと同じバージョンを実行することを推奨しています。

前提条件

  • パッケージのアップグレード中に Ceph クライアントノードに対するすべての I/O 要求を停止して、予期しないエラーが発生しないようにします

手順

  1. ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 クライアントをインストールした場合は、リポジトリーを無効にします。

    1. 以下の行が /etc/apt/sources.list または /etc/apt/sources.list.d/ceph.list ファイルにある場合は、行の先頭にハッシュ記号 (#) を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。

      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer
      deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
    2. 以下のファイルを /etc/apt/sources.list.d/ ディレクトリーから削除してください。

      Installer.list
      Tools.list
      注記

      APT ソースファイル内の Red Hat Ceph Storage2 への参照をすべて削除します。

  2. クライアントノードで、Red Hat Ceph Storage Tools 3 リポジトリーを有効にします。

    $ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list'
    $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
    $ sudo apt-get update
  3. クライアントノードで、ceph-common パッケージを更新します。

    $ sudo apt-get install ceph-common

ceph-common パッケージをアップグレードした後、Ceph クライアントサイドライブラリーに依存するアプリケーションを再起動します。

注記

QEMU/KVM インスタンスを実行している OpenStack Nova コンピュートノードをアップグレードする場合や、専用の QEMU/KVM クライアントを使用する場合には、インスタンスを再起動しても機能しないため、QEMU/KVM インスタンスを停止して起動してください。