run ceph in docker

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

1、   下载mon和osd镜像

[[email protected] ~]# docker pull index.alauda.cn/georce/mon:hammer

[[email protected] ~]# docker pull index.alauda.cn/georce/osd:hammer

2、   一条命令搭建mon

[[email protected]~]# 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的日志

[[email protected] ~]# docker logs -f mon

4、   编辑ceph配置文件

[[email protected] ~]# 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

[[email protected] ~]# docker restart mon

6、   两条命令创建osd

[[email protected] ~]# docker exec mon ceph osd create   生成osd的id

[[email protected] ~]# 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集群状态

[[email protected] ~]# docker exec -it mon ceph -s

集群默认会有一个叫做rbd的pool。默认副本是1。也就是说仅仅有一个osd,pg应该也会达成active+clean, 但其实pg没有达成active+clean的。不清楚原因。

但一个副本显然没有意义。因此我们再添加osd。

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

8、   再创建一个osd

[[email protected] ~]# docker exec mon ceph osdcreate   生成osd的id

[[email protected] ~]# 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。还是两条命令。但要注意,第一条命令仅仅能在第一个几点上运行

[[email protected] ~]# docker exec mon ceph osdcreate   生成osd的id

[[email protected]~]# 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上,分布例如以下:

[email protected]:~# 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

[email protected]:~# 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进行资源限制。但除此之外,好像也没有什么特别有意义的地方。

时间: 2024-12-11 21:03:54

run ceph in docker的相关文章

run mongodb in docker

Mongodb 是功能强大的NoSQL数据库,这里简要讲解一下如何在Docker中运行Mongodb. Run mongo db image docker run --name aihr -p 27017:27017 -v /data/db:/data/db -d mongo:3.4 --auth Login 登录并创建自己用户 docker exec -it aihr mongo admin db.createUser({ user: 'lwk', pwd: '123456', roles:

run zabbix with docker

#!/bin/bashdocker run --name some-zabbix-server-mysql -p 10051:10051 --net=host -e DB_SERVER_HOST="10.245.247.75" -e DB_SERVER_PORT=3306 -e MYSQL_USER="root" -e MYSQL_PASSWORD="admin" -d zabbix/zabbix-server-mysqldocker run -

使用docker 模式 用ceph/daemon部署 ceph

获取ceph image docker pull  ceph/daemon 准备硬盘 mkfs.xfs /dev/vdb1 mkdir -p /opt/ceph/osd/vdb mount -o defaults,noatime,nodiratime,noexec,nodev,nobarrier  /dev/vdb1 /opt/ceph/osd/vdb 部署mon docker run -d     --name mon0     -e MON_NAME=mon0     -e MON_IP=1

以Docker容器方式安装Ceph

获取Ceph的Docker镜像 因为公司对于网络环境的限制,安装ceph时使用ceph-deploy反而很不方便,且ssh免密码方式也不适用,所以使用docker方式安装. Git地址 https://github.com/ceph/ceph-docker/tree/master/ceph-releases/luminous DockerHub地址 https://hub.docker.com/r/ceph/daemon/ 通过DaoCloud加速器后下载的地址 docker pull ceph

Ubuntu 16.04下使用docker部署ceph集群

ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubuntu)系统和docker环境,那么可以参考以下步骤安装Ceph: # 要用root用户创建, 或有sudo权限 # 注: 建议使用这个docker镜像源:https://registry.docker-cn.com # 1. 修改docker镜像源 cat > /etc/docker/daemon.

Docker run 参考指南

Docker run参考指南 docker运行在一个独立的隔离的进程中. 当用户执行dockerrun,它将启动一个有着独立的文件系统,独立的网络和独立的进程树的进程. 基本的docker run命令的格式: docker run  [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...] [OPTIONS]分为两种: 1.对于用户独占性的设置: 前台.后台运行 容器定义 网络设定 容器在CPU和内存中的运行时间 运行权限和LXC配置 2.在操作者和开发者之间的共享设定,

Docker windows下安装,Build和Run的步骤及注意事项

一.关于Docker 什么是Docker?Docker 采用go语言编写,是一个开源的应用容器引擎.让开发者可以快速打包他们的应用以及依赖包到一个封装的可移植的容器Image中,然后发布到任何流行的机器( Linux ,windows,Mac等)上,也可以实现虚拟化.容器是使用完全独立的沙箱机制,相互之间不会有任何接口.可以同时运行多个Container,且相互独立各不干扰,对于多环境下的系统测试非常有用,但是Docker的应用远不止此. 二.安装 1. Windows 7系统下建议使用Dock

KVM+Openstack+Ceph+Docker 云计算周末集训营

介绍 由3w教育发布,面向从事云计算的在职运维人员,或者想进入云计算领域的相关IT工作人员,或者是对云计算感兴趣的开发人员.<要求: 参加本课程需要学员具备熟练使用Linux操作系统6个月以上的经验> 分为12个节,周期为1.5个月:每周两节(周六和周日):小班制:结束后会下发产出文档和视频,供学生在课后复习和练习参考使用. 时间: 2016年2月27日 学习地点: 北辰泰岳大厦19层 地址: 北京市朝阳区北苑路北甲13号院(地铁5号线北苑路北A口出来,向北 100米) 资费: 6800元 联

Docker学习总结之Run命令介绍

在使用Docker时,执行最多的命令某过于run了.这个命令可以说是所有docker操作的入口.在Docker官方Reference中单独列出了一个章节来介绍Run的各种参数使用,也足以看出Docker run的重要性.有感于此,我感觉有必要好好学习一下Run命令,因此特意看了一下Run命令介绍,结合日常中的使用心得,分享一下.以下文档大部分翻译于Docker 官方Reference,肯定会存在不少错误之处,希望能抛砖引玉,大家共同讨论. Docker在执行时会将相关进程封装到相互隔离的容器(c