以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,系统文件 程序: 代 ...
随机推荐
- 洛谷10月月赛R2·浴谷八连测R3题解
早上打一半就回家了... T1傻逼题不说了...而且我的写法比题解要傻逼很多T T T2可以发现,我们强制最大值所在的块是以左上为边界的倒三角,然后旋转4次就可以遍历所有的情况.所以二分极差,把最大值 ...
- mysql三-6:完整性约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KE ...
- opencv 获取摄像头图像
http://www.cnblogs.com/epirus/archive/2012/06/04/2535190.html #include "stdafx.h" #include ...
- 2017中国大学生程序设计竞赛 - 女生专场 1002 dp
Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 关于GCD的几个结论
设a和b的最大公约数是d,那么: 1. d是用sa+tb(s和t都是整数)能够表示的最小正整数 证明:设x=sa+tb是sa+tb能够表示出的最小正整数.首先,有d|x,证明如下: 因此有x>= ...
- nginx如何配置虚拟主机
server { listen 80; #listen [::]:80 default_server ipv6only=on; server_name local.presion.caomall.ne ...
- Tensorflow实现学习率衰减
Tensorflow实现学习率衰减 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Deeplearning AI Andrew Ng Tensorflow1.2 API 学习率衰减 ...
- libcurl移植到android
一.总体概览 C库:libcurl 3.7 目标平台:android 编译平台:ubuntu 12 编译工具:ndk r7 or later 二.已知方法 1. 官网上给了两种方法,第一种方法是使用a ...
- JS-DOM-随时更新
DOM里有三种节点:元素节点.文本节点和属性节点 getElmentById(); //id选择器 在JS中用此方法来查找获取 建议大小写 以免不兼容 有时候查找不到 DOM操作必须等到HTML ...
- struts2的action中@Autowired注入为null的解决方案
今天遇到类似问题,记录下来以便以后查阅: @Aspect作用于action,致使action中的@Autowired注入为null的解决方案,以下三种任选一种: 1.去掉@Autowired,改用se ...