このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。

1.4 アップグレード

Ceph Storage for Oracle Linuxリリース1.0から現在のリリースへのオフライン・アップグレードに対するサポートは制限されています。 アップグレード完了後、現在のデプロイメントに固有の追加構成がいくつか必要になる場合があります。

アップグレードが必要な場合には、コンポーネントのアップグレードを次の順序で実行することをお薦めします。

  1. Ceph Deployパッケージ

  2. Cephモニター

  3. Ceph OSDデーモン

  4. Ceph Metadata Server

  5. Ceph Object Gateway

特定のタイプのデーモンをすべて一緒にアップグレードして、それらがすべて同じリリースであることを保証し、また、現在のリリースの新機能を構成または使用する前に、クラスタ内のすべてのコンポーネントがアップグレードされているようにすることをお薦めします。

次の手順では、ストレージ・クラスタのアップグレードを実行するために必要な、いくつかの一般的手順の概要を示します。 アップグレード中は、クラスタをオフラインにする必要があります。

  1. アップグレード・プロセスを開始するには、Ceph Storage Clusterに属しているすべてのシステムのYum構成を更新して、適切なYumリポジトリおよびチャネルにアクセスできるようにする必要があります(1.2項 「Cephパッケージへのアクセスの有効化」を参照)。

  2. 環境内のデプロイメント・ノードでCeph Deployパッケージをアップグレードします。

    # yum upgrade ceph-deploy
  3. 環境内の別のノードでCephサービスが実行されている場合は、ノードのCephサービスを停止します。

    # /etc/init.d/ceph stop mon
    # /etc/init.d/ceph stop osd
    # /etc/init.d/ceph stop mds

    クラスタのステータスをチェックして実行されていないことを確認します。

    # ceph status
  4. Ceph Deployを使用し、ストレージ・クラスタ内の各ノード上でパッケージ更新をインストールします。

    # ceph-deploy install ceph-node{1..4}
    注意

    アップストリームのドキュメントには、--releaseスイッチの記述があり、アップデートするリリースを制御できることが示唆されていますが、このスイッチをOracle Linux環境で使用した場合には効果がなく、パッケージはYum経由で最新のバージョンがインストールされます。

  5. ノードで、/etc/ceph/ceph.confの最後に次の行を追加します。

    rbd default feature = 3
    setuser match path = /var/lib/ceph/$type/$cluster-$id
  6. 各ノードで、cephユーザーとグループにCeph用のディレクトリの所有権があることを確認します。

    # chown -R ceph:ceph /var/lib/ceph
    # chown -R ceph:ceph /etc/ceph
  7. 各Cephモニター・ノードで、Cephモニター・サービスのsystemdサービスを手動で有効にする必要があります。 次に例を示します。

    # systemctl enable ceph-mon@ceph-node1.service

    サービスを有効にしたら、そのサービスを起動して状態をチェックし、正常に動作していることを確認します。

    # systemctl start ceph-mon@ceph-node1.service
    # systemctl status ceph-mon@ceph-node1.service
  8. クラスタ内の管理ノードからnooutオプションを設定して、アップグレード時にCRUSHアルゴリズムによってクラスタのリバランスが試行されないようにします。

    # ceph osd set noout

    また、クラスタ内のすべてのOSDをdownとしてマークします。

    # ceph osd down seq 0 1000
  9. Ceph OSDデーモンが実行されている各ノードで、systemdサービスを有効にして再起動し、そのステータスをチェックしてサービスが正常に動作していることを確認します。

    # systemctl enable ceph-osd@0.service
    # systemctl restart ceph-osd@0.service
    # systemctl status ceph-osd@0.service
  10. ceph-osdサービスが有効化されたら、各Ceph OSDノードを再起動します。

  11. クラスタ内の管理ノード(通常はデプロイメント・ノードと同じ)から、次のコマンドを実行してOSDインスタンスを調整します。

    # ceph osd crush tunables default

    OSDの調整可能なプロファイルをデフォルト設定に更新するには、Cephに接続しているどのCephクライアントも最新の状態であることが必要です。 以前のリリースに接続する設計の古いCephクライアントは、調整されたCephデプロイメントとの対話が困難になる可能性があります。

  12. 次のコマンドを使用して、クラスタのステータスを確認します。

    # ceph status

    クラスタの状態がHEALTH_OKに設定されていない場合は、nooutオプションの設定を解除して、クラスタのバランスを調整するCRUSHアルゴリズムの機能を再度有効にします。

    # ceph osd unset noout
  13. Ceph MDSデーモンが実行されている各ノードで、systemdサービスを有効にして再起動します。

    # systemctl enable ceph-mds@ceph-node1.service
    # systemctl start ceph-mds@ceph-node1.service
  14. ノード上で/etc/ceph/ceph.confsetuser match pathパラメータをコメント・アウトするか削除します。

    # setuser match path = /var/lib/ceph/$type/$cluster-$id

    このパラメータが必要なのは、アップグレード時のみです。 有効なままにしておくと、Ceph Object Gatewayサービス(radosgw)の起動時に問題が生じる可能性があります。

  15. Ceph Object Gatewayサービスが実行されている各ノードで、次の手順を実行してアップグレードを完了します。

    1. レガシーのCeph Object Gatewayサービスのインスタンスが動作している場合は停止します。

      # /etc/init.d/ceph-radosgw stop
    2. 動作中のApacheインスタンスを停止して無効にし、ブート時に起動しないようにします。

      # systemctl stop httpd
      # systemctl disable httpd
    3. エディタで/etc/ceph.confを開き、Ceph Object Gatewayの既存のCeph構成を編集します。

      以前のリリースのゲートウェイ構成には、次のような既存のエントリがあります。

      [client.radosgw.gateway]
      host = ceph-node4
      keyring = /etc/ceph/ceph.client.radosgw.keyring
      rgw socket path = /var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
      log file = /var/log/radosgw/client.radosgw.gateway.log
      rgw print continue = false

      このエントリを変更して、rgw socket pathパラメータとrgw print continueパラメータをコメント・アウトし、Civetweb Webサーバーで使用するポートを定義するrgw frontendsパラメータのエントリを追加します。 次に例を示します。

      [client.radosgw.gateway]
      host = ceph-node4
      keyring = /etc/ceph/ceph.client.radosgw.keyring
      # rgw socket path = /var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
      log file = /var/log/radosgw/client.radosgw.gateway.log
      # rgw print continue = false
      rgw_frontends = civetweb port=80
      ヒント

      構成エントリ名をメモします。 この例では、client.radosgw.gatewayです。 これを使用して、この構成用に有効にして実行する適切なsystemdサービスを指定します。 この例では、ゲートウェイ名はgatewayです。

    4. ゲートウェイ構成のsystemdサービスとターゲットを有効にして再起動します。 次に例を示します。

      # systemctl enable ceph-radosgw@radosgw.gateway.service
      # systemctl enable ceph-radosgw.target
      # systemctl restart ceph-radosgw@radosgw.gateway.service
      重要

      サービスに対して正しいゲートウェイ名が指定されていることを確認します。 これは、構成内の名前と一致する必要があります。 この例では、ゲートウェイ名はgatewayです。

    5. ゲートウェイ・サービスの実行中ステータスをチェックし、ゲートウェイが実行中でエラーがないことを確認します。

      # systemctl status ceph-radosgw@radosgw.gateway.service
    6. クライアントがゲートウェイにアクセスして既存のバケットのリストを表示できることを確認します。 サンプルのテスト・スクリプトは、1.6.1項 「単純なCeph Object Gateway」を参照してください。