以Docker容器方式安装Ceph

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 获取Ceph的Docker镜像 因为公司对于网络环境的限制,安装ceph时使用ceph-deploy反而很不方便,且ssh免密码方式也不适用,所以使用docker方式安装。 Git地址 https://github.

获取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来挂载[未完]

目录
相关文章
|
16小时前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
|
17小时前
|
存储 Prometheus 监控
【Docker 专栏】Docker 容器内应用的调试与故障排除
【5月更文挑战第8天】本文探讨了Docker容器内应用的调试与故障排除,强调其重要性。方法包括:通过日志排查、进入容器检查、使用监控工具及检查容器配置。常见问题涉及应用启动失败、性能问题、网络连接和数据存储。案例分析展示了实战场景,注意事项提醒避免不必要的容器修改、备份数据和理解应用架构。掌握这些技能能确保Docker应用的稳定运行和性能优化。
【Docker 专栏】Docker 容器内应用的调试与故障排除
|
17小时前
|
负载均衡 网络协议 算法
【Docker 专栏】Docker 容器内服务发现与负载均衡
【5月更文挑战第8天】本文探讨了Docker容器中的服务发现与负载均衡。服务发现通过环境变量、DNS或集中式系统(如Consul、Zookeeper)来定位服务实例。负载均衡则采用轮询、随机等算法,可通过软件负载均衡器、云服务或容器编排工具(如Kubernetes)实现。服务发现与负载均衡结合使用,确保请求有效分发和系统稳定性。面对动态性、网络延迟及大规模部署的挑战,需采取相应措施优化。选择合适技术并持续优化,能提升Docker容器应用的性能和可靠性。
【Docker 专栏】Docker 容器内服务发现与负载均衡
|
17小时前
|
存储 安全 数据中心
【Docker 专栏】Docker 容器与宿主机的资源隔离机制
【5月更文挑战第8天】Docker容器利用Namespace和Cgroups实现资源隔离,保证CPU、内存、网络和存储的独立,提升资源利用率和系统安全性。资源隔离有助于简化应用部署与管理,但也带来资源竞争、监控管理及安全挑战。理解并善用资源隔离机制能实现更高效、安全的容器运行。随着技术进步,Docker容器资源隔离将持续优化。
【Docker 专栏】Docker 容器与宿主机的资源隔离机制
|
17小时前
|
存储 缓存 监控
【Docker 专栏】Docker 容器性能调优实战
【5月更文挑战第8天】本文探讨了Docker容器的性能调优技巧,包括理解容器性能指标(如CPU、内存、网络和磁盘I/O)并进行相应调优。重点讲述了CPU和内存的限制设置,网络配置优化以及磁盘I/O性能提升方法。通过实例展示了如何解决高CPU使用率问题,强调了根据应用需求进行调优的重要性,以实现更高效、稳定的容器运行。
【Docker 专栏】Docker 容器性能调优实战
|
17小时前
|
存储 应用服务中间件 Docker
Docker容器无法启动Cannot find /usr/local/tomcat/bin/setclasspath.sh
根据具体情况,你可以尝试以上方法中的一个或多个,以解决 "Cannot find /usr/local/tomcat/bin/setclasspath.sh" 的问题。确保你的Docker容器中包含了完整且正确配置的Tomcat,并且相关文件和目录的权限设置正确。
6 0
|
1天前
|
存储 安全 文件存储
如何在群辉NAS使用Docker搭建容器魔方并实现无公网ip远程访问
如何在群辉NAS使用Docker搭建容器魔方并实现无公网ip远程访问
9 0
|
1天前
|
监控 安全 数据安全/隐私保护
【Docker专栏】Docker容器安全:防御与加固策略
【5月更文挑战第7天】本文探讨了Docker容器安全,指出容器化技术虽带来便利,但也存在安全隐患,如不安全的镜像、容器逃逸、网络配置不当等。建议采取使用官方镜像、镜像扫描、最小权限原则等防御措施,并通过安全的Dockerfile编写、运行时安全策略、定期更新和访问控制等加固容器安全。保持警惕并持续学习安全实践至关重要。
【Docker专栏】Docker容器安全:防御与加固策略
|
1天前
|
前端开发 API 数据库
【Docker专栏】Docker Compose实战:编排多容器应用
【5月更文挑战第7天】Docker Compose是Docker的多容器管理工具,通过YAML文件简化多容器应用部署。它能一键启动、停止服务,保证开发、测试和生产环境的一致性。安装后,创建`docker-compose.yml`文件定义服务,如示例中的web和db服务。使用`docker-compose up -d`启动服务,通过`docker-compose ps`、`stop`、`down`和`logs`命令管理服务。
【Docker专栏】Docker Compose实战:编排多容器应用
|
1天前
|
监控 安全 数据库
【Docker专栏】Docker容器化应用的最佳实践
【5月更文挑战第7天】本文介绍了 Docker 容器化应用的关键最佳实践,包括使用官方基础镜像、保持镜像精简、以非 root 用户运行容器、安全扫描、编写高效 Dockerfile、环境隔离、使用数据卷、选择合适网络模式、设置资源限制、使用版本标签、容器编排以及文档和自动化部署。遵循这些实践可提升效率和安全性,同时要注意随着技术发展不断更新知识。
【Docker专栏】Docker容器化应用的最佳实践