cephadm搭建ceph集群

摘要:
**前言:**2022年7月26日,使用cephadm进行ceph集群的搭建,使用ceph octopus版本,v15.2.16。一、cephadm简介Cephadm通过manager daemon SSH连接到主机部署和管理Ceph群集,以添加,删除或更新Ceph daemon containers。它不依赖于诸如Ansible,Rook或Salt的外部配置或编排工具。Cephadm管理Ceph集群的整个生命周期。它首先在一个节点上引导一个微小的Ceph集群(one monitor and o

**前言:**2022年7月26日,使用cephadm进行ceph集群的搭建,使用ceph octopus版本,v15.2.16。

一、cephadm简介

Cephadm通过manager daemon SSH连接到主机部署和管理Ceph群集,以添加,删除或更新Ceph daemon containers。它不依赖于诸如Ansible,Rook或Salt的外部配置或编排工具。

Cephadm管理Ceph集群的整个生命周期。它首先在一个节点上引导一个微小的Ceph集群(one monitor and one manager),然后自动将集群扩展到多个主机节点,并提供所有Ceph守护程序和服务。这可以通过Ceph命令行界面(CLI)或仪表板(GUI)执行。Cephadm是Octopus v15.2.0版本中的新增功能,并且不支持旧版本的Ceph。

二、节点规划

组件主机IP主机名
cephadm、mon、mds、rgw、osd、mgr192.168.18.137node1
mon、mds、rgw、osd、mgr192.168.18.138node2
mon、mds、rgw、osd、mgr192.168.18.139node3

三、操作

1. 前期准备

1.1 配置主机名

#给各个节点配置提前规划的主机名

hostnamectl set-hostname node1  && bash1

1.2 关闭selinux

sed -i s/SELINUX=.*/SELINUX=disabled/g /etc/selinux/config
setenforce 012

1.3 关闭firewalld

systemctl stop firewalld && systemctl disable firewalld1

1.4 配置免密登录

#此步骤只在cephadm节点执行

ssh-keygen
ssh-copy-id root@192.168.18.138
ssh-copy-id root@192.168.18.139123

1.5 配置hosts解析

#在cephadm节点配置完成使用scp传到各个节点

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.18.137 node1
192.168.18.138 node2
192.168.18.139 node312345

1.6 配置时间同步

yum -y install chrony
systemctl start chronyd && systemctl enable chronyd
chronyc sources -v    #查看同步的时间源服务器123

1.7安装docker并配置加速源

#所有节点都需要安装

yum -y install docker-ce
[root@node1 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://p4s6awgf.mirror.aliyuncs.com"]
}12345

2. 部署集群

2.1 安装cephadm

#从github下载cephadm脚本

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm1

#安装cephadm,ceph需要python3和epel源;在执行安装步骤有时会报错无效的gpg密钥,可以将ceph.repo文件中gpgcheck参数改成0,表示不适用密钥验证
#python3和epel源每个节点都需要安装,否则后续添加集群会报错

chmod +x cephadm
yum install -y epel-release    
yum install -y python3
./cephadm add-repo --release octopus    #使用cephadm脚本生成需要的yum源(可以替换为国内源提高下载速度)
sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' /etc/yum.repos.d/ceph.repo    #可选是否替换国内源
./cephadm install    #安装cephadm123456

2.2 引导新的集群

#该命令的作用

在本地主机上为新集群创建monitor 和 manager daemon守护程序。

为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。

将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。

向/etc/ceph/ceph.client.admin.keyring写入client.admin管理(特权!)secret key的副本。

将public key的副本写入/etc/ceph/ceph.pub。

cephadm bootstrap --mon-ip 192.168.18.1371

#执行上面后在Pulling container image quay.io/ceph/ceph:v15…步骤会需要较长的时间,因为会拉取很多docker镜像,这里需要注意,等出现下面的返回后表示安装成功

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: 8e95f1ea-0cc2-11ed-8c01-000c298f2653
Verifying IP 192.168.18.137 port 3300 ...
Verifying IP 192.168.18.137 port 6789 ...
Mon IP 192.168.18.137 is in CIDR network 192.168.18.0/24
Pulling container image quay.io/ceph/ceph:v15...
Extracting ceph user uid/gid from container image...
......

Ceph Dashboard is now available at:    #dashboard登录方式,注意保存好,第一次登录会提示改密码

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

You can access the Ceph CLI with:

	sudo /usr/sbin/cephadm shell --fsid 8e95f1ea-0cc2-11ed-8c01-000c298f2653 -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/123456789101112131415161718192021222324252627282930313233343536

#查看拉取的那些镜像

[root@node1 ceph]# docker images
REPOSITORY                         TAG       IMAGE ID       CREATED         SIZE
quay.io/ceph/ceph                  v15       296d7fe77d4e   6 weeks ago     1.12GB
quay.io/ceph/ceph-grafana          6.7.4     557c83e11646   11 months ago   486MB
ubuntu                             latest    f643c72bc252   20 months ago   72.9MB
quay.io/prometheus/prometheus      v2.18.1   de242295e225   2 years ago     140MB
quay.io/prometheus/alertmanager    v0.20.0   0881eb8f169f   2 years ago     52.1MB
quay.io/prometheus/node-exporter   v0.18.1   e5a616e4b9cf   3 years ago     22.9MB12345678

#查看目前启动的容器

[root@node1 ceph]# docker ps -a
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS          PORTS     NAMES
b0d18a45272b   quay.io/ceph/ceph-grafana:6.7.4            "/bin/sh -c 'grafana…"   12 minutes ago   Up 12 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-grafana.node1
7f95dd95cb73   quay.io/prometheus/alertmanager:v0.20.0    "/bin/alertmanager -…"   12 minutes ago   Up 12 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-alertmanager.node1
0569b1efbef8   quay.io/prometheus/prometheus:v2.18.1      "/bin/prometheus --c…"   12 minutes ago   Up 12 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-prometheus.node1
677250e756c1   quay.io/prometheus/node-exporter:v0.18.1   "/bin/node_exporter …"   13 minutes ago   Up 13 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-node-exporter.node1
7f92939465a8   quay.io/ceph/ceph:v15                      "/usr/bin/ceph-crash…"   18 minutes ago   Up 18 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-crash.node1
24da9032674d   quay.io/ceph/ceph:v15                      "/usr/bin/ceph-mgr -…"   19 minutes ago   Up 19 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-mgr.node1.nsnfhq
34c6f29c15f7   quay.io/ceph/ceph:v15                      "/usr/bin/ceph-mon -…"   19 minutes ago   Up 19 minutes             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-mon.node1123456789

2.3 启用ceph命令

2.3.1 切换ceph命令模式

#cephadm安装完成稍微有些不一样,需要切换shell才可以使用ceph命令

[root@node1 ~]# cephadm shell    #切换模式
Inferring fsid 8e95f1ea-0cc2-11ed-8c01-000c298f2653
Inferring config /var/lib/ceph/8e95f1ea-0cc2-11ed-8c01-000c298f2653/mon.node1/config
Using recent ceph image quay.io/ceph/ceph@sha256:c3336a5b10b069b127d1a66ef97d489867fc9c2e4f379100e5a06f99f137a420
[ceph: root@node1 /]# ceph -s
  cluster:
    id:     8e95f1ea-0cc2-11ed-8c01-000c298f2653
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1 (age 29m)
    mgr: node1.nsnfhq(active, since 28m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
[ceph: root@node1 /]# ceph orch ps    #查看目前集群内运行的组件(包括其他节点)
NAME                 HOST   STATUS         REFRESHED  AGE  VERSION  IMAGE NAME                                IMAGE ID      CONTAINER ID  
alertmanager.node1   node1  running (22m)  2m ago     27m  0.20.0   quay.io/prometheus/alertmanager:v0.20.0   0881eb8f169f  7f95dd95cb73  
crash.node1          node1  running (27m)  2m ago     27m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  7f92939465a8  
grafana.node1        node1  running (22m)  2m ago     23m  6.7.4    quay.io/ceph/ceph-grafana:6.7.4           557c83e11646  b0d18a45272b  
mgr.node1.nsnfhq     node1  running (29m)  2m ago     29m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  24da9032674d  
mon.node1            node1  running (29m)  2m ago     29m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  34c6f29c15f7  
node-exporter.node1  node1  running (23m)  2m ago     23m  0.18.1   quay.io/prometheus/node-exporter:v0.18.1  e5a616e4b9cf  677250e756c1  
prometheus.node1     node1  running (22m)  2m ago     22m  2.18.1   quay.io/prometheus/prometheus:v2.18.1     de242295e225  0569b1efbef8  
[ceph: root@node1 /]# ceph orch ps --daemon-type mon    #查看某一组件的状态
NAME       HOST   STATUS         REFRESHED  AGE  VERSION  IMAGE NAME             IMAGE ID      CONTAINER ID  
mon.node1  node1  running (30m)  2m ago     30m  15.2.16  quay.io/ceph/ceph:v15  296d7fe77d4e  34c6f29c15f7 
[ceph: root@node1 /]# exit    #推出命令模式12345678910111213141516171819202122232425262728293031323334

2.3.2 ceph命令的第二种应用

[root@node1 ~]# cephadm shell -- ceph -s
Inferring fsid 8e95f1ea-0cc2-11ed-8c01-000c298f2653
Inferring config /var/lib/ceph/8e95f1ea-0cc2-11ed-8c01-000c298f2653/mon.node1/config
Using recent ceph image quay.io/ceph/ceph@sha256:c3336a5b10b069b127d1a66ef97d489867fc9c2e4f379100e5a06f99f137a420
  cluster:
    id:     8e95f1ea-0cc2-11ed-8c01-000c298f2653
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1 (age 33m)
    mgr: node1.nsnfhq(active, since 32m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:1234567891011121314151617181920

2.3.3 下载ceph-common包提供ceph命令

#安装ceph-common包

cephadm install ceph-common
[root@node1 ~]# ceph -v    #安装完成后测试是否可以直接使用ceph命令
ceph version 15.2.16 (d46a73d6d0a67a79558054a3a5a72cb561724974) octopus (stable)123

2.4 启用ceph组件

#首先在新主机的根用户authorized_keys文件中安装集群的公共SSH密钥

ssh-copy-id -f -i /etc/ceph/ceph.pub root@node2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@node312

2.4.1 创建mon和mgr

#只能一个一个添加

ceph orch host add node2
ceph orch host add node312

#查看目前集群纳管的节点

[root@node1 ~]# ceph orch host ls 
HOST   ADDR   LABELS  STATUS  
node1  node1                  
node2  node2                  
node3  node312345

#纳管别的节点后会在别的节点自动安装mon和mgr两个组件,安装过程比较慢;安装完成后使用以下命令查看;
#ceph集群一般默认会允许存在5个mon和2个mgr;可以使用ceph orch apply mon --placement="3 node1 node2 node3"进行手动修改

[root@node1 ~]# ceph orch ls |grep mon
mon                      3/5  5m ago     17h  count:5                    quay.io/ceph/ceph:v15                     296d7fe77d4e  
[root@node1 ~]# ceph orch apply mon --placement="3 node1 node2 node3"
Scheduled mon update...
[root@node1 ~]# ceph orch ls
NAME                 RUNNING  REFRESHED  AGE  PLACEMENT                  IMAGE NAME                                IMAGE ID      
mon                      3/3  6m ago     5s   node1;node2;node3;count:3  quay.io/ceph/ceph:v15                     296d7fe77d4e  
[root@node1 ~]# ceph orch ls |grep mgr
mgr                      2/2  7m ago     17h  count:2                    quay.io/ceph/ceph:v15                     296d7fe77d4e  
                     "/usr/bin/ceph-crash…"   15 hours ago   Up 15 hours             ceph-8e95f1ea-0cc2-11ed-8c01-000c298f2653-crash.node2
[root@node1 ~]# ceph orch apply mgr --placement="3 node1 node2 node3"
[root@node1 ~]# ceph orch ls |grep mgr
mgr                      3/3  70s ago    74s  node1;node2;node3;count:3  quay.io/ceph/ceph:v15                     296d7fe77d4e12345678910111213

2.4.2 创建osd

#查看目前ceph集群内的osd,因为还未创建,回显为空

ceph orch deveice ls1

#创建osd

ceph orch daemon add osd <hostname>:</dev/sdX>1

2.4.3 创建mds

#首先创建cephfs,不指定pg的话,默认自动调整

ceph osd pool create cephfs_data
ceph osd pool create cephfs_metadata
ceph fs new cephfs cephfs_metadata cephfs_data123

#开启mds组件,cephfs:文件系统名称;–placement:指定集群内需要几个mds,后面跟主机名

ceph orch apply mds cephfs --placement="3 node1 node2 node3"1

#查看各节点是否已启动mds容器;还可以使用ceph orch ps 查看某一节点运行的容器

[root@node1 ~]# ceph orch ps --daemon-type mds
mds.cephfs.node1.xwflet  node1  running (13m)  3m ago     13m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  d3016ca78432  
mds.cephfs.node2.zgcxxv  node2  running (13m)  3m ago     13m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  71b53d26f319  
mds.cephfs.node3.lvwumj  node3  running (13m)  3m ago     13m  15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  aae556cadd841234

2.4.4 创建rgw

#首先创建一个领域

radosgw-admin realm create --rgw-realm=myorg --default1

#创建区域组

radosgw-admin zonegroup create --rgw-zonegroup=default --master --default1

#创建区域

radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default1

#为特定领域和区域部署radosgw守护程序

ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"1

#验证各节点是否启动rgw容器

[root@node1 ~]# ceph orch ps --daemon-type rgw
rgw.myorg.cn-east-1.node1.skjzzm  node1  running (3m)   3m ago     3m   15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  ee7d5843e78a  
rgw.myorg.cn-east-1.node2.wcizhr  node2  running (3m)   3m ago     3m   15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  ab1d93c9013b  
rgw.myorg.cn-east-1.node3.dmxggg  node3  running (3m)   3m ago     3m   15.2.16  quay.io/ceph/ceph:v15                     296d7fe77d4e  2d5ced948fe31234

2.5 为所有节点安装ceph-common包

#其他节点因为没有cephadm脚本,所以不能使用ceph命令,我们手动安装ceph-common进行解决

scp /etc/yum.repos.d/ceph.repo node2:/etc/yum.repos.d/    #将主节点的ceph源同步至其他节点
yum -y install ceph-common    #在节点安装ceph-common,ceph-common包会提供ceph命令并在etc下创建ceph目录
scp /etc/ceph/ceph.conf node2:/etc/ceph/    #将ceph.conf文件传输至对应节点
scp /etc/ceph/ceph.client.admin.keyring node2:/etc/ceph/    #将密钥文件传输至对应节点1234

#在对应节点进行测试

[root@node2 ceph]# ceph -s
  cluster:
    id:     8e95f1ea-0cc2-11ed-8c01-000c298f2653
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 38m)
    mgr: node1.nsnfhq(active, since 21h), standbys: node2.wtbkhf, node3.vkrufi
    mds: cephfs:1 {0=cephfs.node1.xwflet=up:active} 2 up:standby
    osd: 6 osds: 6 up (since 38m), 6 in (since 5h)
    rgw: 3 daemons active (myorg.cn-east-1.node1.skjzzm, myorg.cn-east-1.node2.wcizhr, myorg.cn-east-1.node3.dmxggg)
 
  task status:
 
  data:
    pools:   7 pools, 169 pgs
    objects: 250 objects, 7.7 KiB
    usage:   6.1 GiB used, 54 GiB / 60 GiB avail
    pgs:     169 active+clean12345678910111213141516171819

3. 简单命令整理

ceph orch ls    #列出集群内运行的组件
ceph orch host ls    #列出集群内的主机
ceph orch ps     #列出集群内容器的详细信息
ceph orch apply mon --placement="3 node1 node2 node3"    #调整组件的数量
ceph orch ps --daemon-type rgw    #--daemon-type:指定查看的组件
ceph orch host label add node1 mon    #给某个主机指定标签
ceph orch apply mon label:mon    #告诉cephadm根据标签部署mon,修改后只有包含mon的主机才会成为mon,不过原来启动的mon现在暂时不会关闭
ceph orch device ls    #列出集群内的存储设备
例如,要在newhost1IP地址10.1.2.123上部署第二台监视器,并newhost2在网络10.1.2.0/24中部署第三台monitor
ceph orch apply mon --unmanaged    #禁用mon自动部署
ceph orch daemon add mon newhost1:10.1.2.123
ceph orch daemon add mon newhost2:10.1.2.0/24123456789101112

4. ceph可视化展示

#在引导完成新的集群后,ceph就会在容器运行dashboard、Prometheus、grafana等可视化工具;

4.1dashboard

#这里需要用到第一次引导集群时升级的dashboard账密,建议在浏览器使用IP进行访问,因为自己的windows系统没有配置主机名解析是访问不到的;

https://192.168.18.137:8443

在这里插入图片描述

4.2Prometheus

#Prometheus用的是http协议登录
http://192.168.18.137:9095/
在这里插入图片描述
#查看Prometheus的target
在这里插入图片描述

在这里插入图片描述

4.3 grafana

#点击manager
https://192.168.18.137:3000/
在这里插入图片描述
#点击ceph-cluter
在这里插入图片描述
#集群运行状态
在这里插入图片描述

免责声明:文章转载自《cephadm搭建ceph集群》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)Unity3D应用防外挂与防破解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

VMP加壳(二):VMP的虚拟化原理

由于CPU只能识别和执行二进制文件,并直接让硬件CPU执行虚拟机的二进制代码,因此只能考虑通过纯软件模拟虚拟机执行代码指令。为了在软件级别模拟CPU执行二进制代码指令,一般的虚拟机指令要么是操作寄存器,虚拟机指令的处理程序必须模拟这些函数。它用于指示虚拟CPU当前执行的代码。为了满足上述要点,2。VMP虚拟机的执行过程(1)考虑启动VT。...

Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

3 MATLAB2009之后,并行计算工具箱和并行计算服务退出。通过PCT和DCS,用户可以实现基于多核平台、多处理器平台和集群平台的多个并行计算任务。除了支持上述通用功能外,PCT还增加了对GPU单元的支持。现在来看彼此已经太晚了:用parfor并行化for循环。在编程中,使计算量最小化的代码总是一个循环。7 parpool命令在不启动并行池的情况下配置并...

ubuntu中VNC的安装配置笔记

设置密码并首次启动vncserver后。vnc/directory将在用户的主目录中生成。注意:安装后,用户的主目录中没有vnc目录。这是因为默认情况下启用了桌面配置,并且需要修改配置文件。后来,我在网上找到了一篇可靠的文章:http://blog.csdn.net/njchenyi/article/details/8489689本文中描述的配置方法确实可行...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...

AcWing算法基础课

第二行包含n个整数,表示整数序列。输出格式对于每个输出指令PM,输出表示当前集合中最小值的结果。每个结果占据一行。数据范围1≤ N≤ 105109≤ x(x)≤ 109是合法的。输入示例:8I-10PMI-10D1C28I6PMDM输出示例:-106分析:对于向上和向下操作,请注意ph和hp的应用,这相当于指针ph[k]=t;插入堆中的Kth的位置为t;hp...

js获取移动端设备信息(IMEM,IMIS,手机型号,系统版本,浏览器信息等)

方法1:HTML+打包方法、附加配置和使用指定方法打包是可用属性:imei:device的国际移动设备ID imsi:device的国际移动用户ID型号:device的型号供应商:device制造商uuid:device唯一标识参考地址:http://www.html5plus.org/doc/zh_cn/device.html方法2:引用插件mobile-...