获取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/daemon

指定最新的tag

推荐最新的版本:tag-build-master-luminous-centos-7

将镜像导入Harbor仓库供使用

docker tag  [old]  harborip/ceph/daemon:luminous

docker  login -u xxx -p xxx http://harborip

docker push harborip/ceph/daemon:luminous

安装前约定

主要目录

/etc/ceph/                 主要为配置

/var/lib/ceph/           主要为数据

对应关系

宿主机

Docker容器

/etc/ceph/

/etc/ceph/

/etc/ceph/

/var/lib/ceph/

/var/lib/ceph/

/var/lib/ceph/

机器列表

机器名

IP地址

role

C 381

1.2.3.4

Mon,osd

C 382

1.2.3.5

Mon,osd,mds

C 383

1.2.3.6

Mon,osd, rgw

 

Ceph Mon多节点安装

说明

Ceph的MON是一个集群映射图的“主副本”,客户端只需通过连接到MON就可以了解Ceph-MON、Ceph的OSD守护进程,和Ceph的元数据服务器的位置。

安装首节点MON

docker run \

-d --net=host  \

--name=mon \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph \

-e MON_IP=1.2.3.4 \

-e CEPH_PUBLIC_NETWORK=1.2.3.0/24 \

harborip/ceph/daemon:luminous \

Mon

编辑/etc/ceph.conf配置文件

注意调整下表中红色部份的值。

[global]

fsid =
695b3afb-f560-434f-a90a-f611e1f23638

mon initial members = c381

mon host = 1.2.3.4

auth cluster required =
cephx

auth service required =
cephx

auth client required =
cephx

  • osd pool default
    size = 2

public network =
1.2.3.0/24

cluster network
= 1.2.3.0/24

  • osd journal size
    = 100

osd pool default pg num = 100

  • osd pool default
    pgp num = 100

将相关ceph目录cp到各个节点

按需操作,一种思路:非root帐号先scp到目标机器/tmp下,再挪到指定位置。

涉及目录:/etc/ceph/和/var/lib/ceph/

安装第二及第三节点

docker run \

-d --net=host  \

--name=mon \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph \

-e MON_IP=1.2.3.5 \

-e CEPH_PUBLIC_NETWORK=1.2.3.0/24 \

harborip/ceph/daemon:luminous \

mon

docker run \

-d --net=host  \

--name=mon \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph \

-e MON_IP=1.2.3.6 \

-e CEPH_PUBLIC_NETWORK=1.2.3.0/24 \

harborip/ceph/daemon:luminous \

mon

检查mon是否成功启动

可通过以下命令检查:

docker ps|grep ceph|grep mon

ps aux|grep ceph|grep mon

docker logs -f mon

docker exec mon ceph –s

Ceph OSD节点安装

说明

Ceph OSD:Ceph Object Storage Device 主要功能包括:存储数据,副本数据处理,数据恢复,数据回补,平衡数据分布,并将数据相关的一些儿监控信息提供给至少2个Ceph OSD,才能有效保存两份数据.

OSD节点安装有两种方案,一种是在节点上挂载全新的硬盘设备,第二种是将已安装好的系统的指定目录作为OSD。

我们这里选用第二种方式,只是因为方便。

命令

在所有需要提供OSD存储的节点上运行如下命令:

docker run \

-d --net=host \

--name=osd \

--privileged=true \

--pid=host \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph/ \

-v /dev/:/dev/ \

-e OSD_FORCE_ZAP=1 \

-e OSD_TYPE=directory   \

harborip/ceph/daemon:luminous \

Osd

检查OSD是否启动成功

参考MON的检查,相关关键字替换为osd。

注意细节

一,可以用JOURNAL_DIR 参数将日志目录移出

二,OSD_TYPE参数在使用新硬盘时为disk

三,OSD_FORCE_ZAP=1强制清空目录,这里为必要

四,这种方式生成的OSD指定目录为/var/lib/ceph/osd/

五,如果此处安装有问题,可能是不能自动建立相关pool池,可以考虑登陆docker手工执行一次./entrypoint.sh osd命令

Ceph RGW节点安装

说明

RGW为Rados
Gateway的缩写,ceph通过RGW为互联网云服务提供商提供对象存储服务。RGW在librados之上向应用提供访问ceph集群的RestAPI, 支持Amazon S3和openstack
swift两种接口。对RGW最直接的理解就是一个协议转换层,把从上层应用符合S3或Swift协议的请求转换成rados的请求, 将数据保存在rados集群中。

命令

在c383上执行如下命令:

docker run \

-d --net=host \

--name=rgw \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph 
\

harborip/ceph/daemon:luminous \

rgw

检查RGW是否成功启动

参考MON的检查,相关关键字替换为rgw。

 

Ceph MDS节点安装

说明

Ceph文件系统(CEPH FS)是一个POSIX兼容的文件系统,使用Ceph的存储集群来存储其数据。

使用Ceph的文件系统,在你的Ceph的存储集群里至少需要存在一个Ceph的元数据服务器。(MDS)

命令

在c382节点上运行:

docker run \

-d --net=host \

--name=mds \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph \

-e CEPHFS_CREATE=1 \

harborip/ceph/daemon:luminous \

mds

检查MDS是否成功启动

参考MON的检查,相关关键字替换为mds。

 

Ceph Mgr节点安装

说明

ceph-mgr 作为 Ceph 集群的管理进程,未来会负责整个集群的管理操作和监控。现在的部分 Monitor 功能会迁移到 ceph-mgr 中,使得 Monitor 更专注于集群的数据面控制,降低集群对于 Monitor 的要求。

在luminous版本上,mgr已成为标配,不安装成功的话,集群状态会WARN。

命令

在所有mon安装过的节点上运行以下命令:

docker run \

-d --net=host  \

--name=mgr \

-v /etc/ceph:/etc/ceph \

-v /var/lib/ceph/:/var/lib/ceph \

harborip/ceph/daemon:luminous \

mgr

检查Mgr是否成功启动

参考MON的检查,相关关键字替换为mgr。

注意细节

一,如果这里安装异常,或是7000端口未启用,要启用dashboard组件功能。

docker exec mon ceph mgr dump

docker exec mgr ceph mgr module enable dashboard

二,最终系统状态和WEB(7000端口)截图如下

挂载cephfs目录

内核支持挂载

一,明文挂载

mount -t ceph 1.2.3.4:6789:/ /mnt/mycephfs \

-o name=admin,secret=3545wgdsgsgfsgf

二,文件挂载

mount
-t ceph 192.168.1.111:6789:/ /mnt/mycephfs –o \

name=admin,secretfile=/etc/ceph/admin.secret

三,卸载目录

umount /mnt/mycephfs

FUSE挂载

在k8s中将cephfs作为volumes挂载

一,获取admin的密文

docker exec mon ceph-authtool --print-key
/etc/ceph/ceph.client.admin.keyring

二,将之用base64编码

echo "sdfdsadfasdfasdf=" | base64

三,生成并应用k8s secret文件

apiVersion: v1

kind: Secret

metadata:

name: ceph-secret

data:

key: QVsdfsadfsadfPQo=

kubectl apply -f ceph-secret

四,编辑deploy文件,挂载cephfs

volumes:

- name: applog

hostPath:

path: / apache/applogs

- name: nfs4app

nfs:

server: 1.2.3.181

path: /app/BB

- name: ceph-vol

cephfs:

monitors:

- 1.2.3.4:6789

user: admin

secretRef:

name: ceph-secret

readOnly: false

五,测试文件生成

在POD操作文件,在cephfs中会同步操作相应文件。

六,未完

在k8s中将cephfs作为PVC挂载[未完]

将harbor中的镜像目录用cephfs来挂载[未完]

以Docker容器方式安装Ceph的更多相关文章

  1. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  2. Docker容器编译安装Redis

    Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ...

  3. docker容器里面安装ssh

    docker容器里面安装ssh https://blog.csdn.net/chengxuyuanyonghu/article/details/76619097

  4. 在Docker容器中安装jdk和spark

    在Docker容器中安装jdk和spark 1.下载jdk和spark 可以使用迅雷等专业下载软件下载jdk和spark软件包,注意是linux版,这里直接给出下载地址: JDK下载地址 JDK进入后 ...

  5. Centos7环境下Docker容器的安装与卸载

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...

  6. Docker容器的安装和使用

    Docker容器的安装和使用 安装: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或国内:curl -sSL ...

  7. Docker容器编译安装Nginx

    Docker容器编译安装Nginx,最简单的Nginx配置. 创建容器&进入容器 宿主机2080映射容器的80端口 [root@localhost ~]# docker run -i -d - ...

  8. Docker容器手动安装oracle19C

    Docker容器手动安装oracle19C docker容器体积小,与宿主机共用内核参数,因此修改宿主机的内核参数即是修改容器的内核参数 1.修改宿主机内核参数 [root@localhost ~]# ...

  9. docker容器的安装与使用

    docker 容器概念 1.什么是容器 容器就是在隔离环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,IP地址,主机名等. kvm虚拟机,linux,系统文件 程序: 代 ...

随机推荐

  1. [CodeVs3196]黄金宝藏(DP/极大极小搜索)

    题目大意:给出n(≤500)个数,两个人轮流取数,每次可以从数列左边或者右边取一个数,直到所有的数被取完,两个人都以最优策略取数,求最后两人所得分数. 显然这种类型的博弈题,第一眼就是极大极小搜索+记 ...

  2. 音视频处理之FFmpeg程序的介绍与使用20180302

    一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...

  3. 流媒体协议之RTSP客户端的实现20171014

    RtspClient是基于jrtplib实现的,目前仅支持h264格式,后续将不断迭代优化,加入对其他格式的支持,并且将实现RTSP的服务端. RtspClient的功能是接收服务端过来流,然后写入到 ...

  4. CSK & KCF(tracking)

    转自:http://blog.csdn.net/ben_ben_niao/article/details/51364323 上次介绍了SRDCF算法,发展历史轨迹为CSK=>>KCF/DC ...

  5. 使用rabbitmq消息队列

    一.前言 在python中本身就是存在队列queue.一个是线程队列queue,另一个是进程multiprocessing中的队列Queue. 线程queue:只用于线程之间的数据交互 进程Queue ...

  6. MVC网站发布到 IIS

    接下来将发布成功的站点部署到iis7.0. 步骤如下: 1. 安装 Microsoft .net FrameWork 4.0安装包(网站开发时候使用的就是.net framework4.0框架); 2 ...

  7. 海思HI35XX之----视频处理单元各通道间的关系

    最近在折腾HI3518C的芯片,应用到IPCamera上,最终获取多路不同分辨率的视频流供不同需求的预览切换.此处简单记录一下视频前处理元VPSS(Video Process Sub-System)的 ...

  8. LeetCode-Max Points on a Line[AC源码]

    package com.lw.leet3; import java.util.HashMap; import java.util.Iterator; import java.util.Map; imp ...

  9. DialogFragment 将数据传回Activity的onActivityResult方法

    在MyActivity中 弹出一个DialogFragment (某一个控件的点击事件) search= findViewById(R.id.search); search.setOnClickLis ...

  10. gym100712 ACM Amman Collegiate Programming Contest

    非常水的手速赛,大部分题都是没有算法的.巨慢手速,老年思维.2个小时的时候看了下榜,和正常人差了3题(,最后还没写完跑去吃饭了.. A 水 Sort 比大小 /** @Date : 2017-09-0 ...