Menu Close

B.2. Red Hat Ceph Storage の手動インストール

重要

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

Yum などのコマンドラインユーティリティーを使用して、手動でデプロイされたクラスターをアップグレードすることができますが、Red Hat ではこのアプローチのサポートまたはテストを行いません。

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

初期モニターのブートストラップは、Ceph ストレージクラスターをデプロイする最初のステップです。Ceph monitor デプロイメントは、以下のようなクラスター全体の重要な基準も設定します。

  • プールのレプリカ数
  • OSD ごとの配置グループ数
  • ハートビートの間隔
  • 認証要件

これらの値の多くはデフォルトで設定されるため、実稼働環境用のクラスターを設定する際に便利です。

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

ブートストラップの監視

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

一意識別子
ファイルシステム識別子 (fsid) はクラスターの一意の識別子です。fsid は、Ceph ストレージクラスターが Ceph ファイルシステムに主に使用する場合に使用されていました。Ceph はネイティブのインターフェース、ブロックデバイス、およびオブジェクトストレージゲートウェイのインターフェースもサポートするようになり、fsid は一部の誤検出になります。
監視名
クラスター内の各 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 4 Monitor リポジトリーを有効にします。

    [root@monitor ~]# subscription-manager repos --enable=rhceph-4-mon-for-rhel-8-x86_64-rpms
  2. 初期 Monitor ノードで、rootceph-mon パッケージをインストールします。

    # yum install ceph-mon
  3. root で、/etc/ceph/ ディレクトリーに Ceph 設定ファイルを作成します。

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

    # 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/ceph.conf

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

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

    構文

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

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

    注記

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

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

    # ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
    creating /tmp/ceph.mon.keyring
  9. root で管理者キーリングを生成し、ceph.client.admin.keyring ユーザーを生成し、ユーザーをキーリングに追加します。

    構文

    # ceph-authtool --create-keyring /etc/ceph/ceph.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. rootceph.client.admin.keyring キーを ceph.mon.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/ceph-<monitor_host_name>

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

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

    構文

    # ceph-mon --mkfs -i <monitor_host_name> --monmap /tmp/monmap --keyring /tmp/ceph.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 4 の 『設定ガイド』 を参照してください。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/ceph-<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 として、初期モニターノードで ceph-mon プロセスを開始して有効にします。

    構文

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

    # systemctl enable ceph-mon.target
    # systemctl enable ceph-mon@node1
    # systemctl start ceph-mon@node1

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

    構文

    # systemctl status ceph-mon@<monitor_host_name>

    # 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 をストレージクラスターに追加するには、Red Hat Ceph Storage 4 の『管理ガイド』の「モニターの追加」セクションを参照してください。

OSD ブート制約

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

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

詳細は、Red Hat Ceph Storage 4 の『設定』「OSD 設定参照」セクションを参照してください。

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

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

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

    [root@osd ~]# subscription-manager repos --enable=rhceph-4-osd-for-rhel-8-x86_64-rpms
  2. root で Ceph OSD ノードに ceph-osd パッケージをインストールします。

    # yum 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/ceph-<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/ceph-<osd_id>
    # echo "<path_to_partition>  /var/lib/ceph/osd/ceph-<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

  9. root として、OSD 認証キーを登録します。

    構文

    # ceph auth add osd.<osd_id> osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-<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 osd crush add-bucket <host_name> host

    # ceph osd crush add-bucket node2 host

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

    構文

    # ceph osd crush move <host_name> root=default

    # ceph osd crush move node2 root=default

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

    構文

    # ceph 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 4 の『ストレージ戦略ガイド』のセクション「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. OSD ノードは Ceph Storage クラスターの設定にあります。ただし、OSD デーモンは down および in です。新しい OSD は、データの受信開始前に up である必要があります。root として、OSD プロセスを有効にして開始します。

    構文

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

    # systemctl enable ceph-osd.target
    # systemctl enable ceph-osd@0
    # 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 4 『管理ガイド』「OSD の追加」セクションを参照してください。