以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,系统文件 程序: 代 ...
随机推荐
- PID控制算法的C语言实现八 变积分的PID控制算法C语言实现
变积分PID可以看成是积分分离的PID算法的更一般的形式.在普通的PID控制算法中,由于积分系数ki是常数,所以在整个控制过程中,积分增量是不变的.但是,系统对于积分项的要求是,系统偏差大时,积分作用 ...
- ACE服务端编程3:ACE跨平台之分配堆内存
ACE服务端编程系列的第三篇,探究ACE解决不同编译器之间分配堆内存的差异. 在ACE的官方示例中会看到大量的ACE_NEW_RETURN,ACE_NEW这样的宏,这是ACE为了消除不同编译器编译的代 ...
- SpringBoot (六) :如何优雅的使用 mybatis
原文出处: 纯洁的微笑 这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis.到网上找了一下关 ...
- uboot&kernel&system
- 基于JavaSE阶段下的集合类汇总
一.数组与集合的区别 数组和集合都是用来存储对象的容器,但是,数组只能储存基本数据类型的对象,且长度不可变:而集合是储存引用数据类型的对象,且长度可变,所以,在不知对象数量的具体数值时一般用集合来存储 ...
- Hibernate学习(3)- *.hbm.xml详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBL ...
- 教你破解MyEclipse到2016年【图文详解】
1.首先确定JDK以及环境变量没有问题.因为破解工具包里的run.bat是调用java命令执行jar包,如果环境变量没有配置好,那就运行不了了.2.解压破解包,双击[run.bat]打开破解界面: 3 ...
- IO流-文件拷贝
其实文件的拷贝还是文件读取写入的应用,实际是读取此路径上的文件,然后写入到指定路径下的文件. 代码举例: import java.io.*; import java.lang.*; class Tes ...
- kartik\grid\GridView 合计,多选,导出excel,header修改 等方法集合!
先上完整demo 具体的以后再说 <?php //use yii\web\View; use kartik\grid\GridView; use yii\bootstrap\Html; use ...
- UVA - 10494 If We Were a Child Again
用java写的大数基本操作,java要求的格式比较严谨. import java.util.*; import java.math.*; public class Main { public stat ...