重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Docker中怎么部署ceph存储集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
目前创新互联公司已为千余家的企业提供了网站建设、域名、网页空间、网站托管、企业网站设计、文山州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Docker 拉取ceph/daemon版本
docker pull ceph/daemon
下载后查看images列表,docker images
,看到如图所示:
Docker创建ceph专用网络ceph-net
执行命令创建网络,并查看ceph-net信息
docker network create ceph-net docker inspect ceph-net
根据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容器: 如图所示,创建成功。
创建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
创建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存储集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。