以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,系统文件 程序: 代 ...
随机推荐
- 简单的并发服务器(多个线程各自accept)
基于之前讲述的简单循环服务器,做一个多个线程各自accept的服务器demo 由于多个线程各自accept,容易造成数据错误,需要在accept前后枷锁 先看下客户端 客户端创建socket,初始化服 ...
- Jenkins+SVN+Maven发布项目
一.安装jenkins插件 登入Jenkis后,安装几个插件: Maven Integration plugin # 没有这个插件,不能创建maven项目 Subversion Plug-in Pub ...
- 为VSCODE添加右键菜单
参考:https://blog.csdn.net/GreekMrzzJ/article/details/82194913 1.创建一个名为vscode.reg的空文本文件,填入下列内容 Windows ...
- js获取本周、上周的开始结束时间
这两天在做一个报表体统,其中涉及到了一个根据本周,上周,本月,上月的时间来进行查询的问题,在这个我就教一下大家怎么实现,大家如果有更好的实现方法的,我也希望大家能说出来,我们交流交流. 首先呢,我写了 ...
- kle 日志收集系统维护之清理索引及索引优化脚本
logstash每天往es建好索引,按天生成,就目前的需求,需要清理不需要的数据,以保证最新日志的速度展示,哈哈,瞎搞了这个脚本,路过的大神批评. #!/usr/bin/env python # co ...
- 使用Docker 快速搭建nuget本地服务器,Hosting private nuget server using docker in seconds!
Server #below line automatically creates the folder, mount the volumes and maps the ports. docker ru ...
- 【洛谷 P1502】 窗口的星星(扫描线)
题目链接 把每个星星作为左下角,做出长为\(w-0.5\),宽为\(h-0.5\)的矩形. \(-0.5\)是因为边框上的不算. 离散化\(y\)坐标. 记录\(2n\)个\(4\)元组\((x,y1 ...
- js布尔值转化
JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 Na ...
- D - Keiichi Tsuchiya the Drift King Gym - 102028D (几何)
题目链接:https://cn.vjudge.net/contest/275150#problem/D 题目大意: 问你能满足那个矩形可以顺利通过的条件,然后求出最小的w 具体思路:首先,我们应该将情 ...
- Linux 脚本内容指定用户执行
#!/bin/bash set -x ## 因为这些变量在下面要用,所以要写在最上面, ## 如果直接写在下面,则变量获取不到,并且下面的 $ 标识的都要用 引号引起来,否则这些参数接收不到 tarf ...