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 で、以下の作業を行います。
Red Hat Ceph Storage をインストールするための要件 で、Ceph ノード設定の前提条件を確認します。特に以下を確認します。
- OSD ノードで RAID コントローラー を使用するかどうかを決定します。
- Ceph のネットワーク設定 に別のクラスターネットワークを使用するかどうかを決定します。
-
OSD ストレージを準備 (ceph01、ceph02、ceph03 のみ) します。3 つの OSD ノード (ceph01、ceph02、ceph03) で OSD ストレージを設定します。サポート対象のストレージタイプの詳細は、表 3 .2 の OSD Ansible 設定を参照してください。これは、後で Ansible 設定に入力します。この例では、OSD ノードのそれぞれに、OS とは別のフォーマットされていないブロックデバイス (
/dev/sdb) が 1 つ設定されています。メタルにインストールする場合は、この目的用にマシンに別のハードドライブを追加するとよいでしょう。 - RHEL 7 インストールガイド に記載されている通り、Red Hat Enterprise Linux Server エディションをインストールします。
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
各ノードに 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 の各ノードが稼働している必要があります。
Ansible ユーザーのホームディレクトリーに、ceph-ansible Playbook で作成した一時的な値を保存するディレクトリーを作成します。
# USER_NAME=ansibleadmin # sudo su - $USER_NAME [ansibleadmin@ceph05 ~]$ mkdir ~/ceph-ansible-keys
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 #
ceph-ansible パッケージをインストールします。
# yum install ceph-ansible
この 2 つのディレクトリーの間にシンボリックを作成します。
# ln -s /usr/share/ceph-ansible/group_vars \ /etc/ansible/group_vars修正する 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
コピーした 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
ご使用のネットワーク機器やアドレス範囲は、異なる場合があります。
コピーした
group_vars/osds.ymlファイルを編集します。詳細は、表 3.2 の OSD Ansible 設定を参照してください。この例では、各 OSD ノードの 2 番目のディスクデバイス (/dev/sdb) がデータとジャーナルの両方のストレージに使用されています。osd_scenario: collocated devices: - /dev/sdb dmcrypt: true osd_auto_discovery: false
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' ]"
この行を
/etc/ansible/ansible.cfgファイルに追加して、Ansible Playbook の各実行結果の出力を Ansible ユーザーのホームディレクトリーに保存します。retry_files_save_path = ~/
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 ~]$ceph-ansible Playbook を (Ansible のユーザーとして) 実行します。
[ansibleadmin@ceph05 ~]$ cd /usr/share/ceph-ansible/ [ansibleadmin@ceph05 ~]$ ansible-playbook site.yml
この時点で、Ansible Playbook が Ceph ノードをチェックし、要求したサービス向けに設定します。失敗した場合は、必要な修正を行い、コマンドを再実行してください。
3 つの Ceph ノード (ceph01、ceph02、または ceph03) のいずれかにログインし、Ceph クラスターの正常性を確認します。
# ceph health HEALTH_OK
同じノードで、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 のインストール を参照してください。