LoginSignup
3
3

More than 5 years have passed since last update.

RHEL 7 に Red Hat Ceph Storage 3 をインストール

Last updated at Posted at 2018-07-06

今回は、ceph を all-in-one でインストールしてみます。公式ドキュメントを参考にシンプルにインストールする手順を紹介します。

構成

さっそく、all-in-oneと言いましたが、clientだけは分割しています。client側でcephの操作と、ansible playbookを実行していこうと思います。また、ceph nodeには、予め vdb,vdc,vddというディスクを用意しておきました。

 client node
+----------+
|          |
|  client  |
|          |
+----------+

   ceph node
+-------------+
|     osd     |
|     mon     |
|     mgr     |
|             |
| vdb,vdc,vdd |
+-------------+

必要パッケージとansibleの準備

Ceph Node での準備

subscriptionを登録しておきます。

# subscription-manager register
# subscription-manager attach --pool=xxxx
# subscription-manager repos --disable=*

また、以下のポートを空けておきます。

systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld

// monitor node
firewall-cmd --zone=public --add-port=6789/tcp
firewall-cmd --zone=public --add-port=6789/tcp --permanent

// osd node && mgr node
firewall-cmd --zone=public --add-port=6800-7300/tcp
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

// mds node
firewall-cmd --zone=public --add-port=6800/tcp
firewall-cmd --zone=public --add-port=6800/tcp --permanent

Object Gateway nodeとして使う場合には、7480や80の設定も必要ですが、今回は使わないので省略します。また、アクセス元のネットワーク範囲を絞ったりした方が良いですが、今回は簡単のため省略です。Cheph Node側での準備は、これだけです。

Client Node での準備

Client Nodeで操作します。まずは、subscriptionを登録しておきます。

# subscription-manager register
# subscription-manager attach --pool=xxxx
# subscription-manager repos --disable=*

Clientからansibleを実行するので、ssh keyの準備とceph-ansibleパッケージのインストールしておきます。

# ssh-keygen // パスフレーズ等は入力せず、すべてenterで進めます。
# ssh-copy-id root@knakayam-rhel7.example.com
# ssh-copy-id root@knakayam-ceph-c1.example.com
# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-rpms
# yum -y install ceph-ansible

playbook の準備

ansibleを実行するclient nodeで準備していきます。

inventoryファイル

最初の構成通り、以下を設定しておきます。

[mons]
knakayam-ceph-c1.example.com

[mgrs]
knakayam-ceph-c1.example.com

[osds]
knakayam-ceph-c1.example.com

[clients]
knakayam-rhel7.example.com

cephパラメータの設定

ここからは、cephで使われるパラメータを設定していきます。すべて、/usr/share/ceph-ansible/以下のファイルに書き込んでいきます。

# cd /usr/share/ceph-ansible/
all.ymlの設定
# cd /usr/share/ceph-ansible/
# cp group_vars/all.yml.sample group_vars/all.yml
# vim group_vars/all.yml

all.ymlには、次の設定をしておきます。今回は、検証なのでpublic_networkもcluster_networkも同じものを利用しています。

ceph_rhcs_version: "3"
ceph_repository_type: cdn
rbd_cache: "true"
rbd_cache_writethrough_until_flush: "false"
rbd_client_directories: false

journal_size: 1024

## この設定項目だけは、環境によって変更が必要です ##
monitor_interface: eth0
public_network: 10.64.222.0/26
cluster_network: "{{ public_network }}"
## ココまで ##

ceph_conf_overrides:
  global:
    mon_osd_allow_primary_affinity: 1
    mon_clock_drift_allowed: 0.5
    osd_pool_default_size: 2
    osd_pool_default_min_size: 1
    mon_pg_warn_min_per_osd: 0
    mon_pg_warn_max_per_osd: 0
    mon_pg_warn_max_object_skew: 0
    mon_allow_pool_delete: true
  client:
    rbd_default_features: 1
osds.ymlの設定

こちらも、同様に/usr/share/ceph-ansible/以下のosds.ymlに設定します。

# cd /usr/share/ceph-ansible/
# cp group_vars/osds.yml.sample group_vars/osds.yml
# vim group_vars/osds.yml

構成で述べたように、準備しておいたvdb,vdcv,vddを指定します。osd_scenario: collocatedの設定も忘れずに。

devices:
  - /dev/vdb
  - /dev/vdc
  - /dev/vdd

osd_scenario: collocated
clients.ymlの設定
# cd /usr/share/ceph-ansible/
# cp group_vars/clients.yml.sample group_vars/clients.yml
# vim group_vars/clients.yml

以下の設定を追加するだけです。

copy_admin_key: true

ansibleの実行

いよいよ、playbookの実行です。やはりclient nodeでの実行になります。

# cd /usr/share/ceph-ansible/
# cp site.yml.sample site.yml
# ansible-playbook site.yml

RADOS Blcok Deviceを使ってみる

まずは、状態が健全であることを確認しておきましょう

[root@knakayam-rhel7-work ~]# ceph -s
  cluster:
    id:     3945dd03-69d2-43c0-b699-adb5819f22dc
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum knakayam-ceph-c1
    mgr: knakayam-ceph-c1(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   321 MB used, 27293 MB / 27614 MB avail
    pgs:

次に、testpoolという名前のpoolを作成します。

[root@knakayam-rhel7-work ~]# ceph osd pool create testpool 32 32
pool 'testpool' created

[root@knakayam-rhel7-work ~]# rbd pool init testpool

[root@knakayam-rhel7-work ~]# ceph osd pool ls
rbd
testpool

あっという間にpoolの作成までできるようになりました。次からは、Block Deviceを作っていきます。

RADOS Block Device を作成

先程作成したtestpoolからtestというrbdイメージを作成します。

[root@knakayam-rhel7-work ~]# rbd create testpool/test --size=128M

[root@knakayam-rhel7-work ~]# rbd -p testpool ls
test

rbd イメージ作成をしたら、deviceにマッピングします。

[root@knakayam-rhel7-work ~]# rbd map testpool/test
/dev/rbd0

[root@knakayam-rhel7-work ~]# rbd showmapped
id pool     image snap device
0  testpool test  -    /dev/rbd0

最後にマウントを試してみます。

[root@knakayam-rhel7-work ~]# mkfs.ext4 /dev/rbd0
[root@knakayam-rhel7-work ~]# mkdir /mnt/rbd
[root@knakayam-rhel7-work ~]# mount   /dev/rbd0 /mnt/rbd

クリーンアップ

作成したrbdイメージの削除は、以下のようになります。

[root@knakayam-rhel7-work ~]# umount /mnt/rbd/
[root@knakayam-rhel7-work ~]# rbd unmap /dev/rbd0
[root@knakayam-rhel7-work ~]# rbd showmapped
[root@knakayam-rhel7-work ~]# rbd rm testpool/test
Removing image: 100% complete...done.

cephクラスタ全てをアンインストールする場合には、purge-cluster.ymlを使います。

# ansible-playbook  /usr/share/ceph-ansible/infrastructure-playbooks/purge-cluster.yml

簡単な手順を実行して、CephをRHEL7にインストールしてみました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3