通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

devtools/2024/12/29 17:02:58/

1、什么是Ceph

Ceph是一种开源、分布式存储系统,旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的,使得用户可以在无需特定硬件支持的前提下,通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计理念使其成为各种数据密集型应用的理想选择,包括云平台、数据中心和科研项目等。

2、本实验拓扑以及与生产环境的差异

本实验拓扑及其相应节点的规划如下:
在这里插入图片描述
需要注意的是,本次实验属于实验环境并非生产环境,受限于服务器数量限制,存在将mon、mgr和osd部署在同一台服务器的情况,这样的部署方式本质上是存在服务中断风险的,所以如果是在生产环境中进行规划,应该尽可能的将mon、mgr、osd或者RGW等服务部署在不同的物理节点上。

3、搭建步骤

(1)通过命令“hostnamectl set-hostname <主机名>”分别在debian1、debian2、debian3节点上修改服务器的主机名,如下:
在这里插入图片描述
上述命令在相应的节点执行完成后,注销并重新登录服务器,使得相应的修改生效。

(2)分别在debian1、debian2和debian3节点上执行命令,写入相应的hosts信息,以达到在实验环境下解析域名的目的,命令代码如下:

cat >> /etc/hosts << EOF
192.168.26.144 debian1
192.168.26.151 debian2
192.168.26.152 debian3
EOF

执行完上述命令后,可以通过ping命令测试,确认是否配置正确。

(3)通过“apt install cephadm -y”命令,在debian1节点上安装cephadm,如下:
在这里插入图片描述
(4)通过命令“cephadm bootstrap --mon-ip 192.168.26.144”命令,在debian1节点上进行初始化,如下:

root@debian1:~# cephadm bootstrap --mon-ip 192.168.26.144
Creating directory /etc/ceph for ceph.conf
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit systemd-timesyncd.service is enabled and running
Repeating the final host check...
podman (/usr/bin/podman) version 4.3.1 is present
systemctl is present
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK
Cluster fsid: 492491c0-b0c1-11ef-acca-000c29ea04eb
Verifying IP 192.168.26.144 port 3300 ...
Verifying IP 192.168.26.144 port 6789 ...
Mon IP `192.168.26.144` is in CIDR network `192.168.26.0/24`
Mon IP `192.168.26.144` is in CIDR network `192.168.26.0/24`
Internal network (--cluster-network) has not been provided, OSD replication will default to the public_network
Pulling container image quay.io/ceph/ceph:v16...
Ceph version: ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start...
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf...
Restarting the monitor...
Setting mon public_network to 192.168.26.0/24
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr...
Verifying port 9283 ...
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/15)...
mgr not available, waiting (2/15)...
mgr not available, waiting (3/15)...
mgr not available, waiting (4/15)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for mgr epoch 5...
mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys...
Adding host debian1...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for mgr epoch 9...
mgr epoch 9 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:URL: https://debian1:8443/User: adminPassword: b4xslut1x4Enabling client.admin keyring and conf on hosts with "admin" label
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:sudo /usr/sbin/cephadm shell --fsid 492491c0-b0c1-11ef-acca-000c29ea04eb -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringOr, if you are only running a single cluster on this host:sudo /usr/sbin/cephadm shellPlease consider enabling telemetry to help improve Ceph:ceph telemetry onFor more information see:https://docs.ceph.com/en/pacific/mgr/telemetry/Bootstrap complete.

初始化过程会生成首次登录Ceph图形化面板的IP地址链接、用户名和密码,需要牢记好!
在这里插入图片描述

除此之外,此初始化过程会执行以下操作:

  • 在本地主机上为新集群创建monitor 和 manager daemon守护程序。
  • 为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
  • 将public key的副本写入/etc/ceph/ceph.pub。
  • 将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。
  • 向/etc/ceph/ceph.client.admin.keyring写入client.admin可特权管理secret key的副本。

以上操作完成后,在debian1节点上,会运行以下服务:

  • ceph-mgr ceph管理程序
  • ceph-monitor ceph监视器
  • ceph-crash 崩溃数据收集模块
  • prometheus prometheus监控组件
  • grafana 监控数据展示dashboard
  • alertmanager prometheus告警组件
  • node_exporter prometheus节点数据收集组件

(5)在debian1节点上进入/etc/ceph目录,然后通过以下命令,将cephadm的密钥传送到debian1、debian2和debian3节点上,代码如下:

ssh-copy-id -f -i ceph.pub root@debian1
ssh-copy-id -f -i ceph.pub root@debian2
ssh-copy-id -f -i ceph.pub root@debian3

在这里插入图片描述
(6)在debian1上输入命令“cephadm shell -- ceph orch apply mon --unmanaged”将自动部署mon节点的设置禁用,执行此命令的目的是,不让cephadm在后续添加主机的时候自动向添加的主机部署mon和mgr服务,如下:
在这里插入图片描述
(7)分别在debian2和debian3上,输入命令“apt install podman lvm2 -y”,在相应的节点安装Ceph相关服务所需要podman和lvm2组件,如下:
在这里插入图片描述
(8)在debian1上输入以下命令,在Ceph集群中添加debian1、debian2和debian3节点,如下:

cephadm shell -- ceph orch host add debian1
cephadm shell -- ceph orch host add debian2
cephadm shell -- ceph orch host add debian3

在这里插入图片描述
(9)在debian1上输入命令“cephadm shell -- ceph orch host ls”,查看添加的节点,如下:
在这里插入图片描述
(10)通过命令“cephadm shell -- ceph orch device ls”,查看所有节点的可用设备,需要注意的是,此方式显示的可用设备可能存在错误,例如下图中debian2的节点,显示的是/dev/sda和/dev/sdb两个设备可用,实际上,是/dev/sdb和/dev/sbc可用,因此在添加osd设备时,按照实际的设备名称添加即可,如下:
在这里插入图片描述
(11)在debian1上分别执行以下命令,添加各个节点充当osd的硬盘设备,如下:

ceph orch daemon add osd debian1:/dev/sdb
ceph orch daemon add osd debian1:/dev/sdc
ceph orch daemon add osd debian2:/dev/sdb
ceph orch daemon add osd debian2:/dev/sdc
ceph orch daemon add osd debian3:/dev/sdb
ceph orch daemon add osd debian3:/dev/sdc

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(12)为了使得mon服务在本实验中存在冗余结构,在debian1节点上通过命令“cephadm shell -- ceph orch apply mon debian1,debian2,debian3”将mon服务扩展到每个节点,需要注意的是,受网络和服务器性能进行,此扩展过程需要时间,如下:
在这里插入图片描述
(13)在debian1节点上通过命令“cephadm shell -- ceph orch ls”,查看每个节点的mon运行状态,如下:
在这里插入图片描述
(14)为了使得mgr服务在本实验中存在冗余结构,在debian1节点上通过命令“cephadm shell -- ceph orch apply mgr debian1,debian2”将mon服务扩展到每个节点,需要注意的是,受网络和服务器性能进行,此扩展过程需要时间,如下:
在这里插入图片描述
(15)在debian1节点上通过命令“cephadm shell -- ceph -s”查看mgr服务运行情况,如下:
在这里插入图片描述
(16)除上述通过命令行方式操作外,Ceph也提供了图形化操作面板,具体操作方式为在浏览器里面输入“https://IP地址:8443”(本实验为“https://192.168.26.144:8443”),即可登录图形化界面,需要注意的是,首次登录的用户名为admin,密码为Ceph初始化时,分配的密码,通过此密码登录后,将进入首次修改密码界面,如下:
在这里插入图片描述

(17)密码修改完成,并成功登录后,相应的图形化面板界面如下:
在这里插入图片描述

4、以文件系统形式的挂载步骤

Ceph分布式存储的应用接口一般有四种,分别是:应用直接访问的Redos接口、基于S3/Swift的对象存储接口(通常是Amazon和OpenStack使用)、基于librbd的块存储接口和基于libcephfs/posix的文件系统接口。本实验关于Ceph的挂载讲解部分,使用基于libcephfs的文件系统实现。具体步骤如下:
(1)在debian1节点上,通过命令“cephadm shell -- ceph osd pool create cephfs-metadata 32 32”,创建保存元数据的cephfs-metadata存储池,如下:
在这里插入图片描述
(2)在debian1节点上,通过命令“cephadm shell -- ceph osd pool create cephfs-data 64 64”,创建保存数据的cephfs-data存储池,如下:
在这里插入图片描述
(3)在debian1节点上,通过命令“cephadm shell -- ceph orch apply mds mycephfs --placement=”3 debian1 debian2 debian3””,创建一个名为mycephfs的mds,如下:
在这里插入图片描述
(4)在debian1节点上,通过命令“cephadm shell -- ceph fs new mycephfs cephfs-metadata cephfs-data”,创建基于cephfs-metadata/cephfs-data两个存储池,名为mycephfs的cephFS文件系统,如下:
在这里插入图片描述
(5)在debian1节点上,通过命令“cephadm shell -- ceph -s”,查看文件系统mycephfs的部署状态,本截图展示的是文件系统mycephfs部署过程中的状态,如下:
在这里插入图片描述
(6)在debian1节点上,通过命令“cephadm shell -- ceph fs ls”查看和验证刚刚创建的文件系统mycephfs,如下:
在这里插入图片描述
(7)在debian1节点上,通过命令“cephadm shell -- cephfs status mycephfs”查看文件系统mycephfs的运行状态,如下:
在这里插入图片描述
(8)在debian1节点上,通过以下命令,创建和查看用于客户端登录的用户ymh,如下:

cephadm shell -- ceph auth get-or-create client.ymh mon ‘allow r’ mds ‘allow rw’ osd ‘allow rwx pool=cephfs-data’
cephadm shell -- ceph auth get client.ymh

在这里插入图片描述
(9)在debian1节点上通过命令“cephadm shell -- ceph-authtool --create-keyring ceph.client.ymh.keyring”,创建用户ymh的keyring文件,如下:
在这里插入图片描述
(10)在debian1节点上通过命令“cephadm shell -- ceph auth get client.ymh -o ceph.client.ymh.keyring”将用户ymh的信息写入到keyring文件中,如下:
在这里插入图片描述
(11)在debian1节点上通过命令“cephadm shell -- ceph auth print-key client.ymh > ymh.key”将认证相关的加密信息写入到ymh.key文件中,如下:
在这里插入图片描述
(12)在客户端服务器节点(本实验中,客户端服务器安装的是OpenEuler操作系统)上通过命令“yum install ceph-common -y”安装ceph-common,如下:
在这里插入图片描述
(13)在debian1节点上,通过以下命令,将相关ceph配置文件和用户文件移动到同一目录下,并传送到客户端,如下:

mv ceph.client.ymh.keyring ymh.key /etc/ceph
scp /etc/ceph/ceph.conf ceph.client.ymh.keyring ymh.key root@192.168.26.146:/etc/ceph

在这里插入图片描述
(14)在客户端服务器节点上,通过命令“ceph --user ymh -s”,对用户ymh进行权限验证,确认在客户端上通过用户ymh访问服务端是正常的,如下:
在这里插入图片描述
(15)在客户端节点上,通过命令“mount -t ceph 192.168.26.144:6789,192.168.26.151:6789,192.168.26.152:6789:/ /mnt/ceph_test -o name=ymh,secretfile=/etc/ceph/ymh.key”,对搭建完成的Ceph分布式存储集群进行挂载(本实验中,挂载点为/mnt/ceph_test),如下:
在这里插入图片描述
(16)在客户端节点上通过命令“df -Th”,查看挂载情况,如下:
在这里插入图片描述
(17)此时便可以向Ceph集群中进行文件的读写。

5、其他注意事项

cephadm_236">5.1、在cephadm下如何删除已经创建的文件系统和存储池

Ceph为了保证数据安全,在默认情况下,通过ceph监控节点(mon节点)是不能对文件系统和存储池做删除操作的,不过可以通过设置临时项放开删除权限,然后就可以进行删除操作了,以上述的mycephfs文件系统以及下层的cephfs-data、cephfs-metadata存储池为例,讲解相应的删除步骤:
(1)在debian1节点上,通过命令“cephadm shell -- ceph fs set mycephfs down true”放开监控节点删除文件系统的权限,如下:
在这里插入图片描述
(2)在debian1节点上,通过命令“cephadm shell -- ceph osd pool get cephfs-metadata nodeleteceph fs rm mycephfs --yes-i-really-mean-it”删除文件系统mycephfs,如下:
在这里插入图片描述
(3)在debian1节点,通过命令“cephadm shell -- ceph osd pool get cephfs-metadata nodelete”确认nodelete参数为false,如果不是false,则需要通过命令“cephadm shell -- ceph osd pool set cephfs-metadata nodelete false”修改为false,如下:
在这里插入图片描述
在这里插入图片描述
(4)在debian1节点上,通过命令“cephadm shell -- ceph tell mon.* injectargs --mon-allow-pool-delete=true”将mon-allow-pool-delete参数修改为true,以达到放开监控节点删除存储池权限之目的,如下:
在这里插入图片描述
(5)在debian1节点上,通过命令“cephadm shell -- ceph osd pool rm cephfs-metadata cephfs-metadata --yes-i-really-really-mean-it”删除存储池cephfs-metadata,如下:
在这里插入图片描述
(6)在debian1节点上,通过命令“cephadm shell -- ceph osd pool rm cephfs-data cephfs-data --yes-i-really-really-mean-it”删除存储池cephfs-data,如下:
在这里插入图片描述

5.2、Ceph和GlasterFS的区别

Ceph和GlasterFS都是应用非常广泛的开源分布式存储系统,从部署难度上来说GlasterFS部署更加快速容易,可以通过简单的几个配置便可以达到分布式存储的目的,并且对于操作系统基础环境的要求很低,而对比之下,Ceph的部署难度则比GlasterFS高不少。然而,Ceph支持的特性比GlasterFS多很多,例如,GlasterFS只支持文件系统存储,而Ceph除了支持CephFS这一文件系统存储之外,还支持块存储和对象存储,并且每个osd硬盘上都通过文件副本和纠删码等方式进行了加密存储,因此,如果单独把一个osd设备拿出来,其中的文件是不能直接进行使用的,而GlasterFS的每个节点,文件都是直接放在存储节点上,因此这些文件在存储节点单拿出来时,是可以直接使用的。
另外在Amazon和OpenStack等云平台架构中,Ceph是其重要的组成部分,这一点相比于GlasterFS有着无可比拟的优势。


http://www.ppmy.cn/devtools/146084.html

相关文章

Android 之 Activity 的启动模式(launchMode)

一、Activity 启动模式 在实际项目中&#xff0c;应该根据项目的实际需要来为每个 Activity 指定恰当的启动模式 launchMode。启动模式一共有四种&#xff0c;分别是 standard、singleTop、singleTask 和 singleInstance。可以在 AndroidManifest.xml 中通过给 <activity&g…

【ETCD】【实操篇(十四)】etcd 集群备份与还原指南

etcd 是一个高可用的分布式键值存储&#xff0c;常用于分布式系统的配置共享和服务注册。本文将基于提供的启动脚本&#xff0c;详细讲解如何对 etcd 集群进行数据的备份与还原。 目录 一、启动 etcd 集群二、备份 etcd 数据1. 使用 etcdctl 保存快照2. 验证快照文件 三、还原 …

SQL 表连接操作

SQL 表连接操作是数据库查询中一个非常重要的概念&#xff0c;它允许从多个表中检索相关数据。表连接的主要类型包括 INNER JOIN、LEFT JOIN(或 LEFT OUTER JOIN)、RIGHT JOIN(或 RIGHT OUTER JOIN)、FULL JOIN(或 FULL OUTER JOIN)以及 CROSS JOIN。下面是详细解释每种连接操作…

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中&#xff0c;可以使用第三方日志库&#xff08;如 Serilog&#xff09;来实现。Serilog 是一个流行的日志库&#xff0c;支持将日志输出到文件、控制台、数据库等多种目标。 以下是实现步骤&#xff1a; 1. 安装 Serilog 相…

智慧城市可以实现哪些方面的监测

智慧城市通过集成物联网、大数据、云计算、人工智能等前沿技术&#xff0c;实现了对城市运行状态的全面、实时、精准的监测。这种监测覆盖了城市的多个关键领域&#xff0c;为城市管理提供了强有力的数据支持&#xff0c;推动了城市的可持续发展和居民生活质量的提升。以下是对…

模方要使用多机引擎,有什么要求

1.多台机器需要在同一个局域网下&#xff0c;并且其他机器也安装了模方软件 2.工程放在网络路径&#xff0c;此时任务路径默认是网络路径&#xff0c;不建议修改 3.数据存在网络路径&#xff0c;包括新建工程时添加的 osgb、obj、空三文件&#xff0c;匀色需要使用多机的话也…

gcc和g++的联系和区别

1. GCC 和 G 的全称 GCC: GNU Compiler Collection 它是一个完整的编译器集合&#xff0c;支持多种编程语言&#xff08;包括 C、C、Fortran、Go、Ada 等&#xff09;。当使用 gcc 命令时&#xff0c;默认将其视为 GNU C 编译器&#xff0c;但它同样可以编译 C 程序&#xff08…

Airwallex空中云汇实现独立站安全高效收款

在数字化浪潮的强劲推动下&#xff0c;全球贸易正加快迈向数字化转型&#xff0c;其中跨境电商已深度融入国际贸易体系&#xff0c;成为促进全球经济互联互通的重要力量。 而独立站在这一领域中扮演着 举足轻重的角色&#xff0c;吸引了越来越多的商家投身于其建设之中&#xf…