Red Hat Training

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

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 設定を更新します。

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

初期モニターのブートストラップ後に、クラスターにはデフォルトの 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 の『ストレージ戦略ガイド』のセクション「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 『管理ガイド』「OSD の追加」セクションを参照してください。