簡単にCeph構築
先日Ceph構築したのでまとめようかと思いました。ハイ
環境
VirtualBoxでVMを作り、VMを作り、そのうえでCephを構築しました。
構成
準備
VM準備
VM4台は下の表と同じに設定しています。
ハードウェアなど | スペックなど |
---|---|
CPU | 1コア |
HDD(sda) | 15GB |
HDD(sdb) | 10GB |
LAN | Intel PRO/1000MT(NAT) |
LAN | Intel PRO/1000MT(ホストオンリーアダプタ) |
LAN | Intel PRO/1000MT(内部ネットワーク) |
OS | Ubuntu20.04 LTS |
構築手順
※全部root権限で設定します!(めんどくさかった)
- 事前準備を行う。
- Cephadmのインストールとブートストラップ実行
- CephCLIの有効化
- それぞれのノードに対してSSHを可能にする
- Cephクラスタにノードを追加する
- CephクラスタにOSD(Object Storage Device)を登録する
- CephクラスタにMON(Monitor)を追加する
事前準備
それぞれのノードで実行する
root@ceph1:/#apt install -y ntp ntpdate ntp-doc
root@ceph1:/#ntpdate ntp.nict.jp
root@ceph1:/#hwclock --systohc
root@ceph1:/#systemctl enable ntp
root@ceph1:/#systemctl start ntp
root@ceph1:/#apt install -y docker docker.io
root@ceph1:/#systemctl enable docker
root@ceph1:/#systemctl start docker
root@ceph1:/#apt install -y python3
/etc/hosts/
追記
192.168.6.1 ceph1
192.168.6.2 ceph2
192.168.6.3 ceph3
192.168.6.4 ceph4
/etc/ssh/sshd-config
追記
PermitRootLogin yes
root@ceph1:/#systemctl restart sshd
Cephadmのインストールとブートストラップ実行
root@ceph1:/#apt install -y cephadm
root@ceph1:/#cephadm bootstrap --mon-ip 192.168.6.1
CephCLIの有効化
root@ceph1:/#cephadm add-repo --release octpus
root@ceph1:/#cephadm install ceph-common
#cephパッケージがインストールされたコンテナでbashシェルを起動
root@ceph1:/#cephadm shell
root@ceph1:/#exit
#cephコマンドが使えるか確認
root@ceph1:/#ceph -s
### ceph1からそれぞれのノードに対してSSHを可能にする
root@ceph1:/#ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.6.2
root@ceph1:/#ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.6.3
root@ceph1:/#ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.6.4
Cephクラスタにノードを追加する
root@ceph1:/#ceph orch host add ceph2 192.168.6.2
root@ceph1:/#ceph orch host add ceph3 192.168.6.3
CephクラスタにOSD(Object Storage Device)を登録する
OSDとして追加できるデバイスを確認する
root@ceph1:/#ceph orch device ls
Hostname Path Type Serial Size Health Ident Fault Available
ceph1 /dev/sdb hdd VBd7a4a7e5-90c04f3c 10.7G Unknown N/A N/A Yes
ceph2 /dev/sdb hdd VB9cbef998-bd4fb4f1 10.7G Unknown N/A N/A Yes
ceph3 /dev/sdb hdd VBa7daca68-6baffa35 10.7G Unknown N/A N/A Yes
使用可能なデバイスすべてをOSDへ追加
root@ceph1:/# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
cephに追加された確認する
root@ceph1:/#ceph -s
cluster:
id: bbd98972-948c-11ec-a7f6-7739cf49ecc6
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 6m)
mgr: ceph1.khwhcg(active, since 57m), standbys: ceph2.aczbit
osd: 3 osds: 3 up (since 5m), 3 in (since 5m)
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs: 1 active+clean
※特定のデバイスをOSDへ登録する方法
root@ceph1:/#ceph orch demon add osd ceph2:/dev/sdb
CephクラスタにMON(Monitor)を追加する
既にCephクラスタ内の全てのノードにはMONが動作している。しかし新たに追加する場合も新たに追加することも考え、追加方法も以下に示す。今回はceph2を新しく追加するという仮定で行った。
root@ceph1:/#ceph orch apply mon ceph2
Scheduled mon update...
root@ceph1:/#ceph -s
cluster:
id: bbd98972-948c-11ec-a7f6-7739cf49ecc6
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 4s)
mgr: ceph1.khwhcg(active, since 87m), standbys: ceph2.aczbit
osd: 3 osds: 3 up (since 34m), 3 in (since 34m)
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs: 1 active+clean
ブロックストレージとして利用する
root@ceph1:/#ssh ceph4 “apt install -y ceph-common”
root@ceph1:/#scp /etc/ceph/ceph.conf ceph4:/etc/ceph/ceph.conf
root@ceph1:/#scp /etc/ceph/ceph.client.admin.keyring ceph4:/etc/ceph/
root@ceph1:/#scp ceph4 “chown ceph. /etc/ceph/ceph.*”
root@ceph4:/#ceph osd pool create rbd 128
root@ceph4:/#ceph osd pool set rbd pg_autoscale_mode on
root@ceph4:/#rbd pool init rbd
root@ceph4:/#ceph osd pool autoscale-staus
root@ceph4:/#rbd create –size 5G –pool rbd rbd01
root@ceph4:/#rbd map rbd01
root@ceph4:/#mkfs.xfs /dev/rbd0
root@ceph4:/#mount /dev/rbd0 /mnt
root@ceph4:/# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 445M 0 445M 0% /dev
tmpfs tmpfs 98M 1.1M 97M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 14G 4.3G 8.8G 34% /
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda2 ext4 976M 108M 802M 12% /boot
/dev/loop0 squashfs 56M 56M 0 100% /snap/core18/1944
/dev/loop1 squashfs 70M 70M 0 100% /snap/lxd/19188
/dev/loop2 squashfs 32M 32M 0 100% /snap/snapd/10707
tmpfs tmpfs 98M 0 98M 0% /run/user/1000
/dev/rbd0 xfs 5.0G 69M 5.0G 2% /mnt
動作確認
root@ceph4:~# dd if=/dev/zero of=/mnt/write.tmp ibs=1M obs=1M count=1024
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 72.1003 s, 14.9 MB/s
root@ceph1:~# ceph -s
cluster:
id: bbd98972-948c-11ec-a7f6-7739cf49ecc6
health: HEALTH_WARN
3 hosts fail cephadm check
clock skew detected on mon.ceph1, mon.ceph2
services:
mon: 3 daemons, quorum ceph3,ceph1,ceph2 (age 2h)
mgr: ceph1.khwhcg(active, since 19h), standbys: ceph2.aczbit
osd: 3 osds: 3 up (since 2d), 3 in (since 2d)
data:
pools: 2 pools, 33 pgs
objects: 276 objects, 1.0 GiB
usage: 6.4 GiB used, 24 GiB / 30 GiB avail
pgs: 33 active+clean
増えてる!!!
まとめ
構築できた!!!!!!!
全てDockerコンテナで動くのでとにかく楽でした。またYAML形式で書いて設定することもできるのでAnsibleとか使わなくてもいけます!!あと実は、Webダッシュボードも使えます。一番最初にブートストラップを実行するとIPアドレスと、ユーザとパスワードが表示されているのでアクセスして設定することもできます。
やったね!
参考文献
https://docs.ceph.com/en/pacific/start/intro/
https://www.server-world.info/query?os=Ubuntu_20.04&p=ceph15&f=3