快速搭建测ceph

news2025/2/27 1:49:27

一、cephadm介绍

Cephadm是一个由Ceph社区维护的工具,它用于在Ceph集群中管理和部署Ceph服务。它是一个基于容器化的工具,使用了容器技术来部署Ceph集群的不同组件。

使用Cephadm,管理员可以通过简单的命令行界面在整个Ceph集群中进行自动化部署、更新和维护。它提供了一种简单而灵活的方法来管理Ceph集群,而无需深入了解Ceph集群的内部工作原理。

Cephadm还提供了一些有用的功能,如在集群中添加新的节点、删除现有节点、进行配置更改等等。它还可以自动检测并修复一些常见的问题,例如节点故障、网络问题等等。

从ceph5开始使用cephadm代替之前的ceph-ansible作为管理整个集群生命周期的工具,包括部署,管理,监控。

cephadm引导过程在单个节点(bootstrap节点)上创建一个小型存储集群,包括一个Ceph Monitor和一个Ceph Manager,以及任何所需的依赖项。

cephadm可以登录到容器仓库来拉取ceph镜像和使用对应镜像来在对应ceph节点进行部署。ceph容器镜像对于部署ceph集群是必须的,因为被部署的ceph容器是基于那些镜像。

为了和ceph集群节点通信,cephadm使用ssh。通过使用ssh连接,cephadm可以向集群中添加主机,添加存储和监控那些主机。

该节点让集群up的软件包就是cepadm,podman或docker,python3和chrony。总之,Cephadm是一个非常强大和实用的工具,可以大大简化Ceph集群的管理和部署过程,为管理员提供了更高效和可靠的管理方式。

1、python3

yum -y install python3

 

2、使用docker来运行容器

安装步骤及docker学习资料可查看http://xingxingxiaowo.xyz:4000/
# 注: 自己搭建的网站,非商用
# 安装阿里云提供的docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker

systemctl status docker #查看状态
# 配置镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://bp1bh1ga.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

 

3、时间同步(比如chrony或者NTP)

# yum install chrony -y

vi /etc/chrony.conf
# cat /etc/chrony.conf |grep -v ^# |grep -v ^$
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
#allow 192.168.0.0/16
allow all
local stratum 10


systemctl enable --now chronyd
systemctl status chronyd
设置时区Asia/ Shanghai
# timedatectl set-timezone Asia/Shanghai

# chronyc sources
# chronyc tracking  #同步服务状态
显示当前正在访问的时间源
# chronyc sources -v

客户端
cat /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server node1 iburst


systemctl enable --now chronyd
systemctl status chronyd

二、部署ceph集群前准备

2.1、节点准备

系统

硬盘

node1

Centos7

192.168.116.10

mon,mgr,服务器端,管理节点

/dev/vdb,/dev/vdc/,dev/vdd

node2

Centos7

192.168.116.20

mon,mgr

/dev/vdb,/dev/vdc/,dev/vdd

node3

Centos7

192.168.116.30

mon,mgr

/dev/vdb,/dev/vdc/,dev/vdd

2.2、修改每个节点的/etc/host

192.168.116.10 node1
192.168.116.20 node2
192.168.116.30 node3

主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

2.3、在node1节点上做免密登录

[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:49VjCBjpqw380VbX61UyvfIg/CBGz7CvD/emhrWgta0 root@node1
The key's randomart image is:
+---[RSA 2048]----+
|      ..         |
|      .o         |
|     .. .    . . |
|      .  +.o. + o|
|   .   oS.O.+  +o|
|    o o.oO O +...|
|     = o=.O.=.+. |
|    . o. oo=.o.. |
|         E=oo.   |
+----[SHA256]-----+
[root@node1 ~]# ssh-copy-id root@node2
[root@node1 ~]# ssh-copy-id root@node3
[root@node1 ~]# ssh-copy-id root@node1

 

三、node1节点安装cephadm

1.安装epel源
[root@node1 ~]# yum -y install epel-release
2.安装ceph源
[root@node1 ~]# yum search release-ceph
上次元数据过期检查:0:57:14 前,执行于 2023年02月14日 星期二 14时22分00秒。
================= 名称 匹配:release-ceph ============================================
centos-release-ceph-nautilus.noarch : Ceph Nautilus packages from the CentOS Storage SIG repository
centos-release-ceph-octopus.noarch : Ceph Octopus packages from the CentOS Storage SIG repository
centos-release-ceph-pacific.noarch : Ceph Pacific packages from the CentOS Storage SIG repository
centos-release-ceph-quincy.noarch : Ceph Quincy packages from the CentOS Storage SIG repository
#[root@node1 ~]# yum -y install centos-release-ceph-pacific
#3.安装cephadm
#[root@node1 ~]# yum -y install cephadm 这是红帽系统花钱的订阅,cephadm还是去网上拉一下吧
#4.安装ceph-common
#[root@node1 ~]# yum -y install ceph-common


[root@node1 ~]# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
#多试几次
[root@node1 ~]# ls
anaconda-ks.cfg  cephadm
[root@node1 ~]# chmod +x cephadm

# 此命令将生成 ceph yum 源
[root@node1 ~]#  ./cephadm add-repo --release octopus
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...

# 备份 ceph yum 源并将其替换使用 阿里云 yum 源
[root@node1 ~]# cp /etc/yum.repos.d/ceph.repo{,.back}
[root@node1 ~]# sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' /etc/yum.repos.d/ceph.repo
[root@node1 ~]# yum list | grep ceph

# 安装 cephadm 到当前节点(其实就是将 cephadm 复制到环境变量)
[root@node1 ~]# ./cephadm install
Installing packages ['cephadm']...
[root@node1 ~]# which cephadm
/usr/sbin/cephadm

四、其它节点安装docker-ce,python3

具体过程看标题一。

五、部署ceph集群

5.1、部署ceph集群,顺便把dashboard(图形控制界面)安装上

[root@node1 ~]#  mkdir -p /etc/ceph
[root@node1 ~]# cephadm bootstrap --mon-ip 192.168.116.10 --allow-fqdn-hostname --initial-dashboard-user admin --initial-dashboard-password admin --dashboard-password-noupdate
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit chronyd.service is enabled and running
Repeating the final host check...
podman|docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit chronyd.service is enabled and running
Host looks OK
Cluster fsid: cbda57b6-f075-11ed-8063-000c29cf191a
Verifying IP 192.168.116.10 port 3300 ...
Verifying IP 192.168.116.10 port 6789 ...
Mon IP 192.168.116.10 is in CIDR network 192.168.116.0/24
Pulling container image quay.io/ceph/ceph:v15...
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...
Creating mgr...
Verifying port 9283 ...
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Wrote config to /etc/ceph/ceph.conf
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/10)...
mgr not available, waiting (2/10)...
mgr not available, waiting (3/10)...
mgr not available, waiting (4/10)...
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 to /etc/ceph/ceph.pub
Adding key to root@localhost's authorized_keys...
Adding host node1...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Enabling mgr prometheus module...
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 13...
Mgr epoch 13 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

             URL: https://node1:8443/
            User: admin
        Password: admin

You can access the Ceph CLI with:

        sudo /usr/sbin/cephadm shell --fsid cbda57b6-f075-11ed-8063-000c29cf191a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

  • bootstrap: 用于引导新的Ceph集群。在此命令中,它表示要创建一个新的管理节点。
  • --mon-ip: 指定新的管理节点的IP地址。
  • --allow-fqdn-hostname: 允许使用完全限定域名(FQDN)的主机名,而不是只使用短名称。例如,可以使用ceph-node1.example.com而不是只使用ceph-node1。
  • --initial-dashboard-user: 配置Ceph Dashboard的管理员用户名。在此命令中,用户名为admin。
  • --initial-dashboard-password: 配置Ceph Dashboard的管理员用户密码。在此命令中,密码为admin。
  • --dashboard-password-noupdate: 禁止要求管理员在首次登录Ceph Dashboard时更新其密码。这可以在测试环境中使用,但不建议在生产环境中使用。

访问 https://192.168.116.10:8443/

 

 

 

5.2、把集群公钥复制到将成为集群成员的节点

[root@node1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@node2
[root@node1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@node3

 

5.3、添加节点node2.node3(各节点要先安装docker-ce,python3)

[root@node1 ~]# cephadm install ceph-common
Installing packages ['ceph-common']...
[root@node1 ~]# ceph orch host add node2 192.168.116.20
Added host 'node2'
[root@node1 ~]# ceph orch host add node3 192.168.116.30
Added host 'node3'

5.4、给node1打上管理员标签

[root@node1 ~]# ceph orch host ls
HOST   ADDR            LABELS  STATUS 
node1  node1                          
node2  192.168.116.20                 
node3  192.168.116.30
[root@node1 ~]# ceph orch host label add node1 _admin
Added label _admin to host node1
[root@node1 ~]# ceph orch host ls
HOST   ADDR            LABELS  STATUS 
node1  node1           _admin         
node2  192.168.116.20                 
node3  192.168.116.30                 
[root@node1 ~]# ceph orch ps
NAME                 HOST   STATUS        REFRESHED  AGE  VERSION  IMAGE NAME                                IMAGE ID      CONTAINER ID 
alertmanager.node1   node1  running (2h)  8m ago     2h   0.20.0   quay.io/prometheus/alertmanager:v0.20.0   0881eb8f169f  ff86284a8d94 
crash.node1          node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  102c7293eda9 
grafana.node1        node1  running (2h)  8m ago     2h   6.7.4    quay.io/ceph/ceph-grafana:6.7.4           557c83e11646  88d4c152784f 
mgr.node1.midtux     node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  2771be47f8c2 
mon.node1            node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  c45baaccf058 
node-exporter.node1  node1  running (2h)  8m ago     2h   0.18.1   quay.io/prometheus/node-exporter:v0.18.1  e5a616e4b9cf  e6632f1f0851 
prometheus.node1     node1  running (2h)  8m ago     2h   2.18.1   quay.io/prometheus/prometheus:v2.18.1     de242295e225  a898f8ceaae4 

 

5.5、添加mon

[root@node1 ~]# ceph orch apply mon "node1,node2,node3"
Scheduled mon update...

5.6、添加mgr

[root@node1 ~]# ceph orch apply mgr --placement="node1,node2,node3"
Scheduled mgr update...

5.7、添加osd

[root@node1 ~]# ceph orch daemon add osd node1:/dev/sdb
Created osd(s) 0 on host 'node1'
[root@node1 ~]# ceph orch daemon add osd node2:/dev/sdb
Created osd(s) 1 on host 'node2'
[root@node1 ~]# ceph orch daemon add osd node3:/dev/sdb
Created osd(s) 2 on host 'node3'


[root@node1 ~]# ceph orch device ls
Hostname  Path      Type  Serial  Size   Health   Ident  Fault  Available 
node1     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No        
node2     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No        
node3     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No 

5.8、至此,ceph集群基础部署完毕!

[root@node1 ~]# ceph -s
  cluster:
    id:     3e635ab8-f08e-11ed-af2f-000c29cf191a
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node3,node2 (age 85s)
    mgr: node1.fcxhll(active, since 7m), standbys: node2.fugwlk
    osd: 3 osds: 3 up (since 19s), 3 in (since 19s)
 
  task status:
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 297 GiB / 300 GiB avail
    pgs:     1 active+clean

5.9、客户端节点管理ceph

# 在目录5.4已经将ceph配置文件和keyring拷贝到node4节点
[root@node4 ~]# ceph -s
-bash: ceph: 未找到命令,需要安装ceph-common
# 安装ceph源
[root@node4 ~]# cephadm install ceph-common
# 安装ceph-common
[root@node4 ~]# yum -y install ceph-common
[root@node4 ~]# ceph -s
  cluster:
    id:     0b565668-ace4-11ed-960c-5254000de7a0
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 7m)
    mgr: node1.cxtokn(active, since 14m), standbys: node2.heebcb, node3.fsrlxu
    osd: 9 osds: 9 up (since 59s), 9 in (since 81s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   53 MiB used, 90 GiB / 90 GiB avail
    pgs:     1 active+clean

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python递归树结构,回溯法深度优先、广度优先详解,代码实现

Python实现&#xff0c;递归算法&#xff0c;深度优先、广度优先 其实递归说白了就是循环本身函数&#xff0c;只不过下次循环的输入值是上次循环的结果值。关于递归算法&#xff0c;我经常把它用在搜索、计算中。我们来看一个简单的例子&#xff1a; 计算Demo 要实现1&…

高数杂项1

一些口诀 长杠变短杠&#xff0c;开口换方向 其实意思是底下这个 C ∩ D ‾ C ‾ ∪ D ‾ \overline{C \cap D} \overline C \cup \overline D C∩DC∪D 可导必可微&#xff0c;可微必可导 二者互为充要条件 可导必定连续&#xff0c;连续未必可导。连续必定可积,可微未必可积…

django-restful-framework基础知识

DRF 总体设计框架流程 DRF大体的工作流程如下图&#xff1a; 其中&#xff1a;这里的Request不再是Django默认的HttpRequest对象&#xff0c;而是REST Framework提供的扩展了HttpRequest类的Request类对象。 1. Web应用模式 在开发Web应用中&#xff0c;有两种应用模式&…

【sentinel】授权规则详解及源码分析

之前我们在配置流控规则时&#xff0c;可以根据origin参数来对调用方进行限流。 很多时候&#xff0c;我们需要根据调用方来限制资源是否通过&#xff0c;这时候可以使用Sentinel的黑白名单控制的功能&#xff0c;这就是授权规则。 黑白名单也是根据资源的请求来源&#xff0…

vite跨域问题,你可能需要看这篇文章

最近在学习项目的时候&#xff0c;使用了vite工具进行构建&#xff0c;然后出现了跨域的问题&#xff0c;中间的曲折不过多叙述&#xff0c;直接进入正题。 前端成功启动后的界面&#xff1a; 然后在后端进行的Controller上使用了如下的配置 然后浏览器就会出现跨域的问题 为什…

Maven 依赖管理 学习

目录 Maven 依赖管理 可传递性依赖发现 依赖范围 依赖管理 Maven 自动化部署 问题描述 解决方案 修改项目的 pom.xml Maven Release 插件 Maven Web 应用 创建 Web 应用 构建 Web 应用 部署 Web 应用 Maven 依赖管理 Maven 一个核心的特性就是依赖管理。当我们处…

【场景生成与研究】考虑时序相关性MC的场景生成与削减研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Docker基础篇(下)

1、容器命令 新建启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用的参数&#xff1a; ● --name&#xff1a;为容器指定一个名称 ● -d&#xff1a;后台运行容器并返回容器ID&#xff0c;也即启动守护式容器 ● -i&#xff1a;以交互模式&#xff08;interacti…

基于FPGA:运动目标检测(LCD显示+串口输出,纯Verilog工程)

目录 前言一、先看效果二、硬件选择三、系统框架四、程序模块1、系统顶层模块2、图像处理顶层模块3、LCD驱动顶层模块4、SDRAM控制器顶层模块5、上位机发送模块 五、工程及套件获取1、工程获取2、套件 前言 最早做了基于FPGA&#xff1a;运动目标检测&#xff08;VGA显示&#…

Java基础-面向对象总结(1)

本文主要梳理关于 Java面向对象的基础知识,希望对你有帮助 Java对象 目录 Java对象 Java创建对象有几种方式 创建一个对象用什么运算符? 对象实体与对象引用有何不同? 创建一个对象的步骤 Java对象都包含什么 ? new Object()对象占多少个字节? 对象的比较 对象的相…

kafka原理之生产者

batch.size:只有数据累计到batch.size后&#xff0c;sender才会发送数据。默认16k linger.ms:如果迟迟没有达到batch.size&#xff0c;sender等待linger.ms设置时间之后&#xff0c;发送数据。单位:ms,默认0(没有延迟) acks设置: 0:不需要等待数据落盘应答&#xff1b;1:leader…

Java ---多线程(下)

&#xff08;一&#xff09;目录 线程的优先级 守护线程 线程同步 线程并发协作 主要内容 &#xff08;二&#xff09;线程的优先级 1 什么是线程的优先级 每一个线程都是有优先级的&#xff0c;我们可以为每个线程定义线程的优先级&#xff0c;但是这并不能保 证高优…

Anaconda下载与安装详解

文章目录 1 Anaconda1.1 简介1.2 下载安装1.3 配置环境变量1.4 下载配置1.4.1 conda配置1.4.1.1 修改conda下载源1.4.1.2 删除下载源1.4.1.3 包下载目录1.4.1.4 下载报错 1.4.2 pip配置1.4.2.1 配置源1.4.2.2 下载目录1.4.2.3 修改下载目录 1.5 修改虚拟环境地址1.5.1 通过配置…

【软件开发】Memcached(理论篇)

Memcached&#xff08;理论篇&#xff09; 1.Memcached 简介 Memcached 是一个开源的&#xff0c;支持高性能&#xff0c;高并发的分布式内存缓存系统&#xff0c;由 C 语言编写&#xff0c;总共 2000 多行代码。从软件名称上看&#xff0c;前 3 个字符 Mem 就是内存的意思&am…

quartz原理

1.如何实现任务 2.3个组件 3.工作原理 在Quartz中&#xff0c;有两类线程&#xff0c;Scheduler调度线程和任务执行线程&#xff0c;其中任务执行线程通常使用一个线程池维护一组线程。 Scheduler调度线程主要有两个&#xff1a;执行常规调度的线程&#xff0c;和执行misfir…

【C++】关联式容器——mapset的使用

文章目录 1.关联式容器和键值对1. 关联式容器2. 键值对 2. 树形结构的关联式容器——set1. 模版参数列表2. 默认成员函数3. 迭代器4.容量相关操作5.modify6.其他操作接口 3. 树形结构的关联式容器——map1. 默认成员函数2. 迭代器3. 容量与数据访问4.数据修改5. 其他操作接口 1…

vue-5:router

router路由配置&#xff0c;使用 在vue-cli构建的vue单页面应用中&#xff0c;需要借助vue-router库实现路由功能 配置路由 (构建项目时要下载) router文件夹下创建&#xff1a;index.js&#xff0c;routerConfig.js配置路由 路由懒加载&#xff1a; 按需加载&#xff1a;…

轻松掌握线程基础知识和四种创建方式及区别

1、线程与进程 2、并行与并发 3、创建线程 1、方式一&#xff1a;继承Thread类 2、方式二&#xff1a;实现Runnable接口 3、方式三&#xff1a;实现Callable接口 4、方式四&#xff1a;线程池创建线程&#xff08;项目中使用的方式&#xff09; 5、Runnable和Callable区别 6、…

在 Windows 10/11、7/8 上清空后从回收站恢复已删除文件的 6 种方法

Windows&#xff08;包括 Windows 11、10、8、7 和 Vista&#xff09;上的回收站用于回收您打算删除的不需要的文件。如果您删除了一些重要的文件或文件夹并且不小心清空了回收站&#xff0c;您仍然有机会恢复从回收站中删除的文件。这是一个教程&#xff0c;将阐明“如何在清空…

HTML第一天

HTML第一天 我们接下来是进行的网页开发网页的相关概念: 什么是网页?什么是HTML?网页的形成? 什么是网页&#xff1a; 1.网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 2.网页是网站中的一“页”&#xff0c;通常是…