使用 Docker 快速部署 Ceph

至少需要三台虚拟机或者物理机,这里使用虚拟机

每台虚拟机至少需要两块硬盘(一块系统盘,一块OSD),本例中有三块硬盘

部署流程(博客使用的markdown解析器不支持流程图使用图片代替)

liuchengtu.png

主机规划

biaoge.png

安装 docker

登录 获取自己的阿里云 docker 加速地址

安装升级 docker 客户端

# curl -sSL | sh -

使用 docker 加速器
可以通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器,注意修改使用自己的加速地址

# mkdir -p /etc/docker # tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://******.mirror.aliyuncs.com"] } EOF # systemctl daemon-reload # systemctl restart docker # systemctl enable docker 启动 MON

下载 ceph daemon 镜像

# docker pull ceph/daemon

启动第一个 mon
在 node1 上启动第一个 mon,注意修改 MON_IP

# docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -e MON_IP=192.168.3.123 \ -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ ceph/daemon mon

查看容器

# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b79a02c40296 ceph/daemon "/entrypoint.sh mon" About a minute ago Up About a minute sad_shannon

查看集群状态

# docker exec b79a02 ceph -s cluster 96ae62d2-2249-4173-9dee-3a7215cba51c health HEALTH_ERR no osds monmap e2: 1 mons at {node01=192.168.3.123:6789/0} election epoch 4, quorum 0 node01 mgr no daemons active osdmap e1: 0 osds: 0 up, 0 in flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 64 creating

复制配置文件
将 node1 上的配置文件复制到 node02 和 node03,复制的路径包含/etc/ceph和/var/lib/ceph/bootstrap-*下的所有内容。

# ssh root@node2 mkdir -p /var/lib/ceph # scp -r /etc/ceph root@node2:/etc # scp -r /var/lib/ceph/bootstrap* root@node2:/var/lib/ceph # ssh root@node3 mkdir -p /var/lib/ceph # scp -r /etc/ceph root@node3:/etc # scp -r /var/lib/ceph/bootstrap* root@node3:/var/lib/ceph

启动第二个和第三个 mon
在 node02 上执行以下命令启动 mon,注意修改 MON_IP

# docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -e MON_IP=192.168.3.124 \ -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ ceph/daemon mon

在 node03 上执行以下命令启动 mon,注意修改 MON_IP

# docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -e MON_IP=192.168.3.125 \ -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \ ceph/daemon mon

查看在 node01 上集群状态

# docker exec b79a02 ceph -s cluster 96ae62d2-2249-4173-9dee-3a7215cba51c health HEALTH_ERR 64 pgs are stuck inactive for more than 300 seconds 64 pgs stuck inactive 64 pgs stuck unclean no osds monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} election epoch 12, quorum 0,1,2 node01,node02,node03 mgr no daemons active osdmap e1: 0 osds: 0 up, 0 in flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 64 creating

可以看到三个 mon 已经正确启动

启动 OSD

每台虚拟机准备了两块磁盘作为 osd,分别加入到集群,注意修改磁盘

# docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -v /dev/:/dev/ \ --privileged=true \ -e OSD_FORCE_ZAP=1 \ -e OSD_DEVICE=/dev/sdb \ ceph/daemon osd_ceph_disk # docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -v /dev/:/dev/ \ --privileged=true \ -e OSD_FORCE_ZAP=1 \ -e OSD_DEVICE=/dev/sdc \ ceph/daemon osd_ceph_disk

按照同样方法将 node02 和 node03 的 sdb、sdc 都加入集群

查看集群状态

# docker exec b79a ceph -s cluster 96ae62d2-2249-4173-9dee-3a7215cba51c health HEALTH_OK monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} election epoch 12, quorum 0,1,2 node01,node02,node03 mgr no daemons active osdmap e63: 6 osds: 6 up, 6 in flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v157: 64 pgs, 1 pools, 0 bytes data, 0 objects 212 MB used, 598 GB / 599 GB avail 64 active+clean

可以看到 mon 和 osd 都已经正确配置,切集群状态为 HEALTH_OK

创建 MDS

使用以下命令在 node01 上启动 mds

# docker run -d \ --net=host \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -e CEPHFS_CREATE=1 \ ceph/daemon mds 启动 RGW ,并且映射 80 端口

使用以下命令在 node01 上启动 rgw,并绑定 80 端口

# docker run -d \ -p 80:80 \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ ceph/daemon rgw 集群的最终状态 # docker exec b79a02 ceph -s cluster 96ae62d2-2249-4173-9dee-3a7215cba51c health HEALTH_OK monmap e4: 3 mons at {node01=192.168.3.123:6789/0,node02=192.168.3.124:6789/0,node03=192.168.3.125:6789/0} election epoch 12, quorum 0,1,2 node01,node02,node03 fsmap e5: 1/1/1 up {0=mds-node01=up:active} mgr no daemons active osdmap e136: 6 osds: 6 up, 6 in flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v1460: 136 pgs, 10 pools, 3829 bytes data, 223 objects 254 MB used, 598 GB / 599 GB avail 136 active+clean

更多Ceph相关教程见以下内容

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c2c03d86de0ffa48c76c07b450793a5.html