多台云服务器+Docker部署Ceph存储系统
本文仅描述与使用云服务器+Docker部署Ceph存储系统 不一样的部署步骤。使用多台云服务器部署,与真实生产环境更相似,也更能深入到各个Ceph 组件(mon、osd、rgw、rbd、mds)去理解它们各自的功能;
闲话少叙,let’s go;
准备工作
云服务器
到公有云服务商上购买3台云服务器,每台配置至少2个硬盘(system 40G+resource 20G);Note:ali的云服务器必须要在同一可用区,才能内网互联,例如同在“华南 1 可用区 A”;
这样安装最快:原来安装好docker的server做镜像,新购server可以直接选该镜像安装(可以省去yum install docker 与 docker pull image的漫长时间);
做如下规划:
cluster1 : mon, osd, rgw, mds
cluster2 : mon, osd
cluster3 : mon, osd
[root@cluster ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.18.95 cluster1
172.18.18.96 cluster2
172.18.18.97 cluster3
Ceph部署
Ceph镜像选择
这一次,我们换了ceph/daemon 镜像,该镜像中Ceph的各个组件都能作为docker实例启动,非常直观,易于理解与调试;
docker pull ceph/daemon; docker images ceph/daemon
mon
sudo docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph -e MON_IP=172.18.18.95 -e CEPH_PUBLIC_NETWORK=172.18.18.0/24 ceph/daemon mon
osd
透传了OSD_FORCE_ZAP=1环境变量给osd,用于格式化vdb;
sudo docker run -d --net=host --name=myosd --privileged=true -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph -v /dev/:/dev/ -e OSD_DEVICE=/dev/vdb -e OSD_FORCE_ZAP=1 ceph/daemon osd_ceph_disk
mds
sudo docker run -d --net=host --name=mds -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ -e CEPHFS_CREATE=1 ceph/daemon mds
rgw
指定civetweb端口为80,易于s3联调;
sudo docker run -d --net=host --name=rgw -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph -e RGW_CIVETWEB_PORT=80 ceph/daemon rgw
看一看
3 mons,3 osds,12 pools(rbd + rgw + cephfs);
root@cluster1:/# ceph -s
cluster b5cd9253-1c61-4190-83ae-85222c491947
health HEALTH_OK
monmap e4: 3 mons at {cluster1=172.18.18.95:6789/0,cluster3=172.18.18.99:6789/0,cluster4=172.18.18.98:6789/0}
election epoch 10, quorum 0,1,2 cluster1,cluster4,cluster3
fsmap e5: 1/1/1 up {0=mds-cluster1=up:active}
mgr no daemons active
osdmap e38: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds,require_kraken_osds
pgmap v1983: 152 pgs, 12 pools, 7466 bytes data, 235 objects
118 MB used, 60988 MB / 61106 MB avail
152 active+clean
一切重来
for i in {mon,myosd,mds,rgw}; do docker stop $i; done
for i in {mon,myosd,mds,rgw}; do docker rm $i; done
rm -rf /etc/ceph/*; rm -rf /var/lib/ceph/*