run ceph in docker

申明:基本安装是按照http://dockone.io/article/436来进行的,但原文中ceph集群的搭建不够完整,我这里会做一些补充及说明。


1、   下载mon和osd镜像

[root@ubuntu1 ~]# docker pull index.alauda.cn/georce/mon:hammer

[root@ubuntu1 ~]# docker pull index.alauda.cn/georce/osd:hammer

2、   一条命令搭建mon

[root@ubuntu1~]# docker run -itd --name=mon --net=host -e MON_NAME=mymon -e MON_IP=192.168.1.100 -v /etc/ceph:/etc/ceph index.alauda.cn/georce/mon:hammer

这里网络选取了主机模式,另外需要注意的就是mon的ip,也就是本机的ip,这条命令会将映射本机/etc/ceph目录到container中。命令执行完成后,会在该目录中创建出ceph需要的文件。

3、   查看mon的日志

[root@ubuntu1 ~]# docker logs -f mon

4、   编辑ceph配置文件

[root@ubuntu1 ~]# vi ceph.conf

[global]

fsid = 4efc5ee7-8982-4bf4-808b-15372862fb78  

mon initial members = mymon

mon host = 192.168.1.100

auth cluster required = cephx

auth service required = cephx

auth client required = cephx

osd crush chooseleaf type = 0

osd journal size = 100

osd pool default pg num = 8

osd pool default pgp num = 8

osd pool default size = 1

public network = 192.168.1.0/24

cluster network = 192.168.1.0/24

5、   重启mon

[root@ubuntu1 ~]# docker restart mon

6、   两条命令创建osd

[root@ubuntu1 ~]# docker exec mon ceph osd create   生成osd的id

[root@ubuntu1 ~]# docker run -itd --name=osd0 --net=host -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -e MON_IP=192.168.1.100 -v /etc/ceph:/etc/ceph -v /opt/osd/0:/var/lib/ceph/osd/ceph-0 index.alauda.cn/georce/osd:hammer

注意osd的目录,也就是会说直接将host的目录映射到容器里供osd使用,这是一种方式。其实还有另外一种方式,就是将设备穿透到container里,然后由container格式化及创建文件系统来使用磁盘。

7、   查看ceph集群状态

[root@ubuntu1 ~]# docker exec -it mon ceph -s

集群默认会有一个叫做rbd的pool,默认副本是1,也就是说只有一个osd,pg应该也会达成active+clean, 但事实上pg没有达成active+clean的,不清楚原因。但一个副本显然没有意义,因此我们再增加osd。

那篇文章到此就结束了,这里继续补充如下。


8、   再创建一个osd

[root@ubuntu1 ~]# docker exec mon ceph osdcreate   生成osd的id

[root@ubuntu1 ~]# docker run -itd --name=osd1--net=host -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -eMON_IP=192.168.1.100 -v /etc/ceph:/etc/ceph -v /opt/osd/1:/var/lib/ceph/osd/ceph-1index.alauda.cn/georce/osd:hammer

我们又创建了一个osd,但pg还没有达到active+clean状态。

至此,我们在一个节点上,运行了三个容器,其中一个是mon,另外两个分别是一个osd。但将osd都运行在一个host上没有意义,因此我们在另一个host上也开启两个osd。


在另外一个节点上:

1、  注意保持第一个几点的防火墙开放必要的端口 6789-6810等,能关最好先将防火墙关掉

2、  从第一个几点拷贝/etc/ceph目录到第二个节点

3、  开始创建osd,还是两条命令,但要注意,第一条命令只能在第一个几点上执行

[root@ubuntu1 ~]# docker exec mon ceph osdcreate   生成osd的id

[root@ubuntu2~]# docker run -itd--name=osd1 --net=host -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=mymon -eMON_IP=192.168.1.100 -v /etc/ceph:/etc/ceph -v /opt/osd/2:/var/lib/ceph/osd/ceph-2index.alauda.cn/georce/osd:hammer

4、  同样的命令可以创建新的osd


至此,现在ceph集群包含一个mon,四个osd分布在两个host上,分布如下:

root@ubuntu1:~# ceph osd tree

ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY 

-1 4.00000 root default                                       

-2 2.00000     host ubuntu1                                   

 0 1.00000         osd.0         up  1.00000          1.00000 

 1 1.00000         osd.1         up  1.00000          1.00000 

-3 2.00000     host ubuntu2                                   

 3 1.00000         osd.3         up  1.00000          1.00000 

 2 1.00000         osd.2         up  1.00000          1.00000 


如果pg没有达成active+claen状态,我们可以删除默认的pool(叫rbd),然后重建一个pool,并且将副本数修改为2.


10、删除原来的pool,然后新建一个pool。

新建的pool中所有pg都达成了active+clean状态。

 ceph osd pool create volumes 64 64

 ceph osd pool set volumes size 2

root@ubuntu1:~# ceph -s

    cluster f116eaa2-c97b-4351-b264-6cab9963dd9a

     health HEALTH_OK

     monmap e1: 1 mons at {mymon=10.10.10.61:6789/0}

            election epoch 1, quorum 0 mymon

     osdmap e34: 4 osds: 4 up, 4 in

      pgmap v152: 128 pgs, 2 pools, 0 bytes data, 0 objects

            10503 MB used, 65443 MB / 80106 MB avail

                 128 active+clean 


新节点创建osd,需要注意的就是防火墙和配置文件。

 

这也只是一个体验,不需要我们去解决ceph安装过程中包依赖的问题,确实便捷了很多,但除此之外,利用docker的技术我们也更容易对osd进行资源限制,但除此之外,好像也没有什么特别有意义的地方。



Ceph Nautilus是一个开源的分布式存储系统,它旨在提供灵活和可扩展的存储解决方案。通过Nautilus,用户可以构建自己的私有云存储集群,用于存储和管理大量的数据。 Docker是一种轻量级的容器化技术,它允许用户将应用程序及其依赖项打包到一个独立的、可移植的容器中,然后在不同的环境中运行。Docker提供了一种快速部署、扩展和管理应用程序的方式。 关于"Ceph Nautilus Docker",可以理解为将Ceph Nautilus与Docker容器技术结合使用。这样做的好处在于,可以利用Docker的便捷性和灵活性来部署和管理Ceph Nautilus集群。 首先,在使用Docker时,可以将Ceph Nautilus的各个组件(如monitor、OSD等)打包成Docker镜像,并通过Docker容器来运行这些组件。这样一来,不仅能够节省部署和配置的时间,还能更好地实现Ceph集群的扩展。 其次,使用Docker还可以简化Ceph Nautilus的运维和管理。通过使用Docker容器,可以更加方便地进行集群的备份、迁移和扩展,也可以更加灵活地进行资源的调度和分配。此外,Docker还提供了一些现成的容器管理工具,如Docker Swarm和Kubernetes,可以进一步简化Ceph集群的管理和扩展。 总结起来,Ceph Nautilus和Docker的结合可以带来许多好处,包括更方便的部署、更高效的扩展和更灵活的管理。然而,要正确使用这种组合,需要一定的技术和经验。因此,在使用之前,建议进行充分的学习和测试,以确保能够正确地部署和管理Ceph Nautilus Docker集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值