2.4. Ceph の設定

この Red Hat Quay の設定では、以下のように 3 ノードの Ceph クラスターを作成し、他にもいくつかのサポートノードを用意します。

  • ceph01、ceph02、ceph03 - Ceph Monitor、Ceph Manager、Ceph OSD の各ノード
  • ceph04 - Ceph RGW ノード
  • ceph05 - Ceph Ansible 管理ノード

Ceph ノードのインストールの詳細は、Red Hat Enterprise Linux への Red Hat Ceph Storage のインストール を参照してください。

Ceph ストレージクラスターを設定したら、Ceph Object Gateway (RADOS ゲートウェイとも呼ばれる) を作成します。詳細は、Ceph Object Gateway のインストール を参照してください。

2.4.1. 各 Ceph ノードのインストール

ceph01、ceph02、ceph03、ceph04、および ceph05 で、以下の作業を行います。

  1. Red Hat Ceph Storage をインストールするための要件 で、Ceph ノード設定の前提条件を確認します。特に以下を確認します。

  2. OSD ストレージを準備 (ceph01、ceph02、ceph03 のみ) します。3 つの OSD ノード (ceph01、ceph02、ceph03) で OSD ストレージを設定します。サポート対象のストレージタイプの詳細は、表 3 .2 の OSD Ansible 設定を参照してください。これは、後で Ansible 設定に入力します。この例では、OSD ノードのそれぞれに、OS とは別のフォーマットされていないブロックデバイス (/dev/sdb) が 1 つ設定されています。メタルにインストールする場合は、この目的用にマシンに別のハードドライブを追加するとよいでしょう。
  3. RHEL 7 インストールガイド に記載されている通り、Red Hat Enterprise Linux Server エディションをインストールします。
  4. Red Hat Ceph Storage Nodes の登録 で説明したように、各 Ceph ノードを登録してサブスクライブします。ここでは、必要な repo をサブスクライブする方法を説明します。

    # subscription-manager repos --disable=*
    # subscription-manager repos --enable=rhel-7-server-rpms
    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-rpms
  5. 各ノードに root 権限のある ansible ユーザーを作成します。任意の名前を選んでください。以下に例を示します。

    # USER_NAME=ansibleadmin
    # useradd $USER_NAME -c "Ansible administrator"
    # passwd $USER_NAME
    New password: *********
    Retype new password: *********
    # cat << EOF >/etc/sudoers.d/admin
    admin ALL = (root) NOPASSWD:ALL
    EOF
    # chmod 0440 /etc/sudoers.d/$USER_NAME

2.4.2. Ceph Ansible ノード (ceph05) の設定

Ceph Ansible ノード (ceph05) にログインし、以下のように設定します。この手順を実行するには、ceph01、ceph02、ceph03 の各ノードが稼働している必要があります。

  1. Ansible ユーザーのホームディレクトリーに、ceph-ansible Playbook で作成した一時的な値を保存するディレクトリーを作成します。

    # USER_NAME=ansibleadmin
    # sudo su - $USER_NAME
    [ansibleadmin@ceph05 ~]$ mkdir ~/ceph-ansible-keys
  2. ansible ユーザーにパスワードレスの ssh を有効にします。ceph05 で ssh-keygen を実行してから (パスフレーズは空のまま)、ceph01、ceph02、ceph03 システムの Ansible ユーザーにも、ssh-copy-id を実行して繰り返し、公開鍵をコピーします。

    # USER_NAME=ansibleadmin
    # sudo su - $USER_NAME
    [ansibleadmin@ceph05 ~]$ ssh-keygen
    [ansibleadmin@ceph05 ~]$ ssh-copy-id $USER_NAME@ceph01
    [ansibleadmin@ceph05 ~]$ ssh-copy-id $USER_NAME@ceph02
    [ansibleadmin@ceph05 ~]$ ssh-copy-id $USER_NAME@ceph03
    [ansibleadmin@ceph05 ~]$ exit
    #
  3. ceph-ansible パッケージをインストールします。

    # yum install ceph-ansible
  4. この 2 つのディレクトリーの間にシンボリックを作成します。

    # ln -s /usr/share/ceph-ansible/group_vars \
        /etc/ansible/group_vars
  5. 修正する Ceph サンプル yml ファイルのコピーを作成します。

    # cd /usr/share/ceph-ansible
    # cp group_vars/all.yml.sample group_vars/all.yml
    # cp group_vars/osds.yml.sample group_vars/osds.yml
    # cp site.yml.sample site.yml
  6. コピーした group_vars/all.yml ファイルを編集します。詳細は、表 3.1 の Ansible の一般的な設定を参照してください。以下に例を示します。

    ceph_origin: repository
    ceph_repository: rhcs
    ceph_repository_type: cdn
    ceph_rhcs_version: 3
    monitor_interface: eth0
    public_network: 192.168.122.0/24

    ご使用のネットワーク機器やアドレス範囲は、異なる場合があります。

  7. コピーした group_vars/osds.yml ファイルを編集します。詳細は、表 3.2 の OSD Ansible 設定を参照してください。この例では、各 OSD ノードの 2 番目のディスクデバイス (/dev/sdb) がデータとジャーナルの両方のストレージに使用されています。

    osd_scenario: collocated
    devices:
      - /dev/sdb
    dmcrypt: true
    osd_auto_discovery: false
  8. etc/ansible/hosts インベントリーファイルを編集して、Ceph ノードを Ceph モニター、OSD、マネージャーノードとして識別します。この例では、各ノードでストレージデバイスも識別されています。

    [mons]
    ceph01
    ceph02
    ceph03
    
    [osds]
    ceph01 devices="[ '/dev/sdb' ]"
    ceph02 devices="[ '/dev/sdb' ]"
    ceph03 devices="[ '/dev/sdb' ]"
    
    [mgrs]
    ceph01 devices="[ '/dev/sdb' ]"
    ceph02 devices="[ '/dev/sdb' ]"
    ceph03 devices="[ '/dev/sdb' ]"
  9. この行を /etc/ansible/ansible.cfg ファイルに追加して、Ansible Playbook の各実行結果の出力を Ansible ユーザーのホームディレクトリーに保存します。

    retry_files_save_path = ~/
  10. Ansible が、設定したすべての Ceph ノードに、Ansible ユーザーとして接続できることを確認します。

    # USER_NAME=ansibleadmin
    # sudo su - $USER_NAME
    [ansibleadmin@ceph05 ~]$ ansible all -m ping
    ceph01 | SUCCESS => {
        "changed": false,
        "ping": "pong"
    }
    ceph02 | SUCCESS => {
        "changed": false,
        "ping": "pong"
    }
    ceph03 | SUCCESS => {
        "changed": false,
        "ping": "pong"
    }
    [ansibleadmin@ceph05 ~]$
  11. ceph-ansible Playbook を (Ansible のユーザーとして) 実行します。

    [ansibleadmin@ceph05 ~]$ cd /usr/share/ceph-ansible/
    [ansibleadmin@ceph05 ~]$ ansible-playbook site.yml

    この時点で、Ansible Playbook が Ceph ノードをチェックし、要求したサービス向けに設定します。失敗した場合は、必要な修正を行い、コマンドを再実行してください。

  12. 3 つの Ceph ノード (ceph01、ceph02、または ceph03) のいずれかにログインし、Ceph クラスターの正常性を確認します。

    # ceph health
    HEALTH_OK
  13. 同じノードで、rados を使用してモニタリングが機能していることを確認します。

    # ceph osd pool create test 8
    # echo 'Hello World!' > hello-world.txt
    # rados --pool test put hello-world hello-world.txt
    # rados --pool test get hello-world fetch.txt
    # cat fetch.txt
    Hello World!

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

Ansible システム (cef05) で、Ceph Storage クラスターへの Ceph Object Gateway を設定します (最終的には cef04 で実行します)。詳細は、Ceph Object Gateway のインストール を参照してください。