#構成
・OS:CentOS7
・ceph:13.2.2
・サーバー構成:OSD兼MONノード3台、MDSノード1台、管理ノード1台
※
OSD(Object Storage Daemon):データのレプリカの作成など
MON(Monitor):障害監視
MDS(Metadeta Server Daemon):CephFSによるクライアントからのアクセス制御
#OS設定
・Firewall,SELinux無効化
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config ←「disabled」に変更
・hosts設定
「/etc/hosts」ファイルに以下を追記
192.168.11.115 ceph-node1.vsphere.local ceph-node1
192.168.11.116 ceph-node2.vsphere.local ceph-node2
192.168.11.117 ceph-node3.vsphere.local ceph-node3
192.168.11.118 ceph-mds.vsphere.local ceph-mds
192.168.11.119 ceph-admin.vsphere.local ceph-admin
・管理ノードでの鍵作成(管理ノード)
ssh-keygen -t rsa
・ノードへの公開鍵コピー
ssh-copy-id root@ceph-node1.vsphere.local
ssh-copy-id root@ceph-node2.vsphere.local
ssh-copy-id root@ceph-node3.vsphere.local
ssh-copy-id root@ceph-mds.vsphere.local
#Cephインストールと設定(管理ノード)
・リポジトリ追加
cat << EOM > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOM
・ceph-deployパッケージインストール
yum install ceph-deploy
・パッケージ確認
[root@ceph-admin ~]# rpm -qa | grep ceph
ceph-deploy-2.0.1-0.noarch
・pythonツールインストール
yum install python-setuptools
※これをしないと、以下エラーが出た
[root@ceph-admin my-cluster]# ceph-deploy
Traceback (most recent call last):
File "/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources
・クラスタ用ディレクトリ作成
mkdir /root/my-cluster
cd /root/my-cluster
・my-clusterにOSDノードを登録
ceph-deploy new ceph-node1.vsphere.local ceph-node2.vsphere.local ceph-node3.vsphere.local
・設定ファイル確認
[root@ceph-admin my-cluster]# cat ceph.conf
[global]
fsid = 2281bd02-48d8-4be2-be94-e28e3b84273c
mon_initial_members = ceph-node1, ceph-node2, ceph-node3
mon_host = 192.168.11.115,192.168.11.116,192.168.11.117
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
・ノード群にCeph関連パッケージをインストール
GPGキーやEPELリポジトリ、CephリポジトリなどのCephに関連するパッケージがインストールされる
[root@ceph-admin my-cluster]# ceph-deploy install ceph-node1.vsphere.local ceph-node2.vsphere.local ceph-node3.vsphere.local ceph-admin.vsphere.local ceph-mds.vsphere.local
中略
[ceph-mds.vsphere.local][DEBUG ] Complete!
[ceph-mds.vsphere.local][INFO ] Running command: ceph --version
[ceph-mds.vsphere.local][DEBUG ] ceph version 13.2.2 (02899bfda814146b021136e9d8e80eba494e1126) mimic (stable)
※時間がかかった場合、
[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'
と出た。
その際、実行中だったサーバーとその後ろだけ残して再実行
例(ceph-admin.vsphere.localを実行中だった場合):
ceph-deploy install ceph-admin.vsphere.local ceph-mds.vsphere.local
・ceph.confファイルの「mon_host」に従い、監視のノードを構成
ceph-deploy mon create-initial
※「mon_host」がドメイン名無しで記載されているため、その名前で名前解決できないとエラーとなった
・cephコマンドを利用可能にする
ceph-deploy admin ceph-node1.vsphere.local ceph-node2.vsphere.local ceph-node3.vsphere.local ceph-admin.vsphere.local ceph-mds.vsphere.local
・cephコマンドの確認(監視ノードの稼働確認)
ceph mon stat
・OSD設定
各ノードの/dev/sdbをデータ用として指定する
ceph-deploy osd create --data /dev/sdb ceph-node1.vsphere.local
ceph-deploy osd create --data /dev/sdb ceph-node2.vsphere.local
ceph-deploy osd create --data /dev/sdb ceph-node3.vsphere.local
・OSDノードの状況確認
[root@ceph-admin my-cluster]# ceph osd stat
3 osds: 3 up, 3 in; epoch: e23
・MDSノード設定
ceph-deploy mds create ceph-mds.vsphere.local
・MDSノードの状況確認
[root@ceph-admin my-cluster]# ceph mds stat
, 1 up:standby
・cephストレージクラスタ全体の状態確認
[root@ceph-admin my-cluster]# ceph health
HEALTH_OK
[root@ceph-admin my-cluster]# ceph -s
cluster:
id: 2281bd02-48d8-4be2-be94-e28e3b84273c
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3
mgr: ceph-admin(active)
osd: 3 osds: 3 up, 3 in
data:
pools: 4 pools, 32 pgs
objects: 14 objects, 1.5 KiB
usage: 3.0 GiB used, 147 GiB / 150 GiB avail
pgs: 32 active+clean
・Manager作成
ceph-deploy mgr create ceph-admin.vsphere.local
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
ceph dashboard set-login-credentials <username> <password>
radosgw-admin user create --uid=<username> --display-name=<displayname> --system
# ここで表示されたJSON形式ユーザー情報を適当なファイルに保存
ceph dashboard set-rgw-api-access-key <JSONの access key>
ceph dashboard set-rgw-api-secret-key <JSONの secret key>
# ダッシュボード再起動
ceph mgr module disable dashboard
ceph mgr module enable dashboard
・ダッシュボードにアクセス
https://192.168.11.119:8443
#オブジェクトストレージ作成(管理ノード)
・プール作成
ceph osd pool create pool01 128
128:プールのプレースメントグループ(レプリカをどのOSDノードに割り当てるかを計算するために必要な値)の数
・プールのリスト表示
ceph osd lspools
・オブジェクトをプールと紐づけ
ceph osd map pool01 obj01
・テスト
[root@ceph-admin ~]# echo "Test01" > testfile01.txt ←テストファイル作成
[root@ceph-admin ~]# rados put obj01 ./testfile01.txt --pool=pool01 ←pool01の中のobj01としてテストファイルをput
[root@ceph-admin ~]# rados -p pool01 ls ←pool01が持つオブジェクトを確認
obj01
[root@ceph-admin ~]# rados get obj01 ./output01.txt --pool=pool01 ←obj01をoutput.txtに書き出し
[root@ceph-admin ~]# cat output01.txt
Test01
#ブロックストレージ作成(管理ノード)
・プール作成
ceph osd pool create pool02 10
・プール初期化
rbd pool init pool02
・イメージファイル作成(4GB)
rbd create vol01 -p pool02 --size 10G --image-feature layering
・イメージファイル確認
[root@ceph-admin ~]# rbd -p pool02 ls -l
NAME SIZE PARENT FMT PROT LOCK
vol01 10 GiB 2
・イメージファイルとクライアントのデバイスをマッピング
[root@ceph-admin ~]# rbd map vol01 -p pool02
/dev/rbd0
・マッピング確認
[root@ceph-admin ~]# rbd showmapped
id pool image snap device
0 pool02 vol01 - /dev/rbd0
・デバイス確認
[root@ceph-admin dev]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
tqsda1 8:1 0 500M 0 part /boot
mqsda2 8:2 0 49.5G 0 part
tqcentos-root 253:0 0 45.6G 0 lvm /
mqcentos-swap 253:1 0 3.9G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
rbd0 252:0 0 10G 0 disk
・ファイルシステム構築
[root@ceph-admin /]# mkdir /ceph-disk
[root@ceph-admin /]# fdisk /dev/rbd0
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf4439926.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (8192-20971519, default 8192):
Using default value 8192
Last sector, +sectors or +size{K,M,G} (8192-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@ceph-admin /]# mkfs.xfs -f /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=16, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@ceph-admin /]# mount /dev/rbd0 /ceph-disk
[root@ceph-admin /]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root xfs 47781076 1785548 45995528 4% /
devtmpfs devtmpfs 1928504 0 1928504 0% /dev
tmpfs tmpfs 1940480 0 1940480 0% /dev/shm
tmpfs tmpfs 1940480 8984 1931496 1% /run
tmpfs tmpfs 1940480 0 1940480 0% /sys/fs/cgroup
/dev/sda1 xfs 508588 301556 207032 60% /boot
tmpfs tmpfs 388096 0 388096 0% /run/user/1000
/dev/rbd0 xfs 10475520 33328 10442192 1% /ceph-disk
#参考
http://docs.ceph.com/docs/mimic/start/quick-ceph-deploy/
http://metonymical.hatenablog.com/entry/2018/07/07/200337