Docker中怎么部署ceph存储集群

2023-04-24,

这篇文章将为大家详细讲解有关Docker中怎么部署ceph存储集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

  1. Docker 拉取ceph/daemon版本

docker pull ceph/daemon

下载后查看images列表,docker images,看到如图所示:

  1. Docker创建ceph专用网络ceph-net

执行命令创建网络,并查看ceph-net信息

docker network create ceph-net
docker inspect ceph-net

  1. 根据ceph网络创建ceph monitor

vi cre_mon.sh

docker run -d --net=ceph-net -v ${PWD}/etc:/etc/ceph -v ${PWD}/lib:/var/lib/ceph -e MON_IP=172.18.0.2 -e CEPH_PUBLIC_NETWORK=172.18.0.0/16 --name=mon ceph/daemon mon

执行sh cre_mon.sh 创建monitor容器: 如图所示,创建成功。

  1. 创建mgr容器

docker run -d --net=ceph-net -v ${PWD}/etc:/etc/ceph -v ${PWD}/lib:/var/lib/ceph -e MON_IP=172.18.0.2 -e CEPH_PUBLIC_NETWORK=172.18.0.0/16 --name=mgr ceph/daemon mgr

  1. 创建osd

vi cre_osd1.sh

docker run -d --net=ceph-net
--privileged=true
-v ${PWD}/etc:/etc/ceph
-v ${PWD}/lib:/var/lib/ceph
-v /dev/:/dev/
-e OSD_DEVICE=/dev/sdb
-e OSD_TYPE=disk
-e OSD_FORCE_ZAP=1
--name=osd1
ceph/daemon osd

执行sh cre_osd1.sh 后发现容器没有成功启动,查看logs,docker logs osd1发现报错

2020-10-13 06:44:58 /opt/ceph-container/bin/entrypoint.sh: static: does not generate config 2020-10-13 06:44:58 /opt/ceph-container/bin/entrypoint.sh: ERROR- /var/lib/ceph/bootstrap-osd/ceph.keyring must exist. You can extract it from your current monitor by running 'ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring'

通过登录mon执行生成keyring操作

docker exec -it mon bash
ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

生成完成后,重新执行docker start osd1,仍然无法启动。原理ceph-disk已经被弃用了。 对于does not generate config错误,是因为没有生成密钥,执行命令: docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

  • 使用ceph-volume来创建osd

首先执行prepare脚本:

# Execute Scripts

cat | docker run --rm -i --net=ceph-net --privileged=true -v ${PWD}/etc:/etc/ceph -v ${PWD}/lib:/var/lib/ceph -v /dev/:/dev/ --entrypoint=bash ceph/daemon << EOF

ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring vgs | grep ceph | awk '{print $1}' | xargs vgremove -y; pvremove /dev/sd{b,c,d,e} ceph-volume lvm prepare --no-systemd --data /dev/sdb ceph-volume lvm prepare --no-systemd --data /dev/sdc ceph-volume lvm prepare --no-systemd --data /dev/sdd ceph-volume lvm prepare --no-systemd --data /dev/sde exit EOF

然后根据prepare完成的OSD_ID创建container激活:

docker run -d --net=ceph-net
--restart=always
--privileged=true
-v ${PWD}/etc:/etc/ceph
-v ${PWD}/lib:/var/lib/ceph
-v ${PWD}/log:/var/log/ceph
-v /dev/:/dev/
-e OSD_ID=0
--name=osd.0
ceph/daemon osd_ceph_volume_activate

仿照如上命令创建osd.1,osd.2,osd3容器。 docker ps查看osd已经在运行中。

关于Docker中怎么部署ceph存储集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

《Docker中怎么部署ceph存储集群.doc》

下载本文的Word格式文档,以方便收藏与打印。