Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

Ubuntu のインストールガイド

Red Hat Ceph Storage 3

Red Hat Ceph Storage の Ubuntu へのインストール

概要

本書では、AMD64 および Intel 64 のアーキテクチャーで実行している Ubuntu 16.04 に Red Hat Ceph Storage をインストールする方法を説明します。

第1章 Red Hat Ceph Storage とは

Red Hat Ceph Storage は、スケーラブルでオープンなソフトウェア定義のストレージプラットフォームで、Ceph ストレージシステムの最も安定したバージョンと Ceph 管理プラットフォーム、デプロイメントユーティリティー、およびサポートサービスを組み合わせたものです。

Red Hat Ceph Storage は、クラウドインフラストラクチャーおよび Web スケールオブジェクトストレージ用に設計されています。Red Hat Ceph Storage クラスターは、以下のタイプのノードで構成されます。

Red Hat Ceph Storage Ansible 管理ノード

このタイプのノードは、以前のバージョンの Red Hat Ceph Storage に行われた従来の Ceph 管理ノードとして機能します。このタイプのノードでは、以下の機能が提供されます。

  • ストレージクラスターの一元管理
  • Ceph 設定ファイルおよびキー
  • 必要に応じて、セキュリティー上の理由からインターネットにアクセスできないノードに Ceph をインストールするためのローカルリポジトリー
ノードの監視
各モニターノードは、クラスターマップのマスターコピーを維持する monitor デーモン (ceph-mon) を実行します。クラスターマップにはクラスタートポロジーが含まれます。Ceph クラスターに接続するクライアントは、モニターからクラスターマップの現在のコピーを取得します。これにより、クライアントがクラスターへのデータの読み取りおよび書き込みが可能になります。
重要

Ceph は 1 つのモニターで実行できますが、実稼働クラスターで高可用性を確保するためには、Red Hat は少なくとも 3 つのモニターノードを持つデプロイメントのみをサポートします。Red Hat は、750 個の OSD を超えるストレージクラスターに合計 5 つの Ceph Monitor をデプロイすることを推奨します。

OSD ノード

各 Object Storage Device (OSD) ノードは Ceph OSD デーモン (ceph-osd) を実行し、ノードに割り当てられている論理ディスクと相互作用します。Ceph は、この OSD ノードにデータを保存します。

Ceph は、非常に少数の OSD ノード (デフォルトは 3) で実行できますが、実稼働クラスターは、ストレージクラスターで中程度のスケール (たとえば OSD が 50 個) で始まります。理想的には、Ceph クラスターに複数の OSD ノードがあり、CRUSH マップを作成して分離された障害ドメインを許可します。

MDS ノード
各 Metadata Server (MDS) ノードは、Ceph ファイルシステム (CephFS) に保存されているファイルに関連する MDS デーモン (ceph-mds) を実行します。MDS デーモンは、共有クラスターへのアクセスも調整します。
Object Gateway ノード

Ceph Object Gateway ノードは、Ceph RADOS Gateway デーモン (ceph-radosgw) を実行し、Ceph Storage クラスターへの RESTful ゲートウェイを使用するアプリケーションを提供する librados 上に構築されたオブジェクトストレージインターフェースです。Ceph Object Gateway は、以下の 2 つのインターフェースをサポートします。

S3

Amazon S3 RESTful API の大規模なサブセットと互換性のあるインターフェースでオブジェクトストレージ機能を提供します。

Swift

OpenStack Swift API の大規模なサブセットと互換性のあるインターフェースでオブジェクトストレージ機能を提供します。

Ceph アーキテクチャーの詳細は、『Red Hat Ceph Storage 3 のアーキテクチャーガイド』を参照してください

推奨される最小ハードウェアについては、『Red Hat Ceph Storage Hardware Selection Guide 3』を参照してください

第2章 Red Hat Ceph Storage のインストール要件

図2.1 前提条件のワークフロー

Ceph Installation Guide 459707 0818 01

Red Hat Ceph Storage(RHCS)をインストールする前に、以下の要件を確認し、それに応じて各 Monitor、OSD、メタデータサーバー、およびクライアントノードを準備します。

2.1. 前提条件

2.2. Red Hat Ceph Storage のインストールの要件チェックリスト

タスク必須セクション推奨事項

オペレーティングシステムのバージョンの確認

「Red Hat Ceph Storage のオペレーティングシステム要件」

 

Ceph ソフトウェアリポジトリーの有効化

「Red Hat Ceph Storage リポジトリーの有効化」

 

OSD ノードでの RAID コントローラーの使用

「OSD ノードで RAID コントローラーを使用する際の考慮事項(オプション)」

RAID コントローラーでライトバックキャッシュを有効にすると、OSD ノードの小規模な I/O 書き込みスループットが増大する場合があります。

ネットワークの設定

「Red Hat Ceph Storage のネットワーク設定の確認」

少なくとも、パブリックネットワークが必要です。ただし、クラスター通信用のプライベートネットワークが推奨されます。

ファイアウォールの設定

「Red Hat Ceph Storage のファイアウォールの設定」

ファイアウォールは、ネットワークの信頼レベルを大きくすることができます。

Ansible ユーザーの作成

sudo アクセスのある Ansible ユーザーの作成」

すべての Ceph ノードで Ansible ユーザーを作成する必要があります。

パスワードを使用しない SSH の有効化

「Ansible のパスワードなしの SSH の有効化」

Ansible で必須。

注記

デフォルトでは、ceph-ansible は要件として NTP をインストールします。NTP をカスタマイズする場合は、『Red Hat Ceph Storage の手動インストール』の「Red Hat Ceph Storage のネットワークタイムプロトコルの設定 」を参照して、Ceph と正しく機能するように NTP がどのように設定する必要があるかどうかを理解してください。

2.3. Red Hat Ceph Storage のオペレーティングシステム要件

Red Hat Ceph Storage 3 では、AMD64 や Intel 64 アーキテクチャーなどの同一のバージョン(AMD64 または Intel 64 アーキテクチャー)を持つ Ubuntu 16.04.04 が、ストレージクラスターの全 Ceph ノードで実行されます。

重要

Red Hat は、異種オペレーティングシステムまたはバージョンのクラスターをサポートしません。

関連情報

要件チェックリストに戻ります

2.4. Red Hat Ceph Storage リポジトリーの有効化

Red Hat Ceph Storage をインストールする前に、インストール方法を選択する必要があります。Red Hat Ceph Storage では、以下の 2 つのインストール方法がサポートされます。

  • コンテンツ配信ネットワーク (CDN)

    インターネットに直接接続可能な Ceph ノードを持つ Ceph Storage クラスターの場合は、Red Hat Subscription Manager を使用して必要な Ceph リポジトリーを有効にします。

  • ローカルリポジトリー

    セキュリティー対策がインターネットへのアクセスを妨げている Ceph Storage クラスターの場合、ISO イメージとして配信される単一のソフトウェアビルドから Red Hat Ceph Storage 3.3 をインストールします。これにより、ローカルリポジトリーをインストールすることができます。

RHCS ソフトウェアリポジトリーへのアクセスには、Red Hat カスタマーポータルで有効な Red Hat ログインおよびパスワードが必要です。

重要

https://rhcs.download.redhat.com のクレデンシャルを取得するには、アカウントマネージャーにお問い合わせください。

前提条件

  • 有効なカスタマーサブスクリプション
  • CDN インストールの場合、RHCS ノードはインターネットに接続できる必要があります。

Procedure

CDN インストールの場合:

Ansible 管理ノードで、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

ISO インストールの場合:

  1. Red Hat カスタマーポータルにログインします。
  2. Downloads をクリックして、Software & Download センターに移動します。
  3. Red Hat Ceph Storage エリアで Download Software をクリックして、ソフトウェアの最新バージョンをダウンロードします。

関連情報

要件チェックリストに戻ります。

2.5. OSD ノードで RAID コントローラーを使用する際の考慮事項(オプション)

OSD ノードに 1 ~ 2 GB のキャッシュがインストールされている RAID コントローラーがある場合は、ライトバックキャッシュを有効にすると、I/O 書き込みスループットが向上する可能性があります。ただし、キャッシュは不揮発性である必要があります。

最新の RAID コントローラーは通常、電源喪失イベント時に揮発性メモリーから不揮発性メモリーにドレイン(解放)するのに十分な電力を提供するスーパーバリシャーがあります。電源の復旧後に、特定のコントローラーとそのファームウェアがどのように動作するかを理解することが重要です。

RAID コントローラーによっては、手動の介入が必要になります。ハードドライブは、ディスクキャッシュをデフォルトで有効または無効にすべきかどうかに関わらず、オペレーティングシステムにアドバタイズします。ただし、特定の RAID コントローラーとファームウェアは、このような情報を提供しません。ファイルシステムが破損しないように、ディスクレベルのキャッシュが無効になっていることを確認します。

ライトバックキャッシュを有効にして、各 Ceph OSD データドライブにライトバックを設定して、単一の RAID 0 ボリュームを作成します。

Serial Attached SCSI (SAS) または SATA 接続の Solid-state Drive (SSD) ディスクも RAID コントローラーに存在する場合は、コントローラーとファームウェアが pass-through モードをサポートしているかどうかを確認します。pass-through モードを有効にすると、キャッシュロジックが回避され、通常は高速メディアの待ち時間が大幅に低くなります。

要件チェックリストに戻ります

2.6. Object Gateway で NVMe を使用する際の考慮事項(オプション)

Red Hat Ceph Storage の Object Gateway 機能を使用する計画があり、OSD ノードに NVMe ベースの SSD または SATA SSD がある場合、実稼働用の Ceph Object Gateway で LVM を最適に使用できるようにする手順について 検討してください。これらの手順では、ジャーナルとバケットインデックスを SSD に一緒に配置する特別に設計された Ansible Playbook の使用方法を説明します。これにより、すべてのジャーナルを 1 つのデバイスに配置する場合に比べてパフォーマンスを向上させることができます。NVMe を LVM と使用する情報は、『このインストールガイド』と組み合わせて使用する必要があります。

要件チェックリストに戻ります

2.7. Red Hat Ceph Storage のネットワーク設定の確認

すべての Red Hat Ceph Storage(RHCS)ノードにパブリックネットワークが必要です。Ceph クライアントが Ceph monitor ノードおよび Ceph OSD ノードに到達できるパブリックネットワークにネットワークインターフェースカードが設定されている必要があります。

Ceph がパブリックネットワークとは別のネットワークでハートビート、ピアリング、レプリケーション、および復元を実行できるように、クラスターネットワーク用のネットワークインターフェイスカードがある場合があります。

ネットワークインターフェースを設定し、変更を永続化します。

重要

Red Hat では、パブリックネットワークとプライベートネットワークの両方に単一のネットワークインターフェースカードを使用することは推奨していません。

関連情報

要件チェックリストに戻ります

2.8. Red Hat Ceph Storage のファイアウォールの設定

Red Hat Ceph Storage(RHCS)は iptables サービスを使用します。

Monitor デーモンは、Ceph Storage クラスター内の通信にポート 6789 を使用します。

各 Ceph OSD ノードで、OSD デーモンは範囲 6800-7300 内の複数のポートを使用します。

  • パブリックネットワークを介してクライアントおよびモニターと通信するための 1 つ
  • クラスターネットワーク上で他の OSD にデータを送信する 1 つ (利用可能な場合)。それ以外の場合は、パブリックネットワーク経由でデータを送信します。
  • 可能な場合は、クラスターネットワークを介してハートビートパケットを交換するための 1 つ。それ以外の場合は、パブリックネットワーク経由

Ceph Manager (ceph-mgr) デーモンは、6800-7300 範囲内のポートを使用します。同じノード上で Ceph Monitor と ceph-mgr デーモンを共存させることを検討してください。

Ceph Metadata Server ノード(ceph-mds)は 6800-7300 の範囲でポートを使用します。

Ceph Object Gateway ノードは、デフォルトで 8080 を使用するように Ansible によって設定されます。ただし、デフォルトのポート (例: ポート 80) を変更できます。

SSL/TLS サービスを使用するには、ポート 443 を開きます。

前提条件

  • ネットワークハードウェアが接続されている。

Procedure

root ユーザーとして以下のコマンドを実行します。

  1. すべての Monitor ノードで、パブリックネットワークでポート 6789 を開きます。

    iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 6789 -j ACCEPT
    置き換え
    • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
    • ip_address は、Monitor ノードのネットワークアドレスに置き換えます。
    • netmask_prefix: Classless Inter-domain Routing(CIDR)表記のネットマスクを使用する。

    $ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.11/24 --dport 6789 -j ACCEPT

  2. すべての OSD ノードで、パブリックネットワークでポート 6800-7300 を開きます。

    iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800:7300 -j ACCEPT
    置き換え
    • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
    • ip_address は、OSD ノードのネットワークアドレスに置き換えます。
    • CIDR 表記のネットマスクを使用する netmask_prefix

    $ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800:7300 -j ACCEPT

  3. すべての Ceph Manager(ceph-mgr)ノード(通常は Monitor one ノードと同じノード)で、パブリックネットワークでポート 6800-7300 を開きます。

    iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800:7300 -j ACCEPT
    置き換え
    • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
    • ip_address は、OSD ノードのネットワークアドレスに置き換えます。
    • CIDR 表記のネットマスクを使用する netmask_prefix

    $ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800:7300 -j ACCEPT

  4. すべての Ceph Metadata Server(ceph-mds)ノードで、パブリックネットワーク上のポート 6800 を開きます。

    iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800 -j ACCEPT
    置き換え
    • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
    • ip_address は、OSD ノードのネットワークアドレスに置き換えます。
    • CIDR 表記のネットマスクを使用する netmask_prefix

    $ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800 -j ACCEPT

  5. すべての Ceph Object Gateway ノードで、パブリックネットワーク上の関連するポートを開きます。

    1. デフォルトの Ansible が設定されたポート 8080 を開くには、以下のコマンドを実行します。

      iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 8080 -j ACCEPT
      置き換え
      • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
      • ip_address は、オブジェクトゲートウェイノードのネットワークアドレスに置き換えます。
      • CIDR 表記のネットマスクを使用する netmask_prefix

      $ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 8080 -j ACCEPT

    2. 任意。Ansible を使用して Ceph Object Gateway をインストールし、Ansible が 8080 から使用できるように Ceph Object Gateway を設定(例: ポート 80) を変更した場合、このポートを開きます。

      iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 80 -j ACCEPT
      置き換え
      • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
      • ip_address は、オブジェクトゲートウェイノードのネットワークアドレスに置き換えます。
      • CIDR 表記のネットマスクを使用する netmask_prefix

      $ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 80 -j ACCEPT

    3. 任意。SSL/TLS を使用するには、443 ポートを開きます。

      iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 443 -j ACCEPT
      置き換え
      • パブリックネットワーク上のネットワークインターフェースカードの名前に直面します
      • ip_address は、オブジェクトゲートウェイノードのネットワークアドレスに置き換えます。
      • CIDR 表記のネットマスクを使用する netmask_prefix

      $ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 443 -j ACCEPT

  6. ストレージクラスター内のすべての RHCS ノードで変更を永続化します。

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

      $ sudo apt-get install iptables-persistent
    2. 表示されるターミナル UI で yes を選択し、現在の IPv4 iptables ルールを /etc/iptables/rules.v4 ファイルに保存し、現在の IPv6 iptables ルールを /etc/iptables/rules.v6 ファイルに保存します。

      注記

      iptables-persistent のインストール後に新しい iptables ルールを追加する場合は、新しいルールをルールファイルに追加します

      $ sudo iptables-save >> /etc/iptables/rules.v4

関連情報

要件チェックリストに戻ります

2.9. sudo アクセスのある Ansible ユーザーの作成

Ansible は、ソフトウェアをインストールし、パスワードを要求せずに設定ファイルを作成するための root 権限を持つユーザーとして、すべての Red Hat Ceph Storage (RHCS) ノードにログインできる必要があります。Ansible を使用して Red Hat Ceph Storage クラスターをデプロイおよび設定する際に、ストレージクラスター内のすべてのノードにパスワードなしの root アクセスで Ansible ユーザーを作成する必要があります。

前提条件

  • ストレージクラスター内のすべてのノードへの root または sudo アクセスがある。

Procedure

  1. root ユーザーとして Ceph ノードにログインします。

    ssh root@$HOST_NAME
    置き換え
    • $HOST_NAME は、Ceph ノードのホスト名に置き換えてください。

    # ssh root@mon01

    プロンプトに従い root パスワードを入力します。

  2. 新しい Ansible ユーザーを作成します。

    adduser $USER_NAME
    置き換え
    • $USER_NAME は、Ansible ユーザーの新しいユーザー名に置き換えます。

    $ sudo adduser admin

    プロンプトが表示されたら、このユーザーのパスワードを 2 回入力します。

    重要

    ceph をユーザー名として使用しないでください。ceph ユーザー名は、Ceph デーモン用に予約されます。クラスター全体で統一されたユーザー名を使用すると、使いやすさが向上しますが、侵入者は通常、そのユーザー名をブルートフォース攻撃に使用するため、明白なユーザー名の使用は避けてください。

  3. 新規に作成されたユーザーの sudo アクセスを設定します。

    cat << EOF >/etc/sudoers.d/$USER_NAME
    $USER_NAME ALL = (root) NOPASSWD:ALL
    EOF
    置き換え
    • $USER_NAME は、Ansible ユーザーの新しいユーザー名に置き換えます。

    $ sudo cat << EOF >/etc/sudoers.d/admin
    admin ALL = (root) NOPASSWD:ALL
    EOF

  4. 正しいファイル権限を新しいファイルに割り当てます。

    chmod 0440 /etc/sudoers.d/$USER_NAME
    置き換え
    • $USER_NAME は、Ansible ユーザーの新しいユーザー名に置き換えます。

    $ sudo chmod 0440 /etc/sudoers.d/admin

関連情報

要件チェックリストに戻ります。

2.10. Ansible のパスワードなしの SSH の有効化

Ansible 管理ノードで SSH キーペアを生成し、ストレージクラスター内の各ノードに公開キーを配布して、Ansible がパスワードの入力を求められることなくノードにアクセスできるようにします。

前提条件

Procedure

Ansible 管理ノードから、および Ansible ユーザーとして以下の手順を実行します。

  1. SSH キーペアを生成し、デフォルトのファイル名を受け入れ、パスフレーズを空のままにします。

    [user@admin ~]$ ssh-keygen
  2. 公開鍵をストレージクラスター内のすべてのノードにコピーします。

    ssh-copy-id $USER_NAME@$HOST_NAME
    置き換え
    • $USER_NAME は、Ansible ユーザーの新しいユーザー名に置き換えます。
    • $HOST_NAME は、Ceph ノードのホスト名に置き換えてください。

    [user@admin ~]$ ssh-copy-id admin@ceph-mon01

  3. ~/.ssh/config ファイルを作成し、編集します。

    重要

    ~/.ssh/config ファイルを作成および編集することで 、ansible-playbook コマンドを実行するたびに -u $USER_NAME オプションを指定する必要がありません。

    1. SSH 設定ファイルを作成します

      [user@admin ~]$ touch ~/.ssh/config
    2. 編集する設定ファイルを開きますストレージクラスター内の各ノードのホスト名および ユーザーオプションを設定します

      Host node1
         Hostname $HOST_NAME
         User $USER_NAME
      Host node2
         Hostname $HOST_NAME
         User $USER_NAME
      ...
      置き換え
      • $HOST_NAME は、Ceph ノードのホスト名に置き換えてください。
      • $USER_NAME は、Ansible ユーザーの新しいユーザー名に置き換えます。

      Host node1
         Hostname monitor
         User admin
      Host node2
         Hostname osd
         User admin
      Host node3
         Hostname gateway
         User admin

  4. ~/.ssh/config ファイルに正しいファイルパーミッションを設定します。

    [admin@admin ~]$ chmod 600 ~/.ssh/config

関連情報

要件チェックリストに戻ります

第3章 Red Hat Ceph Storage のデプロイ

本章では、Ansible アプリケーションを使用して Red Hat Ceph Storage クラスターおよびその他のコンポーネントをデプロイする方法を説明します (メタデータサーバーや Ceph Object Gateway など)。

以前のリリースでは、Red Hat は Ubuntu 用の ceph-ansible パッケージを提供していませんでした。Red Hat Ceph Storage バージョン 3 以降では、Ansible 自動化アプリケーションを使用して、Ubuntu ノードから Ceph クラスターをデプロイすることができます。

3.1. 前提条件

3.2. Red Hat Ceph Storage クラスターのインストール

ceph-ansible Playbook と共に Ansible アプリケーションを使用して Red Hat Ceph Storage 3 をインストールします。

実稼働 Ceph ストレージクラスターは、少なくとも 3 つのモニターホスト、および複数の OSD デーモンが含まれる 3 つの OSD ノードから開始します。

ceph storage cluster

前提条件

  • Ansible 管理ノードで、ceph-ansible パッケージをインストールします。

    [user@admin ~]$ sudo apt-get install ceph-ansible

Procedure

特に指示がない限り、Ansible 管理ノードから以下のコマンドを実行します。

  1. Ansible ユーザーとして、ceph-ansible-keys ディレクトリーを作成します。ここで、Ansible は ceph-ansible Playbook で生成される一時的な値を保存します。

    [user@admin ~]$ mkdir ~/ceph-ansible-keys
  2. root で、/etc/ansible/ ディレクトリーの /usr/share/ceph-ansible/group_vars ディレクトリーへのシンボリックリンクを作成します

    [root@admin ~]# ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
  3. /usr/share/ceph-ansible ディレクトリーに移動します。

    [root@admin ~]$ cd /usr/share/ceph-ansible
  4. yml.sample ファイルの新しいコピーを作成します。

    [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 site.yml.sample site.yml
  5. コピーしたファイルを編集します。

    1. group_vars/all.yml ファイルを編集します。コメントを解除する最も一般的な必須パラメーターおよびオプションのパラメーターについては以下の表を参照してください。この表にはすべてのパラメーターが含まれていないことに注意してください。

      重要

      カスタムクラスター名を使用するので、cluster: ceph パラメーターを ceph 以外の値に設定しないでください。

      表3.1 Ansible の一般的な設定

      オプション必須備考

      ceph_origin

      repository または distro または local

      repository 値は、新しいリポジトリーで Ceph をインストールすることを意味します。distro の値は、個別のリポジトリーファイルが追加されず、Linux ディストリビューションに含まれる Ceph のバージョンをすべて取得することを意味します。local の値は、Ceph バイナリーがローカルマシンからコピーされることを意味します。

      ceph_repository_type

      cdn または iso

       

      ceph_rhcs_iso_path

      ISO イメージのパス

      ISO イメージを使用している場合は、yes

       

      ceph_rhcs_cdn_debian_repo

      オンラインの Ubuntu Ceph リポジトリーにアクセスするための認証情報例:https://username:

       

      ceph_rhcs_cdn_debian_repo_version

      新規インストールには /3-release/ を使用します。更新には /3-updates/ を使用します。

       

      monitor_interface

      Monitor ノードがリッスンするインターフェース

      monitor_interface、monitor_address、または monitor_address_block が必要です

       

      monitor_address

      Monitor ノードがリッスンするアドレス

       

      monitor_address_block

      Ceph パブリックネットワークのサブネット

      ノードの IP アドレスが不明であるが、サブネットが分かっている場合に使用します。

      ip_version

      ipv6

      IPv6 アドレス設定を使用している場合は yes

       

      public_network

      Ceph パブリックネットワークの IP アドレスとネットマスク、または IPv6 を使用している場合は対応する IPv6 アドレス

      「Red Hat Ceph Storage のネットワーク設定の確認」

      cluster_network

      Ceph クラスターネットワークの IP アドレスとネットマスク

      いいえ、デフォルトは public_networkです。

      all.yml ファイルの例は以下のようになります。

      ceph_origin: distro
      ceph_repository: rhcs
      ceph_repository_type: cdn
      ceph_rhcs_version: 3
      monitor_interface: eth0
      public_network: 192.168.0.0/24
      注記

      all.yml ファイルで ceph_origindistro に設定してください。これにより、インストールプロセスで正しいダウンロードリポジトリーが使用されるようになります。

      注記

      ceph_rhcs_version オプションを 3 に設定すると、最新バージョンの Red Hat Ceph Storage 3 にプルされます。

      詳細は、all.yml ファイルを参照してください。

    2. group_vars/osds.yml ファイルを編集します。コメントを解除する最も一般的な必須パラメーターおよびオプションのパラメーターについては以下の表を参照してください。この表にはすべてのパラメーターが含まれていないことに注意してください。

      重要

      異なる物理デバイスを使用して、オペレーティングシステムがインストールされているデバイスよりも多くの OSD をインストールします。オペレーティングシステムと OSD 間で同じデバイスを共有すると、パフォーマンスの問題が発生することになります。

      表3.2 OSD Ansible の設定

      オプション必須備考

      osd_scenario

      同じデバイスを write-ahead ロギングデータおよびキー/値データ(BlueStore)またはジャーナル(FileStore)および OSD データとして使用するように共存する

      ログ先行書き込みおよびキー/値データ(BlueStore)またはジャーナルデータ(FileStore)を格納するための SSD、NVMe メディアなどの専用デバイスを使用する非共存

      論理ボリュームマネージャーを使用して OSD データを格納する LVM

      osd_scenario: non-collocated を使用する場合、ceph-ansible は、デバイス内の変数数と dedicated_devices が一致することを想定します。たとえば、デバイスに 10 つのディスクを指定する場合は、dedicated_devices に 10 エントリーを指定する必要があります。

      osd_auto_discovery

      True は OSD を自動的に検出します。

      osd_scenario: collocatedを使用している場合です

      デバイス設定が使用されている場合に使用できません

      devices

      ceph データが保存されるデバイスの一覧

      はい、デバイスの一覧を指定します。

      osd_auto_discovery 設定を使用する場合は使用できません。lvmosd_scenario として使用し、device オプションを設定する場合 、ceph-volume lvm バッチモード は、最適化された OSD 設定を作成します。

      dedicated_devices

      ceph ジャーナルの保存先が共存しない OSD の専用デバイスの一覧

      osd_scenario: non-collocatedの場合に失敗する

      パーティションが分割されていないデバイスである必要があります

      dmcrypt

      True は OSD を暗号化する

      デフォルトは falseです。

      lvm_volumes

      FileStore または BlueStore ディクショナリーの一覧

      osd_scenario: lvm を使用し、ストレージデバイスがデバイスを使用して定義されていない場合はyes です。

      各ディクショナリーには、data キー、journal キー、および data_vg キーが含まれている必要があります。論理ボリュームまたはボリュームグループはすべて、完全パスではなく、名前にする必要があります。data キーおよび journal キーは論理ボリューム (LV) またはパーティションにすることができますが、複数の data 論理ボリュームに 1 つのジャーナルを使用しないでください。data_vg キーは、data 論理ボリューム含むボリュームグループである必要があります。必要に応じて、journal_vg キーを使用して、ジャーナル LV を含むボリュームグループを指定できます (該当する場合)。サポート対象の構成については、以下の例を参照してください。

      osds_per_device

      デバイスごとに作成する OSD 数。

      デフォルトは 1です。

      osd_objectstore

      OSD の Ceph オブジェクトストアタイプ。

      デフォルトは bluestore です。その他のオプションは filestore です。アップグレードに必要です。

      以下は、collocated、non-collocated、および lvm の 3 つの OSD シナリオを使用する場合の osds.yml ファイルの例です。デフォルトの OSD オブジェクトストア形式は、指定されていない場合は BlueStore です。

      collocated

      osd_objectstore: filestore
      osd_scenario: collocated
      devices:
        - /dev/sda
        - /dev/sdb

      non-collocated: BlueStore

      osd_objectstore: bluestore
      osd_scenario: non-collocated
      devices:
       - /dev/sda
       - /dev/sdb
       - /dev/sdc
       - /dev/sdd
      dedicated_devices:
       - /dev/nvme0n1
       - /dev/nvme0n1
       - /dev/nvme1n1
       - /dev/nvme1n1

      この共存しない例では、デバイスごとに 1 つの BlueStore OSD を作成します。この例では、従来のハードドライブ(sda、sdb、sdc、sdd )がオブジェクトデータに使用され、ソリッドステートドライブ(SSD)(SSD)(SSD)(SSD)(/dev/nvme0n1、/dev/nvme1n1) が BlueStore データベースおよび write-ahead ログに使用されます。 この設定は、/dev/nvme0n1 デバイスを持つ /dev/sda デバイスと /dev/sdb デバイスをペアにし、/dev/nvme1n1 デバイスを持つ /dev/sdc および /dev/sdd デバイスをペアしています

      共存しない - FileStore

      osd_objectstore: filestore
      osd_scenario: non-collocated
      devices:
        - /dev/sda
        - /dev/sdb
        - /dev/sdc
        - /dev/sdd
      dedicated_devices:
         - /dev/nvme0n1
         - /dev/nvme0n1
         - /dev/nvme1n1
         - /dev/nvme1n1

      lvm simple

      osd_objectstore: bluestore
      osd_scenario: lvm
      devices:
        - /dev/sda
        - /dev/sdb

      または

      osd_objectstore: bluestore
      osd_scenario: lvm
      devices:
        - /dev/sda
        - /dev/sdb
        - /dev/nvme0n1

      これらのシンプルな設定で、ceph-ansible はバッチモード(ceph-volume lvm batch)を使用して OSD を作成します。

      最初のシナリオでは、devices を従来のハードドライブまたは SSD の場合には、デバイスごとに OSD が 1 つ作成されます。

      2 つ目のシナリオでは、従来のハードドライブと SSD が混在している場合、データは SSD(nvme0n1)上で可能な限り大きなハードディスク(sda、sdb )および BlueStore データベース(block.db)に作成されます。

      LVM 前

      osd_objectstore: filestore
      osd_scenario: lvm
      lvm_volumes:
         - data: data-lv1
           data_vg: vg1
           journal: journal-lv1
           journal_vg: vg2
         - data: data-lv2
           journal: /dev/sda
           data_vg: vg1

      または

      osd_objectstore: bluestore
      osd_scenario: lvm
      lvm_volumes:
        - data: data-lv1
          data_vg: data-vg1
          db: db-lv1
          db_vg: db-vg1
          wal: wal-lv1
          wal_vg: wal-vg1
        - data: data-lv2
          data_vg: data-vg2
          db: db-lv2
          db_vg: db-vg2
          wal: wal-lv2
          wal_vg: wal-vg2

      これらの事前にシナリオの例では、ボリュームグループと論理ボリュームを作成し、事前に作成する必要があります。ceph-ansible によっては作成されません。

      注記

      すべての NVMe SSDs を使用する場合は、osd_scenario: lvm および osds_per_device: 4 のオプションを設定します。詳細は、『Red Hat CephStorage Installation Guide 』の「Configuring OSD Ansible setting for all NVMe Storage for Ubuntu」を参照してください。

      詳細は、osds.yml ファイルのコメントを参照してください

  6. デフォルトで /etc/ansible/hosts にある Ansible インベントリーファイルを編集します。サンプルホストをコメントアウトするのを忘れないようにしてください。

    1. [mons] セクションに Monitor ノードを追加します。

      [mons]
      <monitor-host-name>
      <monitor-host-name>
      <monitor-host-name>
    2. [osds] セクションに OSD ノードを追加します。ノードに連続的な命名がある場合は、範囲の使用を検討してください。

      [osds]
      <osd-host-name[1:10]>
      注記

      新規インストールの OSD の場合、デフォルトのオブジェクトストア形式は BlueStore です。

      オプションで、device パラメーターを使用して OSD ノードが使用するデバイスを指定します。複数のデバイスを一覧表示するには、コンマ区切りリストを使用します。

      [osds]
      <ceph-host-name> devices="[ '<device_1>', '<device_2>' ]"

      以下に例を示します。

      [osds]
      ceph-osd-01 devices="[ '/dev/sdb', '/dev/sdc' ]"
      ceph-osd-02 devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd' ]"

      デバイスを指定しないと、osds.yml ファイルで osd_auto_discovery オプションを true に設定します。

      注記

      devices パラメーターの使用は、OSD が異なる名前を持つデバイスを使用する場合や、デバイスの 1 つが OSD のいずれかで失敗した場合に便利です。

  7. オプションで、ベアメタルまたはコンテナーですべてのデプロイメントについて、ansible- playbook を使用してカスタム CRUSH 階層を作成できます。

    1. Ansible インベントリーファイルを設定します。osd_crush_location パラメーターを使用して、OSD ホストが CRUSH マップの階層に配置する場所を指定します。OSD の場所を指定するには、少なくとも 2 つの CRUSH バケットタイプを指定し、1 つのバケットタイプはホストである必要があります。デフォルトでは、これには、rootdatacenterroomrowpodpdurackchassis および host が含まれます。

      構文

      [osds]
      CEPH_OSD_NAME osd_crush_location="{ 'root': ROOT_BUCKET_', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"

      [osds]
      ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"

    2. crush_rule_config および create_crush_tree パラメーターを True に設定し、デフォルトの CRUSH ルールを使用しない場合は 1 つ以上の CRUSH ルールを作成します。たとえば、HDD デバイスを使用している場合は、以下のようにパラメーターを編集します。

      crush_rule_config: True
      crush_rule_hdd:
          name: replicated_hdd_rule
          root: root-hdd
          type: host
          class: hdd
          default: True
      crush_rules:
        - "{{ crush_rule_hdd }}"
      create_crush_tree: True

      SSD デバイスを使用している場合は、以下のようにパラメーターを編集します。

      crush_rule_config: True
      crush_rule_ssd:
          name: replicated_ssd_rule
          root: root-ssd
          type: host
          class: ssd
          default: True
      crush_rules:
        - "{{ crush_rule_ssd }}"
      create_crush_tree: True
      注記

      デフォルトの CRUSH ルールは、デフォルトルールにクラスパラメーターが含まれるようになったため、ssd および hdd OSD の両方がデプロイされると、デフォルトの CRUSH ルールは失敗します。

      注記

      以下の手順で説明されているように、カスタムの CRUSH 階層を host_vars ディレクトリーの OSD ファイルにも追加し、この設定が機能するようになりました。

    3. group_vars/clients.yml ファイルで作成した crush_rules を使用して pools を作成します。

      >>>>>>> 3993c70c7f25ab628cbfd9c8e27623403ca18c99

copy_admin_key: True
user_config: True
pool1:
  name: "pool1"
  pg_num: 128
  pgp_num: 128
  rule_name: "HDD"
  type: "replicated"
  device_class: "hdd"
pools:
  - "{{ pool1 }}"
  1. ツリーを表示します。

    [root@mon ~]# ceph osd tree
  2. プールを検証します。

    # for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done
    
    pool: pool1
    crush_rule: HDD
    1. すべてのデプロイメント (ベアメタルまたはコンテナー内のについては、Ansible インベントリーファイル(デフォルトでは /etc/ansible/hosts ファイル)を編集して開きます。サンプルホストをコメントアウトします。
  3. [grafana-server] の下にノードを追加します。このロールは Grafana および Prometheus をインストールし、Ceph クラスターのパフォーマンスに関するリアルタイムの洞察を提供します。これらのメトリクスは Ceph Dashboard に提示されています。これにより、クラスターの監視および管理が可能になります。Dashboard、Grafana、および Prometheus のインストールが必要です。Ansible Administration ノードでメトリック関数を同じ場所に配置できます。これを実行する場合、ノードのシステムリソースがスタンドアロンメトリクスノードで必要以上のものよりも大きいことを確認します

    [grafana-server]
    GRAFANA-SERVER_NODE_NAME
  4. [mgrs] セクションに Ceph Manager (ceph-mgr) ノードを追加します。Ceph Manager デーモンと Monitor ノードを配置します。

    [mgrs]
    <monitor-host-name>
    <monitor-host-name>
    <monitor-host-name>
    1. Ansible ユーザーとして、Ansible が Ceph ホストにアクセスできるようにします。

      [user@admin ~]$ ansible all -m ping
    2. 以下の行を /etc/ansible/ansible.cfg ファイルに追加します。

      retry_files_save_path = ~/
    3. root/var/log/ansible/ ディレクトリーを作成し、ansible ユーザーに適切なパーミッションを割り当てます

      [root@admin ~]# mkdir /var/log/ansible
      [root@admin ~]# chown ansible:ansible  /var/log/ansible
      [root@admin ~]# chmod 755 /var/log/ansible
  5. /usr/share/ceph-ansible/ansible.cfg ファイルを編集し、以下のように log_path の値を更新します。

    log_path = /var/log/ansible/ansible.log
    1. Ansible ユーザーとして、/usr/share/ceph-ansible/ ディレクトリーに移動します。

      [user@admin ~]$ cd /usr/share/ceph-ansible/
    2. ceph-ansible Playbook を実行します。

      [user@admin ceph-ansible]$ ansible-playbook site.yml
    注記

    デプロイメントの速度を増やすには、--forks オプションを ansible-playbook に指定します。デフォルトでは、ceph-ansible はフォークを 20 に設定します。この設定では、ノードを同時にインストールします。一度に最大限のノードをインストールするには、ansible-playbook --forks 30 PLAYBOOK FILE を実行します。管理ノードのリソースが過剰に使用されていないことを確認するために、監視する必要があります。そうである場合は、--forks に渡される数を減らします。

    1. Monitor ノードの root アカウントを使用して、Ceph クラスターのステータスを確認します。

      [root@monitor ~]# ceph health
      HEALTH_OK
    2. rados を使用してクラスターが機能していることを確認します
  6. モニターノードから、8 つの配置グループでテストプールを作成します。

    構文

    [root@monitor ~]# ceph osd pool create <pool-name> <pg-number>

    [root@monitor ~]# ceph osd pool create test 8
  7. hello-world.txt というファイルを作成します。

    構文

    [root@monitor ~]# vim <file-name>

    [root@monitor ~]# vim hello-world.txt
  8. オブジェクト名 hello-world を使用して、hello-world.txt をテストプールにアップロードします。

    構文

    [root@monitor ~]# rados --pool <pool-name> put <object-name> <object-file>

    [root@monitor ~]# rados --pool test put hello-world hello-world.txt
  9. テストプールからファイル名 fetch.txt として hello-world をダウンロードします。

    構文

    [root@monitor ~]# rados --pool <pool-name> get <object-name> <object-file>

    [root@monitor ~]# rados --pool test get hello-world fetch.txt
  10. fetch.txt の内容を確認してください。

    [root@monitor ~]# cat fetch.txt

    出力は以下のようになります。

    "Hello World!"
    注記

    クラスターのステータスを検証するほかに、ceph-medic ユーティリティーを使用して Ceph Storage クラスターの全体的な診断を行うことができます。『Installing and Using ceph-medic to Diagnose a Ceph Storage Cluster Guide』の「Installing and Using ceph-medic to Diagnose a Ceph Storage Cluster」の章を参照してください

3.3. すべての NVMe ストレージに OSD Ansible 設定の構成

ストレージに NVMe(Non-volatile memory express)デバイスのみを使用する際にパフォーマンスを最適化するには、各 NVMe デバイスに 4 つの OSD を設定します。通常、NVMe デバイスのスループットを低いデバイスごとに 1 つの OSD のみが設定されます。

注記

SSD と HDD を混在する場合、SSD は OSD ではなく、journals または block.db のいずれかに使用されます。

注記

テストで、各 NVMe デバイスで 4 つの OSD を設定して、最適なパフォーマンスが得られました。osds_per_device: 4 を設定することを推奨しますが、必須ではありません。他の値を使用すると、お使いの環境のパフォーマンスが向上することがあります。

前提条件

  • Ceph クラスターのソフトウェアおよびハードウェア要件をすべて満たす。

Procedure

  1. Set osd_scenario: lvm and osds_per_device: 4 in group_vars/osds.yml:

    osd_scenario: lvm
    osds_per_device: 4
  2. devices の下に NVMe デバイスを一覧表示します。

    devices:
      - /dev/nvme0n1
      - /dev/nvme1n1
      - /dev/nvme2n1
      - /dev/nvme3n1
  3. group_vars/osds.yml の設定は以下のようになります。

    osd_scenario: lvm
    osds_per_device: 4
    devices:
      - /dev/nvme0n1
      - /dev/nvme1n1
      - /dev/nvme2n1
      - /dev/nvme3n1
注記

lvm_volumes ではなく、この設定で devices を使用する必要があります。これは、lvm_volumes が、通常、作成済みの論理ボリュームで使用され、osds_per_device は Ceph による論理ボリュームの自動作成を意味するためです。

3.4. メタデータサーバーのインストール

Ansible 自動化アプリケーションを使用して Ceph Metadata Server (MDS) をインストールします。Ceph File System をデプロイするには、メタデータサーバーデーモンが必要です。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスター

Procedure

Ansible 管理ノードで以下の手順を実行します。

  1. 新しいセクション [mdss]/etc/ansible/hosts ファイルに追加します。

    [mdss]
    hostname
    hostname
    hostname

    hostname を、Ceph Metadata Server をインストールするノードのホスト名に置き換えてください。

  2. /usr/share/ceph-ansible ディレクトリーに移動します。

    [root@admin ~]# cd /usr/share/ceph-ansible
  3. 任意。デフォルトの変数を変更します。

    1. mdss.yml という名前の group_vars/mdss.yml.sample ファイルのコピーを作成します。

      [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
    2. オプションで、mdss.yml のパラメーターを編集します。詳細は、mdss.yml を参照してください。
  4. Ansible ユーザーとして、Ansible Playbook を実行します。

    [user@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss
  5. Metadata Server のインストール後に、これを設定します。詳細は、Red Hat Ceph Storage 3 の『Ceph File System Guide』の「Configuring Metadata Server Daemons 」の章を参照してください。

3.5. Ceph クライアントロールのインストール

ceph-ansible ユーティリティーは、Ceph 設定ファイルと管理キーリングをノードにコピーする ceph-client ロールを提供します。さらに、このロールを使用してカスタムプールおよびクライアントを作成することができます。

前提条件

Procedure

Ansible 管理ノードで以下のタスクを実行します。

  1. 新しいセクション [clients]/etc/ansible/hosts ファイルに追加します。

    [clients]
    <client-hostname>

    <client-hostname>ceph-client ロールをインストールするノードのホスト名に置き換えてください。

  2. /usr/share/ceph-ansible ディレクトリーに移動します。

    [root@admin ~]# cd /usr/share/ceph-ansible
  3. clients.yml という名前の clients.yml.sample ファイルの新しいコピーを作成します。

    [root@admin ceph-ansible ~]# cp group_vars/clients.yml.sample group_vars/clients.yml
  4. 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 }}" }
    1. 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-authtool --gen-print-key コマンドは、新しいクライアントキーを生成することができます。

  5. 必要に応じて、プールおよびクライアントを作成するように ceph-client に指示します。

    1. clients.yml を更新します。

      • user_config 設定のコメントを解除して、true に設定します。
      • pools セクションおよび keys セクションのコメントを解除し、必要に応じて更新します。cephx 機能を使用して、カスタムプールとクライアント名をまとめて定義できます。
    2. osd_pool_default_pg_num 設定を all.yml ファイルの ceph_conf_overrides セクションに追加します。

      ceph_conf_overrides:
         global:
            osd_pool_default_pg_num: <number>

      <number> を配置グループのデフォルト数に置き換えます。

  6. Ansible Playbook の実行:

    [user@admin ceph-ansible]$ ansible-playbook site.yml --limit clients

関連情報

3.6. Ceph Object Gateway のインストール

Ceph Object Gateway は、RADOS ゲートウェイとも呼ばれ、librados API 上に構築されたオブジェクトストレージインターフェースであり、アプリケーションに Ceph ストレージクラスターへの RESTful ゲートウェイを提供します。

前提条件

Procedure

Ansible 管理ノードで以下のタスクを実行します。

  1. [rgws] セクションの下の /etc/ansible/hosts ファイルにゲートウェイホストを追加して、それらのロールを Ansible に識別します。ホストに連続する命名がある場合は、以下のように範囲を使用します。

    [rgws]
    <rgw_host_name_1>
    <rgw_host_name_2>
    <rgw_host_name[3..10]>
  2. Ansible 設定ディレクトリーに移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  3. サンプルファイルから rgws.yml ファイルを作成します。

    [root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
  4. group_vars/rgws.yml ファイルを開いて編集します。管理者キーを Ceph Object Gateway ノードにコピーするには、copy_admin_key オプションのコメントを解除します。

    copy_admin_key: true
  5. rgws.yml ファイルは、デフォルトのポート 7480 以外のデフォルトポートを指定できます。以下に例を示します。

    ceph_rgw_civetweb_port: 80
  6. all.yml ファイルは、 radosgw_interface を指定する必要があります。以下に例を示します。

    radosgw_interface: eth0

    インターフェースを指定すると、同じホストで複数のインスタンスを実行している場合に、Civetweb が別の Civetweb インスタンスと同じ IP アドレスにバインドされないようにします。

  7. 通常、デフォルト設定を変更するには、rgw.yml ファイルの設定のコメントを解除し、それに応じて変更を行います。rgw.yml ファイルにない設定に追加を変更するには、all.yml ファイルで ceph_conf_overrides: を使用します。たとえば、rgw_dns_name: を DNS サーバーのホストに設定し、クラスターの DNS サーバーがワイルドカードで S3 サブドメインを有効にするように設定します。

    ceph_conf_overrides:
       client.rgw.rgw1:
          rgw_dns_name: <host_name>
          rgw_override_bucket_index_max_shards: 16
          rgw_bucket_default_quota_max_objects: 1638400

    高度な設定の詳細については、『Red Hat Ceph Storage 3Ceph Object Gateway for Production Guide 』を参照してください。高度なトピックには以下が含まれます。

  8. group_vars/all.yml ファイルの radosgw_interface パラメーターをコメント解除します。

    radosgw_interface: <interface>

    以下を置き換えます。

    • Ceph Object Gateway がリッスンするインターフェースを使用する <interface>

    詳細は、all.yml ファイルを参照してください。

  9. Ansible Playbook の実行:

    [user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
注記

Ansible は、各 Ceph Object Gateway が確実に実行されていることを確認します。

単一サイトの構成の場合は、Ceph ObjectGateway を Ansible 構成に追加します。

マルチサイトデプロイメントでは、各ゾーンの Ansible 設定を行う必要があります。つまり、Ansible によって、そのゾーン用に Ceph Storage クラスターおよびゲートウェイインスタンスが作成されます。

マルチサイトクラスターのインストールが完了したら、Ubuntu の Object Gateway Guide の Multi-site の章に進んでください。マルチサイトのクラスターを構成する方法を確認してください。

関連情報

3.6.1. マルチサイト Ceph Object Gateway の設定

Ansible は、レルム、ゾーングループ、およびマルチサイト環境内の Ceph Object Gateway のマスターおよびセカンダリーゾーンを設定します。

前提条件

  • Red Hat Ceph Storage クラスターを実行する 2 つ。
  • Ceph Object Gateway ノードで、『Red Hat Ceph Storage インストールガイド 』の「Red Hat Ceph Storage のインストール 要件 」に記載されているタスクを実施します。
  • ストレージクラスターごとに 1 つの Ceph Object Gateway をインストールし、設定します。

Procedure

  1. プライマリーストレージクラスターの Ansible ノードで以下の手順を実行します。

    1. システムキーを生成し、multi-site-keys.txt ファイルで出力を取得します。

      [root@ansible ~]# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys.txt
      [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys.txt
    2. Ansible 設定ディレクトリー /usr/share/ceph-ansible に移動します。

      [root@ansible ~]# cd /usr/share/ceph-ansible
    3. group_vars/all.yml ファイルを開いて編集します。以下のオプションを追加して、$ZONE_NAME、$ZONE_GROUP_NAME、$REALM_NAME、$ACCESS_KEY、および $SECRET_KEY の値を更新してマルチサイトサポートを有効にします。

      複数の Ceph Object Gateway がマスターゾーンにある場合、rgw_multisite_endpoints オプションを設定する必要があります。rgw_multisite_endpoints オプションはコンマ区切りのリストであり、スペースは使用しません。

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: true
      rgw_zonesecondary: false
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY

      注記

      ansible_fqdn ドメイン名は、セカンダリーストレージクラスターから解決できる必要があります。

      注記

      新しい Object Gateway を追加する際に、Ansible Playbook を実行する前に rgw_multisite_endpoints 一覧の末尾に新規 Object Gateway のエンドポイント URL を追加します。

    4. Ansible Playbook の実行:

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    5. Ceph Object Gateway デーモンを再起動します。

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  2. セカンダリーストレージクラスターの Ansible ノードで以下の手順を実行します。

    1. Ansible 設定ディレクトリー /usr/share/ceph-ansible に移動します。

      [root@ansible ~]# cd /usr/share/ceph-ansible
    2. group_vars/all.yml ファイルを開いて編集します。以下のオプションを追加して、$ZONE_NAME、$ZONE_GROUP_NAME、$REALM_NAME、$ACCESS_KEY、および $ SECRET_KEY の値を適宜更新します: rgw_zone_user 、system_access_key、および system_secret_key は、マスターゾーン設定で使用される値と同じ値である必要があります。rgw_pullhost オプションは、マスターゾーンの Ceph Object Gateway である必要があります。

      複数の Ceph Object Gateway がセカンダリーゾーンにある場合は、rgw_multisite_endpoints オプションを設定する必要があります。rgw_multisite_endpoints オプションはコンマ区切りのリストであり、スペースは使用しません。

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: false
      rgw_zonesecondary: true
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY
      rgw_pull_proto: http
      rgw_pull_port: 8080
      rgw_pullhost: $MASTER_RGW_NODE_NAME

      注記

      ansible_fqdn ドメイン名は、プライマリーストレージクラスターから解決できる必要があります。

      注記

      新しい Object Gateway を追加する際に、Ansible Playbook を実行する前に rgw_multisite_endpoints 一覧の末尾に新規 Object Gateway のエンドポイント URL を追加します。

    3. Ansible Playbook の実行:

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    4. Ceph Object Gateway デーモンを再起動します。

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  3. マスターおよびセカンダリーストレージクラスターで Ansible Playbook を実行したら、アクティブ/アクティブの Ceph Object Gateway 設定が指定されます。
  4. マルチサイト Ceph Object Gateway の設定を確認します。

    1. それぞれのサイト、プライマリー、およびセカンダリーの Ceph Monitor および Object Gateway ノードから、他のサイトに対して curl を実行できる必要があります。
    2. 両方のサイトで radosgw-admin sync status コマンドを実行します。

3.7. NFS-Ganesha ゲートウェイのインストール

Ceph NFS Ganesha ゲートウェイは、Ceph Object Gateway 上に構築される NFS インターフェースで、ファイルシステム内のファイルを Ceph Object Storage に移行するために POSIX ファイルシステムインターフェースを使用するアプリケーションを Ceph Object Gateway に提供します。

前提条件

  • 稼働中の Ceph ストレージクラスター (active + clean の状態が望ましい)。
  • Ceph Object Gateway を実行するノードを少なくとも 1 つ。
  • 以前の起動の手順を行います

Procedure

Ansible 管理ノードで以下のタスクを実行します。

  1. サンプルファイルから nfss ファイルを作成します。

    [root@ansible ~]# cd /usr/share/ceph-ansible/group_vars
    [root@ansible ~]# cp nfss.yml.sample nfss.yml
  2. [nfss] グループの下にゲートウェイホストを /etc/ansible/hosts ファイルに追加して、Ansible へのグループメンバーシップを特定します。ホストに連続的な命名がある場合は、範囲を使用します。以下に例を示します。

    [nfss]
    <nfs_host_name_1>
    <nfs_host_name_2>
    <nfs_host_name[3..10]>
  3. Ansible 設定ディレクトリー /etc/ansible/ に移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  4. 管理者キーを Ceph Object Gateway ノードにコピーするには、/usr/share/ceph-ansible/group_vars/nfss.yml ファイルの copy_admin_key 設定をコメント解除します。

    copy_admin_key: true
  5. /usr/share/ceph-ansible/group_vars/nfss.yml ファイルの FSAL (File System Abstraction Layer) セクションを設定します。ID、S3 ユーザー ID、S3 アクセスキー、およびシークレットを指定します。NFSv4 の場合、以下のようになります。

    ###################
    # FSAL RGW Config #
    ###################
    #ceph_nfs_rgw_export_id: <replace-w-numeric-export-id>
    #ceph_nfs_rgw_pseudo_path: "/"
    #ceph_nfs_rgw_protocols: "3,4"
    #ceph_nfs_rgw_access_type: "RW"
    #ceph_nfs_rgw_user: "cephnfs"
    # Note: keys are optional and can be generated, but not on containerized, where
    # they must be configered.
    #ceph_nfs_rgw_access_key: "<replace-w-access-key>"
    #ceph_nfs_rgw_secret_key: "<replace-w-secret-key>"
    警告

    アクセスおよびシークレットキーは任意で、生成できます。

  6. Ansible Playbook の実行:

    [user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit nfss

関連情報

3.8. limit オプションについて

本セクションでは、Ansible の --limit オプションを説明します。

Ansible は --limit オプションをサポートします。これにより、インベントリーファイルの特定のセクションに site、site-docker、および rolling_upgrade Ansible Playbook を使用できます。

$ ansible-playbook site.yml|rolling_upgrade.yml|site-docker.yml --limit osds|rgws|clients|mdss|nfss|iscsigws

たとえば、ベアメタルに OSD のみを再デプロイするには、Ansible ユーザーとして以下のコマンドを実行します。

$ ansible-playbook /usr/share/ceph-ansible/site.yml --limit osds
重要

Ceph コンポーネントを 1 つのノードにコロケートする場合、Ansible は、limit オプションで指定したコンポーネントタイプだけが指定されていても、ノード上のすべてのコンポーネントに Playbook を適用します。たとえば、OSD およびメタデータサーバー(MDS)を含むノードで --limit osds オプションを使用して rolling_update Playbook を実行すると、Ansible はコンポーネント、OSD、および MDS の両方をアップグレードします。

3.9. 関連情報

第4章 Red Hat Ceph Storage クラスターのアップグレード

本項では、Red Hat Ceph Storage の新しいメジャーまたはマイナーバージョンにアップグレードする方法について説明します。

以前のリリースでは、Red Hat は Ubuntu 用の ceph-ansible パッケージを提供していませんでした。Red Hat Ceph Storage バージョン 3 以降では、Ansible 自動化アプリケーションを使用して、Ubuntu ノードから Ceph クラスターをアップグレードできます。

管理者ノードから /usr/share/ceph-ansible/infrastructure-playbooks/ ディレクトリーにある Ansible rolling_update.yml Playbook を使用して、Red Hat Ceph Storage のメジャーまたはマイナーバージョン間のアップグレード、または非同期更新の適用を行います。

Ansible は Ceph ノードを以下の順序でアップグレードします。

  • ノードの監視
  • MGR ノード
  • OSD ノード
  • MDS ノード
  • Ceph Object Gateway ノード
  • その他すべての Ceph クライアントノード
注記

Red Hat Ceph Storage 3 では、/usr/share/ceph-ansible/group_vars/ ディレクトリーにある Ansible 設定ファイルにいくつかの変更が加えられました。特定のパラメーターは名前変更または削除されました。したがって、バージョン 3 へのアップグレード後に all.yml. sample ファイルおよび osds.yml ファイルから新しいコピーを作成する前に、all.yml および osds.yml ファイルのバックアップコピーを作成します。変更の詳細は、付録H バージョン 2 と 3 間の Ansible 変数の変更 を参照してください。

注記

Red Hat Ceph Storage 3.1 以降では、Object Gateway および高速度 NVMe ベースの SSD(および SATA SSD)を使用する際にパフォーマンスを得るためにストレージを最適化するために、新しい Ansible Playbook が導入されました。Playbook は、ジャーナルとバケットのインデックスを SSD に配置して実行し、1 つのデバイスにすべてのジャーナルを配置するため、パフォーマンスを向上させることができます。これらの Playbook は、Ceph のインストール時に使用されます。既存の OSD は動作し続け、アップグレード中に追加のステップは必要ありません。このようにストレージを最適化するために OSD を同時に再設定する際に、Ceph クラスターをアップグレードする方法はありません。ジャーナルまたはバケットインデックスに異なるデバイスを使用するには、OSD を再プロビジョニングする必要があります。詳細は、「Using NVMe with LVM with LVM in Ceph Object Gateway for Production」を参照してください

重要

Playbook rolling_update.yml には、同時に更新するノード数を調整する シリアル 変数が含まれます。Red Hat では、デフォルト値 (1) を使用することを強く推奨します。これにより、Ansible がクラスターノードを 1 つずつアップグレードします。

重要

アップグレードがいずれかの時点で失敗した場合には、ceph status コマンドでクラスターのステータスを確認し、アップグレードの失敗理由を確認します。失敗の理由と解決方法不明な場合は、Red hat サポートにお問い合わせください

重要

rolling_update.yml Playbook を使用して Red Hat Ceph Storage 3.x バージョンにアップグレードする場合には、Ceph File System(CephFS)を使用するユーザーは、メタデータサーバー(MDS)クラスターを手動で更新する必要があります。これは既知の問題が原因です。

ceph-ansible rolling-upgrade.yml を使用してクラスター全体をアップグレードする前に、/etc/ansible /hosts の MDS ホストをコメントアウトし、MDS を手動でアップグレードします。/etc/ansible/hosts ファイルで以下を行います。

 #[mdss]
 #host-abc

MDS クラスターの更新方法など、この既知の問題に関する詳細は、『Red Hat Ceph Storage 3.0 Release Notes』を参照してください

重要

Red Hat Ceph Storage クラスターを以前のバージョンから 3.2 にアップグレードする場合、Ceph Ansible 設定はデフォルトでオブジェクトストアタイプを BlueStore にデフォルト設定します。OSD オブジェクトストアに FileStore を使用する場合は、Ceph Ansible 設定を明示的に FileStore に設定します。これにより、新たにデプロイされ、置き換えられた OSD は FileStore を使用します。

重要

rolling_update.yml Playbook を使用して Red Hat Ceph Storage 3.x バージョンにアップグレードし、マルチサイト Ceph Object Gateway 設定を使用する場合は、multisite 設定を指定するために all.yml ファイルを手動で更新する必要はありません。

前提条件

  • Ceph ノードが Red Hat コンテンツ配信ネットワーク(CDN)に接続されておらず、ISO イメージを使用して Red Hat Ceph Storage をインストールしている場合は、最新バージョンの Red Hat Ceph Storage でローカルリポジトリーを更新します。詳しくは、「Red Hat Ceph Storage リポジトリーの有効化」 を参照してください。
  • Ansible 管理ノードと RBD ミラーリングノードで Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合、Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。

    [root@admin ~]$ 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'
    [root@admin ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
    [root@admin ~]$ sudo apt-get update
  • RHCS 2.x から 3.x へのアップグレード、または RHCS 3.x から最新バージョンにアップグレードする場合は、Ansible 管理ノードで最新バージョンの ceph-ansible パッケージがインストールされていることを確認します。

    [root@admin ~]$ sudo apt-get install ceph-ansible
  • rolling_update.yml Playbook で、それぞれ health_osd_check_retrieshealth_osd_check_delay の値を 50 および 30 に変更します。

    health_osd_check_retries: 50
    health_osd_check_delay: 30

    これらの値が設定されると、Ansible は各 OSD ノードについて最大 25 分待機し、ストレージクラスターの正常性を 30 秒ごとにチェックしてからアップグレードプロセスを続行します。

    注記

    ストレージクラスターで使用されているストレージ容量に基づいて、health_osd_check_retries オプションの値をスケールアップまたはダウンします。たとえば、436 TB 未満の 218 TB (ストレージ容量の 50%) を使用している場合は、health_osd_check_retries オプションを 50 に設定します。

  • アップグレードするクラスターに 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>'

4.1. ストレージクラスターのアップグレード

Procedure

Ansible 管理ノードから以下のコマンドを使用します。

  1. root ユーザーとして、/usr/share/ceph-ansible/ ディレクトリーに移動します。

    [root@admin ~]# cd /usr/share/ceph-ansible/
  2. 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
  3. 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 にそれぞれ作成します。これらを開き、それに応じて編集します。詳細は 付録H バージョン 2 と 3 間の Ansible 変数の変更 および 「Red Hat Ceph Storage クラスターのインストール」 を参照してください。

    [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
  4. 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 }}" }
    1. 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 コマンドを実行して、名前付きクライアントのキーを表示します。

  5. group_vars/all.yml ファイルで、upgrade_ceph_packages オプションをコメント解除して、True に設定します。

    upgrade_ceph_packages: True
  6. fetch_directory パラメーターを group_vars/all.yml ファイルに追加します。

    fetch_directory: <full_directory_path>

    以下を置き換えます。

    • <full_directory_path> は、Ansible ユーザーのホームディレクトリーなどの書き込み可能な場所です。初期ストレージクラスターのインストールに使用された既存のパスを指定します。

    既存のパスが失われたり、見つからない場合は、まず以下を実行します。

    1. 既存の group_vars/all.yml ファイルに以下のオプションを追加します。

      fsid: <add_the_fsid>
      generate_fsid: false
    2. 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
  7. アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合は、radosgw_interface パラメーターを group_vars /all.yml ファイルに追加します。

    radosgw_interface: <interface>

    以下を置き換えます。

    • <interface> は、Ceph Object Gateway ノードがリッスンするインターフェースに置き換えます。
  8. Red Hat Ceph Storage 3.2 以降では、デフォルトの OSD オブジェクトストアは BlueStore です。従来の OSD オブジェクトストアを維持するには、group_vars/all.yml ファイルで osd_objectstore オプションを明示的に filestore に設定する必要があります。

    osd_objectstore: filestore
    注記

    osd_objectstore オプションを filestore に設定し、OSD を置き換えると BlueStore ではなく FileStore が使用されます。

  9. /etc/ansible/hosts にある Ansible インベントリーファイルで、Ceph Manager(ceph-mgr)ノードを [mgrs] セクションに追加します。Ceph Manager デーモンと Monitor ノードを配置します。バージョン 3.x から最新バージョンにアップグレードする場合は、この手順を省略します。

    [mgrs]
    <monitor-host-name>
    <monitor-host-name>
    <monitor-host-name>
  10. infrastructure-playbooks ディレクトリーから現在のディレクトリーに rolling_update.yml をコピーします。

    [root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
  11. /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
    1. /usr/share/ceph-ansible/ansible.cfg ファイルを編集し、以下のように log_path の値を更新します。

      log_path = /var/log/ansible/ansible.log
  12. Ansible ユーザーとして、Playbook を実行します。

    [user@admin ceph-ansible]$ ansible-playbook rolling_update.yml

    Ansible インベントリーファイル上の特定ノードのグループだけに Playbook を使用するには、--limit オプションを使用します。詳細は、limit オプションについて」 を参照してください。

  13. RBD ミラーリングデーモンノードに root ユーザーとしてログインしている場合、rbd-mirror を手動でアップグレードします。

    $ sudo apt-get upgrade rbd-mirror

    デーモンを再起動します。

    # systemctl restart  ceph-rbd-mirror@<client-id>
  14. クラスターの健全性に問題がないことを確認します。... root ユーザーとしてモニターノードにログインして、ceph status コマンドを実行します。
[root@monitor ~]# ceph -s
  1. 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 プロファイル設定が適用されるようになります。

第5章 Do to Do Next?

これは、最新のデータセンターの困難なストレージ要求を満たすために Red Hat Ceph Storage が実行できることの開始点にすぎません。以下は、さまざまなトピックの情報へのリンクになります。

付録A トラブルシューティング

A.1. Ansible はインストールリソースを停止するため、デバイスを見つけることで期待されます。

Ansible 自動化アプリケーションはインストールプロセスを停止し、以下のエラーを返します。

- name: fix partitions gpt header or labels of the osd disks (autodiscover disks)
  shell: "sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}' || sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}'"
  with_together:
    - "{{ osd_partition_status_results.results }}"
    - "{{ ansible_devices }}"
  changed_when: false
  when:
    - ansible_devices is defined
    - item.0.item.value.removable == "0"
    - item.0.item.value.partitions|count == 0
    - item.0.rc != 0

エラー内容:

/usr/share/ceph-ansible/group_vars/osds.yml ファイルで osd_auto_discovery パラメーターが true に設定されている場合、Ansible は利用可能なすべてのデバイスを自動的に検出して設定します。このプロセス中、Ansible はすべての OSD が同じデバイスを使用することを想定します。デバイスは、Ansible が名前を検出するのと同じ順序で名前を取得します。いずれかの OSD でデバイスのいずれかが失敗すると、Ansible は障害が発生したデバイスの検出に失敗し、インストールプロセス全体を停止します。

状況例:

  1. 3 つの OSD ノード (host1host2host3) は、/dev/sdb ディスク、/dev/sdc ディスク、および dev/sdd ディスクを使用します。
  2. host2 では、/dev/sdc ディスクに障害が発生し、削除されます。
  3. 次回の再起動時に、Ansible は削除した /dev/sdc ディスクの検出に失敗し、host2/dev/sdb および /dev/sdc (以前は /dev/sdd) には 2 つのディスクのみが使用されることを想定します。
  4. Ansible はインストールプロセスを停止し、上記のエラーメッセージを返します。

この問題を修正するには、以下を実行します。

/etc/ansible/hosts ファイルで、障害が発生したディスクを持つ OSD ノードが使用するデバイスを指定します (上記の例の host2 )。

[osds]
host1
host2 devices="[ '/dev/sdb', '/dev/sdc' ]"
host3

詳しくは、3章Red Hat Ceph Storage のデプロイ を参照してください。

付録B Red Hat Ceph Storage の手動インストール

重要

Red Hat は、手動でデプロイしたクラスターのアップグレードをサポートしたり、テストしたりしません。したがって、Red Hat では、Ansible を使用して Red Hat Ceph Storage 3 で新規クラスターをデプロイすることを推奨します。詳しくは、3章Red Hat Ceph Storage のデプロイ を参照してください。

apt-get などのコマンドラインユーティリティーを使用して、手動でデプロイされたクラスターをインストールできます。

すべての Ceph クラスターにはモニターが少なくとも 1 つ、最低でも OSD がクラスターに保存されているオブジェクトのコピーとして必要になります。Red Hat は、実稼働環境に 3 台のモニターを使用し、少なくとも 3 つのオブジェクトストレージデバイス (OSD) を使用することを推奨します。

コマンドラインインターフェースを使用して Ceph Storage クラスターをインストールするには、以下の手順を行います。

B.1. 前提条件

Red Hat Ceph Storage のネットワークタイムプロトコルの設定

すべての Ceph Monitor および OSD ノードには、ネットワークタイムプロトコル(NTP)を設定する必要があります。Ceph ノードが NTP ピアであることを確認します。NTP は、クロックのドリフトから生じるプリエンプションの問題に役立ちます。

注記

Ansible を使用して Red Hat Ceph Storage クラスターをデプロイする場合、Ansible は NTP を自動的にインストール、設定、および有効化します。

前提条件
  • 有効なタイムソースへのネットワークアクセス。
手順: RHCS のネットワークタイムプロトコルの設定

root ユーザーとして、ストレージクラスターのすべての RHCS ノードで以下の手順を実行します。

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

    $ sudo apt-get install ntp
$ sudo systemctl start ntp
$ sudo systemctl enable ntp
  1. NTP がクロックを正しく同期していることを確認します。

    $ ntpq -p
関連情報

ブートストラップの監視

Monitor のブートストラップおよび Ceph Storage クラスターの拡張には、以下のデータが必要です。

一意識別子
ファイルシステム識別子 (fsid) はクラスターの一意の識別子です。fsid は、Ceph ストレージクラスターが Ceph ファイルシステムに主に使用する場合に使用されていました。Ceph はネイティブのインターフェース、ブロックデバイス、およびオブジェクトストレージゲートウェイのインターフェースもサポートするようになり、fsid は一部の誤検出になります。
クラスター名

Ceph クラスターにはクラスター名があり、これはスペースなしの単純な文字列です。デフォルトのクラスター名は ceph ですが、別のクラスター名を指定できます。デフォルトのクラスター名の上書きは、複数のクラスターを使用する際に特に便利です。

マルチサイトアーキテクチャーで複数のクラスターを実行する場合、us-west などのクラスター名は現在のコマンドラインセッションのクラスターを特定します

注記

コマンドラインインターフェースでクラスター名を特定するには、クラスター名(例: ceph.conf、us-west.conf、us-east.conf など)で Ceph 設定ファイルを指定します。

たとえば、以下のようになります。

# ceph --cluster us-west.conf ...

監視名
クラスター内の各 Monitor インスタンスには一意の名前があります。一般的には、Ceph Monitor 名はノード名です。Red Hat では、ノードごとに Ceph Monitor を 1 つ推奨していますが、Ceph OSD デーモンを Ceph Monitor デーモンと同じ場所に配置しないことを推奨します。短いノード名を取得するには、hostname -s コマンドを使用します。
マップの監視

初期モニターのブートストラップでは、モニターマップを生成する必要があります。Monitor マップには以下が必要です。

  • ファイルシステム識別子 (fsid)
  • クラスター名、または ceph のデフォルトのクラスター名が使用されます。
  • 1 つ以上のホスト名とその IP アドレス
キーリングの監視
モニターは、秘密鍵を使用して相互に通信します。Monitor 秘密鍵でキーリングを生成し、初期 Monitor のブートストラップ時にこれを提供する必要があります。
管理者キーリング
ceph コマンドラインインターフェースユーティリティーを使用するには、client.admin ユーザーを作成し、そのキーリングを生成します。また、client.admin ユーザーを Monitor キーリングに追加する必要があります。

前述の要件は、Ceph 設定ファイルの作成を意味するものではありません。ただし、Red Hat では、Ceph 設定ファイルを作成し、少なくとも fsidmon initial members、および mon host の設定で設定することを推奨します。

実行時にすべての Monitor 設定を取得および設定できます。ただし、Ceph 設定ファイルには、デフォルト値を上書きする設定のみが含まれる場合があります。Ceph 設定ファイルに設定を追加すると、デフォルト設定が上書きされます。Ceph 設定ファイルでこれらの設定を維持すると、クラスターを簡単に維持できます。

初期モニターをブートストラップするには、以下の手順を実行します。

  1. 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
  2. 初期 Monitor ノードで、rootceph-mon パッケージをインストールします。

    $ sudo apt-get install ceph-mon
  3. root で、/etc/ceph/ ディレクトリーに Ceph 設定ファイルを作成します。デフォルトでは、Ceph は ceph.conf を使用します。ここで、ceph はクラスター名を反映します。

    構文

    # touch /etc/ceph/<cluster_name>.conf

    # touch /etc/ceph/ceph.conf

  4. root でクラスターの一意の識別子を生成し、一意の ID を Ceph 設定ファイルの [global] セクションに追加します。

    構文

    # echo "[global]" > /etc/ceph/<cluster_name>.conf
    # echo "fsid = `uuidgen`" >> /etc/ceph/<cluster_name>.conf

    # echo "[global]" > /etc/ceph/ceph.conf
    # echo "fsid = `uuidgen`" >> /etc/ceph/ceph.conf

  5. 現在の Ceph 設定ファイルを表示します。

    $ cat /etc/ceph/ceph.conf
    [global]
    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
  6. root として、最初の Monitor を Ceph 設定ファイルに追加します。

    構文

    # echo "mon initial members = <monitor_host_name>[,<monitor_host_name>]" >> /etc/ceph/<cluster_name>.conf

    # echo "mon initial members = node1" >> /etc/ceph/ceph.conf

  7. root として、初期 Monitor の IP アドレスを Ceph 設定ファイルに追加します。

    構文

    # echo "mon host = <ip-address>[,<ip-address>]" >> /etc/ceph/<cluster_name>.conf

    # echo "mon host = 192.168.0.120" >> /etc/ceph/ceph.conf

    注記

    IPv6 アドレスを使用するには、ms bind ipv6 オプションを true に設定します。詳細は、『Configuration Guide for Red Hat Ceph Storage 3』の「Bind」セクションを参照してください

  8. root として、クラスターのキーリングを作成し、Monitor シークレットキーを生成します。

    構文

    # ceph-authtool --create-keyring /tmp/<cluster_name>.mon.keyring --gen-key -n mon. --cap mon '<capabilites>'

    # ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
    creating /tmp/ceph.mon.keyring

  9. root で管理者キーリングを生成し、<cluster_name>.client.admin.keyring ユーザーを生成し、そのユーザーをキーリングに追加します。

    構文

    # ceph-authtool --create-keyring /etc/ceph/<cluster_name>.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon '<capabilites>' --cap osd '<capabilites>' --cap mds '<capabilites>'

    # ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
    creating /etc/ceph/ceph.client.admin.keyring

  10. root<cluster_name>.client.admin.keyring キーを <cluster_name>.mon.keyring に追加します。

    構文

    # ceph-authtool /tmp/<cluster_name>.mon.keyring --import-keyring /etc/ceph/<cluster_name>.client.admin.keyring

    # ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
    importing contents of /etc/ceph/ceph.client.admin.keyring into /tmp/ceph.mon.keyring

  11. Monitor マップを生成します。初期 Monitor のノード名、IP アドレス、および fsid を使用して指定し、/tmp/monmap として保存します。

    構文

    $ monmaptool --create --add <monitor_host_name> <ip-address> --fsid <uuid> /tmp/monmap

    $ monmaptool --create --add node1 192.168.0.120 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
    monmaptool: monmap file /tmp/monmap
    monmaptool: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993
    monmaptool: writing epoch 0 to /tmp/monmap (1 monitors)

  12. 初期モニターノードで、root としてデフォルトのデータディレクトリーを作成します。

    構文

    # mkdir /var/lib/ceph/mon/<cluster_name>-<monitor_host_name>

    # mkdir /var/lib/ceph/mon/ceph-node1

  13. root として、最初の Monitor デーモンに Monitor マップとキーリングを設定します。

    構文

    # ceph-mon [--cluster <cluster_name>] --mkfs -i <monitor_host_name> --monmap /tmp/monmap --keyring /tmp/<cluster_name>.mon.keyring

    # ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    ceph-mon: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993
    ceph-mon: created monfs at /var/lib/ceph/mon/ceph-node1 for mon.node1

  14. 現在の Ceph 設定ファイルを表示します。

    # cat /etc/ceph/ceph.conf
    [global]
    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
    mon_initial_members = node1
    mon_host = 192.168.0.120

    さまざまな Ceph 構成設定の詳細は、Red Hat Ceph Storage 3 の『設定ガイド』を参照してください。Ceph 設定ファイルの例では、最も一般的な構成設定の一部を示しています。

    [global]
    fsid = <cluster-id>
    mon initial members = <monitor_host_name>[, <monitor_host_name>]
    mon host = <ip-address>[, <ip-address>]
    public network = <network>[, <network>]
    cluster network = <network>[, <network>]
    auth cluster required = cephx
    auth service required = cephx
    auth client required = cephx
    osd journal size = <n>
    osd pool default size = <n>  # Write an object n times.
    osd pool default min size = <n> # Allow writing n copy in a degraded state.
    osd pool default pg num = <n>
    osd pool default pgp num = <n>
    osd crush chooseleaf type = <n>

  15. rootとして、done ファイルを作成します。

    構文

    # touch /var/lib/ceph/mon/<cluster_name>-<monitor_host_name>/done

    # touch /var/lib/ceph/mon/ceph-node1/done

  16. 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
    ...
  17. カスタム名を持つストレージクラスターの場合は、root で以下の行を追加します。

    構文

    $ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph

    $ sudo echo "CLUSTER=test123" >> /etc/default/ceph

  18. root として、初期モニターノードで ceph-mon プロセスを開始して有効にします。

    構文

    $ sudo systemctl enable ceph-mon.target
    $ sudo systemctl enable ceph-mon@<monitor_host_name>
    $ sudo systemctl start ceph-mon@<monitor_host_name>

    $ sudo systemctl enable ceph-mon.target
    $ sudo systemctl enable ceph-mon@node1
    $ sudo systemctl start ceph-mon@node1

  19. root として、monitor デーモンが実行していることを確認します。

    構文

    # sudo systemctl status ceph-mon@<monitor_host_name>

    # sudo systemctl status ceph-mon@node1
    ● ceph-mon@node1.service - Ceph cluster monitor daemon
       Loaded: loaded (/usr/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2018-06-27 11:31:30 PDT; 5min ago
     Main PID: 1017 (ceph-mon)
       CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@node1.service
               └─1017 /usr/bin/ceph-mon -f --cluster ceph --id node1 --setuser ceph --setgroup ceph
    
    Jun 27 11:31:30 node1 systemd[1]: Started Ceph cluster monitor daemon.
    Jun 27 11:31:30 node1 systemd[1]: Starting Ceph cluster monitor daemon...

Red Hat Ceph Storage Monitor をストレージクラスターに追加するには、『Administration Guide for Red Hat Ceph Storage 3』の「Adding a Monitor 」セクションを参照してください。

B.2. 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 ブート制約

モニターを最初に実行したら、オブジェクトストレージデバイス (OSD) の追加を開始できます。オブジェクトのコピー数を処理するのに十分な OSD があるまで、クラスターは active + clean 状態に到達できません。

オブジェクトのデフォルトのコピー数は 3 です。少なくとも 3 つの OSD ノードが必要です。ただし、オブジェクトのコピーを 2 つだけ使用する場合には、OSD ノードを 2 つだけ追加してから、Ceph 設定ファイルの osd pool default size および osd pool default min size 設定を更新します。

詳細は、『Configuration Guide for Red Hat Ceph Storage 3』の「OSD ConfigurationReference 」セクションを参照してください。

初期モニターのブートストラップ後に、クラスターにはデフォルトの CRUSH マップがあります。ただし、CRUSH マップには Ceph ノードにマッピングされた Ceph OSD デーモンがありません。

OSD をクラスターに追加し、デフォルトの CRUSH マップを更新するには、各 OSD ノードで以下のコマンドを実行します。

  1. 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
  2. root で Ceph OSD ノードに ceph-osd パッケージをインストールします。

    $ sudo apt-get install ceph-osd
  3. Ceph 設定ファイルと管理キーリングファイルを初期 Monitor ノードから OSD ノードにコピーします。

    構文

    # scp <user_name>@<monitor_host_name>:<path_on_remote_system> <path_to_local_file>

    # scp root@node1:/etc/ceph/ceph.conf /etc/ceph
    # scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph

  4. OSD 用の Universally Unique Identifier (UUID) を生成します。

    $ uuidgen
    b367c360-b364-4b1d-8fc6-09408a9cda7a
  5. root として、OSD インスタンスを作成します。

    構文

    # ceph osd create <uuid> [<osd_id>]

    # ceph osd create b367c360-b364-4b1d-8fc6-09408a9cda7a
    0

    注記

    このコマンドは、後続のステップに必要な OSD 番号識別子を出力します。

  6. root として、新規 OSD のデフォルトディレクトリーを作成します。

    構文

    # mkdir /var/lib/ceph/osd/<cluster_name>-<osd_id>

    # mkdir /var/lib/ceph/osd/ceph-0

  7. root として、OSD として使用するドライブを準備し、作成したディレクトリーにマウントします。Ceph データおよびジャーナル用にパーティションを作成します。ジャーナルとデータパーティションは同じディスクに配置できます。以下の例では、15 GB のディスクを使用しています。

    構文

    # parted <path_to_disk> mklabel gpt
    # parted <path_to_disk> mkpart primary 1 10000
    # mkfs -t <fstype> <path_to_partition>
    # mount -o noatime <path_to_partition> /var/lib/ceph/osd/<cluster_name>-<osd_id>
    # echo "<path_to_partition>  /var/lib/ceph/osd/<cluster_name>-<osd_id>   xfs defaults,noatime 1 2" >> /etc/fstab

    # parted /dev/sdb mklabel gpt
    # parted /dev/sdb mkpart primary 1 10000
    # parted /dev/sdb mkpart primary 10001 15000
    # mkfs -t xfs /dev/sdb1
    # mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-0
    # echo "/dev/sdb1 /var/lib/ceph/osd/ceph-0  xfs defaults,noatime 1 2" >> /etc/fstab

  8. root として、OSD データディレクトリーを初期化します。

    構文

    # ceph-osd -i <osd_id> --mkfs --mkkey --osd-uuid <uuid>

    # ceph-osd -i 0 --mkfs --mkkey --osd-uuid b367c360-b364-4b1d-8fc6-09408a9cda7a
    ... auth: error reading file: /var/lib/ceph/osd/ceph-0/keyring: can't open /var/lib/ceph/osd/ceph-0/keyring: (2) No such file or directory
    ... created new key in keyring /var/lib/ceph/osd/ceph-0/keyring

    注記

    --mkkey オプションを指定して ceph-osd を実行する前に、ディレクトリーが空である必要があります。カスタムのクラスター名がある場合には、ceph-osd ユーティリティーでは --cluster オプションが必要です。

  9. root として、OSD 認証キーを登録します。クラスター名が ceph と異なる場合は、代わりにクラスター名を挿入します。

    構文

    # ceph auth add osd.<osd_id> osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/<cluster_name>-<osd_id>/keyring

    # ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
    added key for osd.0

  10. root として、OSD ノードを CRUSH マップに追加します。

    構文

    # ceph [--cluster <cluster_name>] osd crush add-bucket <host_name> host

    # ceph osd crush add-bucket node2 host

  11. root で OSD ノードを default の CRUSH ツリーに配置します。

    構文

    # ceph [--cluster <cluster_name>] osd crush move <host_name> root=default

    # ceph osd crush move node2 root=default

  12. root として、OSD ディスクを CRUSH マップに追加します。

    構文

    # ceph [--cluster <cluster_name>] osd crush add osd.<osd_id> <weight> [<bucket_type>=<bucket-name> ...]

    # ceph osd crush add osd.0 1.0 host=node2
    add item id 0 name 'osd.0' weight 1 at location {host=node2} to crush map

    注記

    CRUSH マップを逆コンパイルし、OSD をデバイス一覧に追加することもできます。OSD ノードをバケットとして追加してから、デバイスを OSD ノードの項目として追加し、OSD に重みを割り当て、CRUSH マップを再コンパイルし、CRUSH マップを設定します。詳細は、Red Hat Ceph Storage 3 の『ストレージ戦略ガイド』の「 https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html-single/storage_strategies_guide/#editing_a_crush_map CRUSH マップの編集 」セクションを参照してください。

  13. 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

  14. カスタム名を持つストレージクラスターの場合は、root で以下の行を /etc/default/ceph ファイルに追加します。

    構文

    $ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph

    $ sudo echo "CLUSTER=test123" >> /etc/default/ceph

  15. OSD ノードは Ceph Storage クラスターの設定にあります。ただし、OSD デーモンは down および in です。新しい OSD は、データの受信開始前に up である必要があります。root として、OSD プロセスを有効にして開始します。

    構文

    $ sudo systemctl enable ceph-osd.target
    $ sudo systemctl enable ceph-osd@<osd_id>
    $ sudo systemctl start ceph-osd@<osd_id>

    $ sudo systemctl enable ceph-osd.target
    $ sudo systemctl enable ceph-osd@0
    $ sudo systemctl start ceph-osd@0

    OSD デーモンを起動すると、これが up および in になります。

モニターと一部の OSD が稼働しています。以下のコマンドを実行して、配置グループピアを監視できます。

$ ceph -w

OSD ツリーを表示するには、以下のコマンドを実行します。

$ ceph osd tree

ID  WEIGHT    TYPE NAME        UP/DOWN  REWEIGHT  PRIMARY-AFFINITY
-1       2    root default
-2       2        host node2
 0       1            osd.0         up         1                 1
-3       1        host node3
 1       1            osd.1         up         1                 1

新規 OSD をストレージクラスターに追加してストレージ容量を拡張するには、Red Hat Ceph Storage 3 の『管理ガイド』の「 https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html-single/administration_guide/#adding_an_osd OSD の追加」セクションを参照してください

付録C Ceph コマンドラインインターフェースのインストール

Ceph コマンドラインインターフェース (CLI) により、管理者は Ceph 管理コマンドを実行できます。CLI は ceph-common パッケージにより提供され、以下のユーティリティーが含まれます。

  • ceph
  • ceph-authtool
  • ceph-dencoder
  • rados

前提条件

  • 稼働中の Ceph ストレージクラスター (active + clean の状態が望ましい)。

Procedure

  1. クライアントノードで、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
  2. クライアントノードで、ceph-common パッケージをインストールします。

    $ sudo apt-get install ceph-common
  3. 最初の監視ノードから、Ceph 設定ファイル (ここでは ceph.conf) と管理キーリングをクライアントノードにコピーします。

    構文

    # scp /etc/ceph/<cluster_name>.conf <user_name>@<client_host_name>:/etc/ceph/
    # scp /etc/ceph/<cluster_name>.client.admin.keyring <user_name>@<client_host_name:/etc/ceph/

    # scp /etc/ceph/ceph.conf root@node1:/etc/ceph/
    # scp /etc/ceph/ceph.client.admin.keyring root@node1:/etc/ceph/

    <client_host_name> を、クライアントノードのホスト名に置き換えてください。

付録D Ceph ブロックデバイスの手動インストール

以下の手順では、シンプロビジョニングされ、サイズが変更可能な Ceph ブロックデバイスをインストールおよびマウントする方法を説明します。

重要

Ceph ブロックデバイスは、Ceph Monitor ノードと OSD ノードとは別のノードにデプロイする必要があります。同じノードでカーネルクライアントとカーネルサーバーデーモンを実行すると、カーネルのデッドロックが発生する可能性があります。

前提条件

手順

  1. OSD ノード (osd 'allow rwx') 上のファイルへの完全なパーミッションを持つ client.rbd という名前の Ceph Block Device ユーザーを作成し、結果をキーリングファイルに出力します。

    ceph auth get-or-create client.rbd mon 'profile rbd' osd 'profile rbd pool=<pool_name>' \
    -o /etc/ceph/rbd.keyring

    <pool_name> を、client.rbd によるアクセスを許可するプールの名前 (例: rbd) に置き換えます。

    $ sudo ceph auth get-or-create \
    client.rbd mon 'allow r' osd 'allow rwx pool=rbd' \
    -o /etc/ceph/rbd.keyring

    ユーザーの作成に関する詳細は、『Red Hat Ceph Storage 3 Administration Guide』の「 User Management 」セクションを参照してください。

  2. ブロックデバイスイメージを作成します。

    rbd create <image_name> --size <image_size> --pool <pool_name> \
    --name client.rbd --keyring /etc/ceph/rbd.keyring

    <image_name><image_size>、および <pool_name> を指定します。以下に例を示します。

    $ rbd create image1 --size 4096 --pool rbd \
    --name client.rbd --keyring /etc/ceph/rbd.keyring
    警告

    デフォルトの Ceph 設定には、以下の Ceph ブロックデバイス機能が含まれます。

    • layering
    • exclusive-lock
    • object-map
    • deep-flatten
    • fast-diff

    カーネル RBD(krbd)クライアントを使用する場合、Red Hat Enterprise Linux 7.3 に含まれる現在のカーネルバージョンは object-map、deep-flatten、および fast-diff をサポートしないため、ブロックデバイスイメージをマッピングできません。

    この問題を回避するには、サポートされていない機能を無効にします。これを行うには、以下のいずれかのオプションを使用します。

    • サポートされていない機能を動的に無効にします。

      rbd feature disable <image_name> <feature_name>

      以下に例を示します。

      # rbd feature disable image1 object-map deep-flatten fast-diff
    • rbd create コマンドで --image-feature layering オプションを使用して、新たに作成されたブロックデバイスイメージで 階層化 のみを有効にします。
    • Ceph 設定ファイルで機能のデフォルトを無効にします。

      rbd_default_features = 1

    詳細は、Red Hat Ceph Storage 3 リリースノート の既知の問題の章 を参照してください

    これらの機能はすべて、ユーザー空間の RBD クライアントを使用してブロックデバイスイメージにアクセスするユーザーに機能します。

  3. 新規に作成されたイメージをブロックデバイスにマッピングします。

    rbd map <image_name> --pool <pool_name>\
    --name client.rbd --keyring /etc/ceph/rbd.keyring

    以下に例を示します。

    $ sudo rbd map image1 --pool rbd --name client.rbd \
    --keyring /etc/ceph/rbd.keyring
  4. ファイルシステムを作成してブロックデバイスを使用します。

    mkfs.ext4 -m5 /dev/rbd/<pool_name>/<image_name>

    以下のように、プール名とイメージ名を指定します。

    $ sudo mkfs.ext4 -m5 /dev/rbd/rbd/image1

    これには少し時間がかかる場合があります。

  5. 新しく作成されたファイルシステムをマウントします。

    mkdir <mount_directory>
    mount /dev/rbd/<pool_name>/<image_name> <mount_directory>

    以下に例を示します。

    $ sudo mkdir /mnt/ceph-block-device
    $ sudo mount /dev/rbd/rbd/image1 /mnt/ceph-block-device

詳細は、Red Hat Ceph Storage 3 のブロックデバイスガイドを参照してください。

付録E Ceph Object Gateway の手動インストール

Ceph オブジェクトゲートウェイは RADOS ゲートウェイとしても知られている librados API 上に構築されたオブジェクトストレージインターフェースで、RESTful ゲートウェイを Ceph ストレージクラスターに提供します。

前提条件

Procedure

  1. 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
  2. Object Gateway ノードに、radosgw パッケージをインストールします。

    $ sudo apt-get install radosgw
  3. 初期モニターノードで、以下の手順を実施します。

    1. 以下のように Ceph 設定ファイルを更新します。

      [client.rgw.<obj_gw_hostname>]
      host = <obj_gw_hostname>
      rgw frontends = "civetweb port=80"
      rgw dns name = <obj_gw_hostname>.example.com

      ここで、<obj_gw_hostname> はゲートウェイノードの短縮ホスト名です。短縮ホスト名を表示するには、hostname -s コマンドを使用します。

    2. 更新された設定ファイルを新しい Object Gateway ノードおよび Ceph Storage クラスターのその他のノードにコピーします。

      構文

      $ sudo scp /etc/ceph/<cluster_name>.conf <user_name>@<target_host_name>:/etc/ceph

      $ sudo scp /etc/ceph/ceph.conf root@node1:/etc/ceph/

    3. <cluster_name>.client.admin.keyring ファイルを新しい Object Gateway ノードにコピーします。

      構文

      $ sudo scp /etc/ceph/<cluster_name>.client.admin.keyring <user_name>@<target_host_name>:/etc/ceph/

      $ sudo scp /etc/ceph/ceph.client.admin.keyring root@node1:/etc/ceph/

  4. Object Gateway ノードで、データディレクトリーを作成します。

    構文

    $ sudo mkdir -p /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`

    $ sudo mkdir -p /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`

  5. Object Gateway ノードで、ユーザーとキーリングを追加して、オブジェクトゲートウェイをブートストラップします。

    構文

    $ sudo ceph auth get-or-create client.rgw.`hostname -s` osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`/keyring

    $ sudo ceph auth get-or-create client.rgw.`hostname -s` osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`/keyring

    重要

    ゲートウェイキーの機能を提供する場合は、読み取り機能を指定する必要があります。ただし、Monitor 書き込み機能を提供することはオプションです。指定した場合、Ceph Object Gateway はプールを自動的に作成できます。

    このような場合は、プール内の配置グループの数に適切な数を指定してください。それ以外の場合は、ゲートウェイは、ニーズに適している可能性のあるデフォルトの番号を使用します。詳細は、Ceph Placement Groups(PGs)per Pool Calculator を参照してください。

  6. Object Gateway ノードで、done ファイルを作成します。

    構文

    $ sudo touch /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`/done

    $ sudo touch /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`/done

  7. Object Gateway ノードで、所有者およびグループのパーミッションを変更します。

    $ sudo chown -R ceph:ceph /var/lib/ceph/radosgw
    $ sudo chown -R ceph:ceph /var/log/ceph
    $ sudo chown -R ceph:ceph /var/run/ceph
    $ sudo chown -R ceph:ceph /etc/ceph
  8. カスタム名を持つストレージクラスターの場合は、root で以下の行を追加します。

    構文

    $ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph

    $ sudo echo "CLUSTER=test123" >> /etc/default/ceph

  9. Object Gateway ノードで、TCP ポート 80 を開きます。

    $ sudo iptables -I INPUT 1 -i <network_interface> -p tcp -s <ip_address>/<netmask> --dport 80 -j ACCEPT
  10. Object Gateway ノードで、ceph-radosgw プロセスを開始して有効にします。

    構文

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

    $ sudo systemctl enable ceph-radosgw.target
    $ sudo systemctl enable ceph-radosgw@rgw.node1
    $ sudo systemctl start ceph-radosgw@rgw.node1

インストールが完了すると、書き込み機能が Monitor に設定されると、Ceph Object Gateway はプールを自動的に作成します。プールを手動で作成する方法は、『Storage Strategies Guide』の「プール」の章を参照してください。

補足情報

付録F Ceph のデフォルト設定の上書き

Ansible 設定ファイルに特に指定しない限り、Ceph はデフォルト設定を使用します。

Ansible は Ceph 設定ファイルを管理するため、/usr/share/ceph-ansible/group_vars/all.yml ファイルを編集して Ceph の設定を変更します。ceph_conf_overrides の設定を使用して、デフォルトの Ceph 設定を上書きします。

Ansible は、Ceph 設定ファイル ([global][mon][osd][mds][rgw] など) と同じセクションをサポートします。特定の Ceph Object Gateway インスタンスなどの特定のインスタンスをオーバーライドすることもできます。以下に例を示します。

###################
# CONFIG OVERRIDE #
###################

ceph_conf_overrides:
   client.rgw.rgw1:
      log_file: /var/log/ceph/ceph-rgw-rgw1.log
注記

Ansible には、Ceph 設定ファイルの特定セクションを参照する際に中かっこが含まれません。セクション名および設定名はコロンで終了します。

重要

CONFIG OVERRIDE セクションの cluster_network パラメーターを使用してクラスターネットワークを設定しないでください。競合する 2 つのクラスターネットワークが Ceph 設定ファイルに設定されている可能性があるためです。

クラスターネットワークを設定するには、CEPH CONFIGURATION セクションで cluster_network パラメーターを使用します。詳細は、「Red Hat Ceph Storage クラスターのインストール」 を参照してください。

付録G Red Hat Ceph Storage 2 から 3 への手動アップグレード

Ceph Storage クラスターは、ローリング方式およびクラスターの実行中にバージョン 2 から 3 にアップグレードすることができます。クラスターの各ノードを順番にアップグレードし、直前のノードの完了後にのみ次のノードに進みます。

Red Hat では、Ceph コンポーネントを以下の順序でアップグレードすることを推奨します。

  • ノードの監視
  • OSD ノード
  • Ceph Object Gateway ノード
  • その他すべての Ceph クライアントノード

Red Hat Ceph Storage 3 では、新たなデーモン Ceph Manager(ceph-mgr)が導入されました。Monitor ノードのアップグレード後に ceph-mgr をインストールします。

Red Hat Ceph Storage 2 を 3 にアップグレードするには、以下の 2 つの方法を使用できます。

  • Red Hat のコンテンツ配信ネットワーク(CDN)の使用
  • Red Hat が提供する ISO イメージファイルの使用

ストレージクラスターのアップグレード後に、レガシーの tunable を使用して CRUSH マップに関する警告を警告できます。詳細は、Red Hat Ceph Storage 3 の『ストレージ戦略ガイド』の「CRUSH Tunables 」セクションを参照してください。

$ 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 Storage クラスターと同じバージョンを実行することを推奨します。

前提条件

  • アップグレードするクラスターに 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 をアップグレードしても、ストレージクラスターにはクォーラムがあります。

Procedure

ストレージクラスターの各 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. rootceph-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 コントローラーノードにコロケーションされている場合は、Glance および Cinder キーリングファイルがそれぞれ glancecinder によって所有される必要があります。以下に例を示します。

    # 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. rootceph-mon プロセスを有効にします。

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

    # shutdown -r now
  10. Monitor ノードが稼働したら、Ceph Storage クラスターの正常性を確認してから次の Monitor ノードに移動します。

    # 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 が停止または再起動する可能性があるため、一部の配置グループが低下します。Monitor ノードで Ceph がリカバリープロセスを開始しないように、OSD フラグ noout および norebalance を設定します。

[root@monitor ~]# ceph osd set noout
[root@monitor ~]# ceph osd set norebalance

Procedure

ストレージクラスターの各 OSD ノードで以下の手順を実行します。一度に 1 つの OSD ノードのみをアップグレードします。ISO ベースのインストールが Red Hat Ceph Storage 2.3 に対して実行された場合には、最初のステップを飛ばして次に進みます。

  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 Storage 2 への参照を削除します。ISO ベースのインストールが Red Hat Ceph Storage 2 に対して実行された場合は、最初のステップを飛ばして次に進みます。

  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. rootceph-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 パッケージがメタパッケージになりました。ceph-mon パッケージのみが Monitor ノードで必要であり、OSD ノードで ceph-osd パッケージのみが必要で、RADOS Gateway ノードに ceph-radosgw パッケージのみが必要になります。

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

    # udevadm trigger
  8. rootceph-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 フラグの設定を解除し、ストレージクラスターのステータスを確認します。

Monitor ノードで、すべての OSD ノードがアップグレードされた後に、noout および norebalance フラグの設定を解除します。

# ceph osd unset noout
# ceph osd unset norebalance

さらに、ceph osd requires-osd-release <release> コマンドを実行します。このコマンドにより、Red Hat Ceph Storage 2.3 の OSD をストレージクラスターに追加できなくなります。このコマンドを実行しないと、ストレージのステータスは HEALTH_WARN になります。

# ceph osd require-osd-release luminous

関連情報

Ceph Object Gateway ノードのアップグレード

本項では、Ceph Object Gateway ノードを後続バージョンにアップグレードする手順について説明します。

重要

Red Hat は、これらのアップグレードの手順に進む前に、システムをバックアップすることを推奨します。

前提条件

  • Red Hat は、HAProxy などのロードバランサーの背後にある Ceph Object Gateway を配置することを推奨します。ロードバランサーを使用する場合は、要求が配信されない場合に Ceph Object Gateway をロードバランサーから削除します。
  • リージョンプールのカスタム名を使用する場合は、rgw_region_root_pool パラメーターで指定した rgw_zonegroup_root_pool パラメーターを Ceph 設定ファイルの [global] セクションに追加します。rgw_zonegroup_root_pool の値を rgw_region_root_pool と同じものに設定します。以下に例を示します。

    [global]
    rgw_zonegroup_root_pool = .us.rgw.root

Procedure

ストレージクラスターの各 Ceph Object Gateway ノードで以下の手順を実行します。1 度に 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 パッケージがメタパッケージになりました。ceph-mon、ceph-osd、および ceph-radosgw パッケージのみが、モニター、OSD、および Ceph Object Gateway ノードでのみ必要です。

  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 Storage クラスターと同じバージョンを実行することを推奨します。

前提条件

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

Procedure

  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 Storage 2 への参照を削除します。

  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 インスタンスを停止して起動します。

付録H バージョン 2 と 3 間の Ansible 変数の変更

Red Hat Ceph Storage 3 では、/usr/share/ceph-ansible/group_vars/ ディレクトリーにある設定ファイルの特定の変数が変更され、削除されています。以下の表は、すべての変更を一覧表示しています。バージョン 3 にアップグレードしたら、all.yml.sample ファイルおよび osds.yml.sample ファイルを再度コピーして、変更を反映します。詳細は、「Red Hat Ceph Storage クラスターのアップグレード 」を参照してください。

旧オプション新しいオプションファイル

ceph_rhcs_cdn_install

ceph_repository_type: cdn

all.yml

ceph_rhcs_iso_install

ceph_repository_type: iso

all.yml

ceph_rhcs

ceph_origin: repository および ceph_repository: rhcs (デフォルトでは有効)

all.yml

journal_collocation

osd_scenario: collocated

osds.yml

raw_multi_journal

osd_scenario: non-collocated

osds.yml

raw_journal_devices

dedicated_devices

osds.yml

dmcrytpt_journal_collocation

dmcrypt: true + osd_scenario: collocated

osds.yml

dmcrypt_dedicated_journal

dmcrypt: true + osd_scenario: non-collocated

osds.yml

付録I 既存の Ceph クラスターの Ansible へのインポート

Ansible が Ansible なしでデプロイされたクラスターを使用するように設定することができます。たとえば、Red Hat Ceph Storage 1.3 クラスターを手動でバージョン 2 にアップグレードした場合は、以下の手順により Ansible を使用するように設定してください。

  1. バージョン 1.3 からバージョン 2 に手動でアップグレードした後、管理ノードに Ansible をインストールおよび設定します。
  2. Ansible 管理ノードに、クラスター内の全 Ceph ノードにパスワードレスの ssh アクセスがあることを確認します。詳細は、「Ansible のパスワードなしの SSH の有効化」 を参照してください。
  3. root で、/etc/ansible/ ディレクトリーに Ansible の group_vars ディレクトリーへのシンボリックリンクを作成します。

    # ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
  4. rootall.yml.sample ファイルから all.yml ファイルを作成し、編集用に開きます。

    # cd /etc/ansible/group_vars
    # cp all.yml.sample all.yml
    # vim all.yml
  5. group_vars/all.ymlgenerate_fsid 設定を false に設定します。
  6. ceph fsid を実行して、現在のクラスター fsid を取得します。
  7. 取得した fsidgroup_vars/all.yml に設定します。
  8. Ceph ホストが含まれるように、/etc/ansible/hosts の Ansible インベントリーを変更します。[mons] セクションの下にモニター、[osds] セクションの下に OSD、および[rgws] セクションのゲートウェイを追加して、それらのロールをAnsible に特定します。
  9. ceph_conf_overrides セクションが、all.yml ファイルの [global] セクション、[osd] セクション、[mon] セクション、および [client] セクションに使用される元の ceph.conf オプションで更新されていることを確認します。

    osd ジャーナルpublic_networkcluster_network などのオプションはすでに all.yml に含まれているため、ceph_conf_overrides には追加しないでください。all.yml に含まれず、元の ceph.conf にあるオプションのみを ceph_conf_overrides に追加する必要があります。

  10. /usr/share/ceph-ansible/ ディレクトリーから Playbook を実行します。

    # cd /usr/share/ceph-ansible/
    # cp infrastructure-playbooks/take-over-existing-cluster.yml .
    $ ansible-playbook take-over-existing-cluster.yml -u <username>

付録J Ansible を使用した Ceph クラスターのパージ

Ansible を使用して Ceph クラスターをデプロイしており、クラスターを削除する場合には、infrastructure-playbooks ディレクトリーにある Ansible Playbook purge-cluster.yml を使用します。

重要

Ceph クラスターを取得すると、クラスターの OSD に保存されているデータが失われます。

Ceph クラスターを購入する前の準備

osds.yml ファイルの osd_auto_discovery オプションを確認します。このオプションを true に設定すると、パージが失敗します。失敗を防ぐには、パージを実行する前に以下の手順を実行してください。

  1. osds.yml ファイルで OSD デバイスを宣言します。詳細は、「Red Hat Ceph Storage クラスターのインストール」 を参照してください。
  2. osds.yml ファイルの osd_auto_discovery オプションをコメントアウトします。

Ceph クラスターを削除するには、以下を実行します。

  1. root として /usr/share/ceph-ansible/ ディレクトリーに移動します。

    # cd /usr/share/ceph-ansible
  2. root で、Ansible Playbook purge-cluster.yml を現在のディレクトリーにコピーします。

    # cp infrastructure-playbooks/purge-cluster.yml .
  3. Ansible Playbook purge-cluster.yml を実行します。

    $ ansible-playbook purge-cluster.yml