docker中运行ceph(初探)

17 篇文章 0 订阅
7 篇文章 0 订阅

一、环境描述

(1)ceph的官网要求至少要有个的mon,至少有两个osd(但是ceph的默认配置有3个osd),所以本实验中有三台虚

拟机(ubuntu-14.04),部署3个mon和3个osd

(2)三台虚拟机的ip分别是192.168.110.157(hostname;docker1)、168.168.110.147(hostname;docker2)

192.168.110.158(hostname;docker3)

(3)搭建本地私有registry请参考我以前的博客

(4)本实验中,三台虚拟机都有两块磁盘,其中一块磁盘专门为osd使用,要求是将磁盘/dev/sdb挂在到/mnt/sdb目

录下,具体步骤请参看博客http://blog.csdn.net/xuguokun1986/article/details/53886701

(5)三台虚拟机上需要安装好docke人,本实验是安装的最新版本,具体安装请参考docker官网

二、实验步骤

1。下载ceph/daemon镜像(docker pull ceph/daemon

2.将ceph/daemon打标签,然后推送到本地registry中,相关命令如下   

docker tag ceph/daemon docker1:5000/daemon
docker push  docker1:5000/daemon

3.编写启动mon的脚本

(1)157虚拟机上mon的启动脚本如下

docker run -d \
     --net=host \
     -v /etc/ceph:/etc/ceph \
     -v /var/lib/ceph/:/var/lib/ceph/ \
     -e MON_IP=192.168.110.157 \
     -e CEPH_PUBLIC_NETWORK=192.168.110.0/24 \
     docker1:5000/daemon mon


(3)启动157上的mon之后要需要将157上产生的配置文件拷贝到147和158的指定目录下,具体操作如下:

 分别在docker2和docker3上创建/var/lib/ceph目录

然后在157上执行执行如下命令,将配置文件拷贝的相应位置

scp -r /etc/ceph root@docker2:/etc
scp -r /var/lib/ceph/bootstrap* root@docker2:/var/lib/ceph

scp -r /etc/ceph root@docker3:/etc
scp -r /var/lib/ceph/bootstrap* root@docker3:/var/lib/ceph


注意:一般情况下是不允许root用户执行scp命令的,此时需要将三台虚拟的ssh进行配置修改,具体办法如下

将/etc/ssh/sshd_config文件中的PermitRootLogin without-password注释掉,然后在该行配置下加PermitRootLogin 

yes,配置结果如下

#PermitRootLogin without-password
PermitRootLogin yes



(4)147虚拟机上mon的启动脚本如下
docker run -d \
     --net=host \
     -v /etc/ceph:/etc/ceph \
     -v /var/lib/ceph/:/var/lib/ceph/ \
     -e MON_IP=192.168.110.147 \
     -e CEPH_PUBLIC_NETWORK=192.168.110.0/24 \
     docker1:5000/daemon mon

(5)158虚拟机上mon的启动脚本如下

docker run -d \
     --net=host \
     -v /etc/ceph:/etc/ceph \
     -v /var/lib/ceph/:/var/lib/ceph/ \
     -e MON_IP=192.168.110.158 \
     -e CEPH_PUBLIC_NETWORK=192.168.110.0/24 \
     docker1:5000/daemon mon


(5).在157上查看mon的启动状态

root@docker1:/home/docker/xu/ceph# docker exec 23f9 ceph -s
    cluster 86960efb-531f-498a-b540-c9306df1639e
     health HEALTH_ERR
            clock skew detected on mon.docker1, mon.docker3
            64 pgs are stuck inactive for more than 300 seconds
            64 pgs stuck inactive
            no osds
            Monitor clock skew detected 
     monmap e3: 3 mons at {docker1=192.168.110.157:6789/0,docker2=192.168.110.147:6789/0,docker3=192.168.110.158:6789/0}
            election epoch 6, quorum 0,1,2 docker2,docker1,docker3
     osdmap e1: 0 osds: 0 up, 0 in
            flags sortbitwise
      pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
            0 kB used, 0 kB / 0 kB avail
                  64 creating
 说明mon分别在docker1,docker2和docker3上正常启动了。其中23f9是容器id的前四个随机字符,根据各自的实验

有所不同应该。

4.编写osd的启动脚本

(1)157上osd的启动脚本

docker run -d \
    --net=host \
    --name osd1 \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /dev/:/dev/ \
    -v /mnt/sdb:/var/lib/ceph/osd \
    --privileged=true \
    docker1:5000/daemon osd_directory

(2)147上osd的启动脚本

docker run -d \
    --net=host \
    --name osd1 \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /dev/:/dev/ \
    -v /mnt/sdb:/var/lib/ceph/osd \
    --privileged=true \
    docker1:5000/daemon osd_directory

(3)158上osd的启动脚本

docker run -d \
    --net=host \
    --name osd1 \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /dev/:/dev/ \
    -v /mnt/sdb:/var/lib/ceph/osd \
    --privileged=true \
    docker1:5000/daemon osd_directory

(4)查看osd的启动状态(例如在157上执行如下命令)

root@docker1:/home/docker/xu/ceph# docker exec 23f9 ceph -s
    cluster 86960efb-531f-498a-b540-c9306df1639e
     health HEALTH_ERR
            clock skew detected on mon.docker1, mon.docker3
            5 pgs are stuck inactive for more than 300 seconds
            64 pgs degraded
            5 pgs stuck inactive
            59 pgs stuck unclean
            64 pgs undersized
            Monitor clock skew detected 
     monmap e3: 3 mons at {docker1=192.168.110.157:6789/0,docker2=192.168.110.147:6789/0,docker3=192.168.110.158:6789/0}
            election epoch 6, quorum 0,1,2 docker2,docker1,docker3
     osdmap e11: 3 osds: 2 up, 2 in; 7 remapped pgs
            flags sortbitwise
      pgmap v18: 64 pgs, 1 pools, 0 bytes data, 0 objects
            266 MB used, 20193 MB / 20460 MB avail
                  59 active+undersized+degraded
                   5 creating+activating+undersized+degraded

root@docker1:/home/docker/xu/ceph# docker exec 23f9 ceph osd tree
ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 0.02998 root default                                       
-2 0.00999     host docker1                                   
 0 0.00999         osd.0         up  1.00000          1.00000 
-3 0.00999     host docker2                                   
 1 0.00999         osd.1         up  1.00000          1.00000 
-4 0.00999     host docker3                                   
 2 0.00999         osd.2         up  1.00000          1.00000 

看见上面的信息说明osd在三台机器上都应经正常启动

5.实验结束

为了使用Docker部署Ceph集群,有几种方法可以选择。首先,你可以参考提供的CentOS 7系统Docker Ceph集群的安装配置文章,其详细介绍了如何使用Docker单机上部署Ceph。其次,你也可以使用脚本和Docker来部署Ceph集群,具体的步骤如下:首先,在每个机器上执行脚本,确保已经安装了Docker,并且有对应的Docker Ceph镜像。然后,可以使用ansible批量执行部署操作。接下来,你还可以生成一些文件来配置Ceph集群。例如,通过在mon节点上执行以下命令可以生成osd的密钥信息: ``` docker exec ceph-mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring ``` 同样,通过以下命令可以生成rgw的密钥信息: ``` docker exec ceph-mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring ``` 以上是使用Docker安装部署Ceph的一些方法和步骤。具体情况还需要根据你的需求和环境来调整。希望对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Docker安装部署Ceph](https://blog.csdn.net/bzjoko/article/details/128775373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用脚本和docker部署ceph集群](https://download.csdn.net/download/atongmu321645/10664386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值