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、 注意保持第一个几点的防火墙开放必要的port 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的技术我们也更easy对osd进行资源限制。但除此之外,好像也没有什么特别有意义的地方。
run ceph in docker的更多相关文章
- run zabbix with docker
#!/bin/bashdocker run --name some-zabbix-server-mysql -p 10051:10051 --net=host -e DB_SERVER_HOST=&q ...
- Run nginx from Docker in Windows
1.首先, 使用 docker run hello-world 命令 确认 docker 在本地安装成功,若成功应如下所示(此处使用的是 Docker Toolbox 在Windows上安装Docke ...
- docker run <image-id>和 docker start <container-id>
- docker创建ceph集群
背景 Ceph官方现在提供两类镜像来创建集群,一种是常规的,每一种Ceph组件是单独的一个镜像,如ceph/daemon.ceph/radosgw.ceph/mon.ceph/osd等:另外一种是最新 ...
- 以Docker容器方式安装Ceph
获取Ceph的Docker镜像 因为公司对于网络环境的限制,安装ceph时使用ceph-deploy反而很不方便,且ssh免密码方式也不适用,所以使用docker方式安装. Git地址 https:/ ...
- Ubuntu 16.04下使用docker部署ceph集群
ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubun ...
- Docker与Ceph的分与合
前言 docker是一个管理工具,在操作系统之上提供了一个新的独立轻环境,好处是本地提供了一个基础镜像,然后基于镜像再运行环境,也可以把环境重新打包为镜像,管理起来类似于git,感觉非常的方便,并且能 ...
- 【云计算】docker run详解
Docker学习总结之Run命令介绍 时间 2015-01-21 17:06:00 博客园精华区 ...
- Docker学习总结之Run命令介绍
Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...
随机推荐
- 解魔方的机器人攻略15 – 安装 Eclipse
由 动力老男孩 发表于 2009/12/27 17:40:49 在远古时代,程序员们通常用写字板来编写Java程序,然后用Javac.exe和Java.exe来编译和执行.对于NXT来说,对应的命令是 ...
- sharepoint2010新建网站与网站集
1.以管理员身份运行[sharepoint管理中心] 2.点击创建web应用程序 3.切换用户,我的个人用户不行,需要切换administrator用户 可以看到换成administrator账号 新 ...
- 用ASP实现JS的decodeURIComponent()函数
<% response.write jsDecodeURIComponent( "%E6%B5%8B%E8%AF%95" ) %> <script languag ...
- 级联关系(内容大部分来自JavaEE轻量型解决方案其余的是我的想法)
1. 级联关系 在Hibernate程序中持久化的对象之间会通过关联关系互相引用.对象进行保存.更新和删除等操作时,有时需要被关联的对象也执行相应的操作,如:假设需要关联关系的主动方对象执行操作时,被 ...
- 使用ffmpeg截取视频封面并批量上传
需求:将视频文件压入zip包,然后上传服务器.服务器对zip解压,使用bat/shell,使用ffmpeg对视频进行封面截取.再使用OSS对视频和封面进行批量上传.最后将信息存入数据库 遇到的问题 1 ...
- Centos 7 联想Y430P无线网卡驱动安装 过程参考
Centos 7 联想Y430P无线网卡驱动安装 过程参考 ABRT 已检测到 [root@endv ~]# yum install -y rdesktop 已加载插件:fastestmirror, ...
- Solidworks如何在装配图中保存单独的一个零件
如下图所示,我想要保存装配体的一个单独的零部件 选中该零件后点击编辑零部件 然后点击顶部的文件-另存为,弹出"解决模糊情形"对话框,询问你要保存装配体还是零部件 点击确 ...
- Visual Studio 外请版本号管理插件 - AnkhSVN
Visual Studio 外请版本号管理插件 - AnkhSVN 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致 ...
- MPTCP 源码分析(一) MPTCP的三次握手
简述: MPTCP依然按照正常的TCP进行三次握手,只是在握手过程中增加了MPTCP特有的信息. 建立过程 三次握手过程如下图所示: 左边客户端发送的第一个SYN包携带有客户端 ...
- mysql kill process解决死锁
mysql使用myisam的时候锁表比较多,尤其有慢查询的时候,造成死锁.这时需要手动kill掉locked的process.使他释放. (以前我都是重起服务)..惭愧啊.. 演示:(id 7是我用p ...