以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/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 = mon initial members = c381 mon host = 1.2.3.4 auth cluster required = auth service required = auth client required =
public network = cluster network
osd pool default pg 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的更多相关文章
- Drools 7.15.0 docker容器方式部署
关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...
- Docker容器编译安装Redis
Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ...
- docker容器里面安装ssh
docker容器里面安装ssh https://blog.csdn.net/chengxuyuanyonghu/article/details/76619097
- 在Docker容器中安装jdk和spark
在Docker容器中安装jdk和spark 1.下载jdk和spark 可以使用迅雷等专业下载软件下载jdk和spark软件包,注意是linux版,这里直接给出下载地址: JDK下载地址 JDK进入后 ...
- Centos7环境下Docker容器的安装与卸载
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
- Docker容器的安装和使用
Docker容器的安装和使用 安装: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或国内:curl -sSL ...
- Docker容器编译安装Nginx
Docker容器编译安装Nginx,最简单的Nginx配置. 创建容器&进入容器 宿主机2080映射容器的80端口 [root@localhost ~]# docker run -i -d - ...
- Docker容器手动安装oracle19C
Docker容器手动安装oracle19C docker容器体积小,与宿主机共用内核参数,因此修改宿主机的内核参数即是修改容器的内核参数 1.修改宿主机内核参数 [root@localhost ~]# ...
- docker容器的安装与使用
docker 容器概念 1.什么是容器 容器就是在隔离环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,IP地址,主机名等. kvm虚拟机,linux,系统文件 程序: 代 ...
随机推荐
- [JSOI2007]建筑抢修——贪心反悔堆
题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...
- 怎样才能高效地使用JQuery
1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本.因为新版本会改进性能,还有很多新功能.下面就来看看,不同版本的jQuery性能差异有多大.这里是三条最常见的jQ ...
- jq从数组中删除指定元素(根据自定义条件) 超好用的 $.grep() 方法
转: jQuery.grep() 什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuer ...
- jni里找不到刚添加的C++函数
使用NDK开发,用到了JNI来连接C++和JAVA. 当C++方增加了一个新函数,jni访问此函数,eclipse会提示找不到改函数,然后前面打个红叉叉表示语法错误,从而阻碍了编译和运行. 当我选择清 ...
- PHP字符串定义方式和单引号双引号的区别
$str=<<<任意标记 ......................... .............................. 任何标记; 单引号和双引号的区别? ''号 ...
- angularJs 跨控制器与跨页面传值
虽然网上概括了四种或更多的传值方式,但我现在用的顺手的就两种 首先要知道AngularJs可以构建一个单页面应用程序,所以我划分为跨控制器传值 和 跨页面传值 两类 1.跨控制器传值—— $rootS ...
- spoj 1825 Free tour II
http://www.spoj.com/problems/FTOUR2/ After the success of 2nd anniversary (take a look at problem FT ...
- Linux改变用户shell的类型
命令: 改变usr01的类型 # usermod -s /bin/csh usr01
- 每个Web开发者都需要具备的9个软技能
对于一份工作,你可能专注于修炼自己的内功,会在不自觉中忽视软技能.硬技能决定你是否能得到工作,而软技能能够表明你是否适合这份工作和适应工作环境等.所有的公司都有属于自己的文化,并努力将这些文化传承下去 ...
- LintCode 395: First Will Win 2
LintCode 395: First Will Win 2 题目描述 有 n 个不同价值的硬币排成一条线.两个参赛者轮流从左边依次拿走 1 或 2 个硬币,直到没有硬币为止.计算两个人分别拿到的硬币 ...