部署之前
安装方式
ceph-deploy 安装,官网已经没有这个部署页面,N之前的版本可以使用,包括N,自动化安装工具,后面的版本将不支持,这里我们选择使用ceph-deploy安装;
cephadm 安装,近期出现的安装方式,需要 Centos8 的环境,并且支持图形化安装或者命令行安装,O版本之后,未来推荐使用 cephadm 安装;
手动安装,一步步的教你如何安装,这种方法可以清晰了解部署细节,以及 Ceph 集群各组件的关联关系等;
Rook 安装,与现有 kubernetes 集群集成安装,安装到集群中;
ceph-ansiable 自动化安装;
服务器规划
服务器IP | 主机名 | 承担功能 | 系统版本 |
100.73.18.152 (复用节点) | ceph-node01 | ceph-deploy、ceph-admin client(复用) mon、mgr、rgw、mds、osd | Centos 7.2 3.10.0-693.5.2.el7.x86_64 |
100.73.18.153 | ceph-node02 | mon、mgr、rgw、mds、osd | |
100.73.18.128 | ceph-node03 | mon、mgr、mds、osd |
架构图
(架构图)
Ceph 概念介绍
组件 | 功能 |
Monitor | 它是一个在主机上面运行的守护进程,这个守护进程,扮演着监控集群整个组件的职责,包括多少个存储池,存储池中有多少个PG,PG与osd映射的关系,每个节点有多少个osd等等,都要监视,它是整个集群运行图(Cluster Map)的持有者,一共5个运行图。 它还维护集群的认证信息,客户端有用户名密码等;内部的OSD也需要与mon通信,也需要认证,它是通过cephX协议进行认证的,各个组件之间通信,都必须认证,认证都需要经过mon,因此mon还是认证中心,有些同学就会想到,如果集群很大了的话,认证中心会不会成为瓶颈,所以这也是需要多台mon的原因,mon在认证上是无状态的,可以做任意横向扩展,可以使用负载均衡负载的; |
Managers | 它的专门守护进程是ceph-mgr,负责收集集群的状态指标,运行时的metrics,存储的利用率,当前性能指标和系统负载,它有很多基于Python的插件,以实现ceph-mgr功能的提升,用户辅助mon的。 |
OSD | Osd是指的单独的资源存储设备,一般情况下一台服务器上面放多块磁盘,ceph为了使用每个节点上面的osd单独进行管理,每一个osd都会有一个单独的、专用的守护进程,比如说,一台服务器上面有6个osd,就需要6个ceph-osd进程,每一个磁盘上面,都有一个守护进程。它提供存储 PG 的数据、数据复制、恢复、再均衡,并提供一些监控信息供mon和mgr来check,并且还可以通过心跳检测其它副本;至少需要有三个osd,不是三台节点哦,这里要注意下,一般情况下我们是1主2从,1主PG、2个副本PG、以确保其高可用性; |
CURSH | CRUSH 是 Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的位置。 |
PG | PG 全称 Placement Groups,是一个逻辑的概念,一个 PG 包含多个 OSD 。引入 PG 这一层其实是为了更好的分配数据和定位数据。 |
Object | 文件需要切分成大小为4M(默认)的块即对象,Ceph 最底层的存储单元就是 Object对象,每个 Object 包含元数据和原始数据; |
RADOS | 实现数据分配、Failover 等集群操作。 |
Libradio | librados提供了访问RADOS存储集群支持异步通信的API接口,支持对集群中对象数据的直接并行访问,用户可通过支持的编程语言开发自定义客户端程序通过RADOS协议与存储系统进行交互; |
MDS | MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务; |
RBD | RBD全称 RADOS Block Device,是 Ceph 对外提供的块设备服务; |
RGW | RGW依赖于在RADOS集群基础上独立运行的守护进程(ceph-radosgw)基于http 或https协议提供相关的API服务,不过,通常仅在需要以REST对象形式存取数据时才部署RGW; |
CephFS | CephFS全称Ceph File System,是 Ceph 对外提供的文件系统服务,它是最早出现的,但也是最后可用于生产的,目前的版本,可以用在生产中。 |
安装部署
1. 修改主机名以及添加host(所有机器)
# 修改主机名
hostnamectl set-hostname ceph-node01
# 修改hosts
[root@ceph-node01 ~]# cat etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
100.73.18.152 ceph-node01
100.73.18.153 ceph-node02
100.73.18.128 ceph-node03
[root@ceph-node01 ~]#
2. ceph-admin 节点与其它节点做信任
由于ceph-deploy命令不支持运行中输入密码,因此必须在管理节点(ceph-admin)上生成 ssh 密钥并将其分发到ceph 集群的各个节点上面。
# 生成密钥
ssh-keygen -t rsa -P ""
# copy 密钥
ssh-copy-id -i .ssh/id_rsa.pub <node-name>
3. 安装 NTP 服务,并做时间同步
yum -y install ntp
安装完成后,配置/etc/ntp.conf 即可,如果公司有 NTP server,直接配置即可,如果没有,可以选择一个公网的;
[root@ceph-node01 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*100.100.1.2 202.28.93.5 2 u 665 1024 377 1.268 -7.338 1.523
-100.100.1.2 202.28.116.236 2 u 1015 1024 377 0.805 -12.547 0.693
+100.100.1.3 203.159.70.33 2 u 117 1024 377 0.742 -5.007 1.814
+100.100.1.4 203.159.70.33 2 u 19 1024 377 0.731 -5.770 2.652
[root@ceph-node01 ~]#
通过以上命令测试ntp 是否配置好即可,可以配置一台,其它节点服务器指向这一台即可;
4. 关闭 iptables 或 firewalld 服务 (也可以指定端口通信,不关闭)
systemctl stop firewalld.service
systemctl stop iptables.service
systemctl disable firewalld.service
systemctl disable iptables.service
5. 关闭并禁用 SELinux
# 修改
sed -i 's@^\(SELINUX=\).*@\1disabled@' etc/sysconfig/selinux
# 生效
setenforce 0
# 查看
getenforce
6. 配置 yum 源(同步到所有机器)
删除原来的配置文件,从阿里源下载最新yum 文件;阿里云的镜像官网:https://developer.aliyun.com/mirror/,基本上可以在这里找到所有相关的镜像链接;
wget -O etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
注意 epel-7 也要下载一下,默认的ceph版本较低,配置 ceph 源,需要自己根据阿里提供的进行自己编写,如下:
ceph:https://mirrors.aliyun.com/ceph/?spm=a2c6h.13651104.0.0.435f22d16X5Jk7
[root@ceph-node01 yum.repos.d]# cat ceph.repo
[norch]
name=norch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0
[x86_64]
name=x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
[root@ceph-node01 yum.repos.d]#
然后同步repo到所有机器上面;
# 查看当前 yum 源
yum repolist
yum repolist all
就是把服务器的包信息下载到本地电脑缓存起来,makecache建立一个缓存,以后用yum install时就在缓存中搜索,提高了速度,配合yum -C search xxx使用。
yum makecache
yum -C search xxx
yum clean all
7. 管理节点安装 ceph-deploy
Ceph 存储集群部署过程中可通过管理节点使用ceph-deploy全程进行,这里首先在管理节点安装ceph-deploy及其依赖的程序包,这里要注意安装 python-setuptools 工具包;
yum install ceph-deploy python-setuptools python2-subprocess32
8. 部署RADOS存储集群
创建一个专属目录;
mkdir ceph-deploy && cd ceph-deploy
初始化第一个MON节点,准备创建集群
ceph-deploy new --cluster-network 100.73.18.0/24 --public-network 100.73.18.0/24 <node-name>
--cluster-network 内部数据同步使用;
--public-network 对外提供服务使用的;
生成三个配置文件,ceph.conf(配置文件)、ceph-deploy-ceph.log(日志文件)、 ceph.mon.keyring(认证文件)。
9. 安装 ceph 集群
ceph-deploy install {ceph-node} {....}
这里使用这种方式安装的话,会自动化的把软件安装包安装上去,这种安装方式不太好,因为它会重新配置yum源,包括我们的 epel yum源,还有 ceph 的 yum 源,都会指向他内置的yum源,这样会导致你访问到国外,下载很慢,建议手动安装,下面每台机器都手动安装即可,如下:
[root@ceph-node01 ceph-deploy]# yum -y install ceph ceph-mds ceph-mgr ceph-osd ceph-radosgw ceph-mon
10. 配置文件和admin密钥copy到ceph集群各节点
[root@ceph-node01 ceph-deploy]# ceph -s
[errno 2] error connecting to the cluster
[root@ceph-node01 ceph-deploy]#
# 原因,没有admin 文件,下面通过 admin 命令进行 copy
[root@ceph-node01 ceph-deploy]# ceph-deploy admin ceph-node01 ceph-node02 ceph-node03
再次查看集群状态如下:
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_OK
services:
mon: 1 daemons, quorum ceph-node01 (age 2m)
mgr: no daemons active
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:
[root@ceph-node01 ceph-deploy]#发现 services 只有一个 mon,没有 mgr、也没有 osd;
11. 安装 mgr
[root@ceph-node01 ceph-deploy]# ceph-deploy mgr create ceph-node01
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph-node01 (age 4m)
mgr: ceph-node01(active, since 84s)
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:
[root@ceph-node01 ceph-deploy]#
12. 向 RADOS 集群添加 OSD
[root@ceph-node01 ceph-deploy]# ceph-deploy osd list ceph-node01
ceph-deploy disk 命令可以检查并列出 OSD 节点上所有可用的磁盘的相关信息;
[root@ceph-node01 ceph-deploy]# ceph-deploy disk zap ceph-node01 dev/vdb
在管理节点上使用 ceph-deploy 命令擦除计划专用于 OSD 磁盘上的所有分区表和数据以便用于 OSD,命令格式 为 ceph-deploy disk zap {osd-server-name} {disk-name},需要注意的是此步会清除目标设备上的所有数据。
# 查看磁盘情况
[root@ceph-node01 ceph-deploy]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 50G 0 disk
├─vda1 252:1 0 500M 0 part boot
└─vda2 252:2 0 49.5G 0 part
├─centos-root 253:0 0 44.5G 0 lvm
└─centos-swap 253:1 0 5G 0 lvm [SWAP]
vdb 252:16 0 100G 0 disk
vdc 252:32 0 100G 0 disk
[root@ceph-node01 ceph-deploy]#
# 添加 osd
[root@ceph-node01 ceph-deploy]# ceph-deploy osd create ceph-node01 --data dev/vdb
。。。
[root@ceph-node01 ceph-deploy]# ceph-deploy osd create ceph-node02 --data dev/vdb
。。。
[root@ceph-node01 ceph-deploy]# ceph-deploy osd create ceph-node03 --data dev/vdb
。。。
[root@ceph-node01 ceph-deploy]# ceph-deploy osd list ceph-node01
ceph-deploy osd list 命令列出指定节点上的 OSD 信息;
13. 查看 OSD
[root@ceph-node01 ceph-deploy]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.39067 root default
-3 0.09769 host ceph-node01
0 hdd 0.09769 osd.0 up 1.00000 1.00000
-5 0.09769 host ceph-node02
1 hdd 0.09769 osd.1 up 1.00000 1.00000
-7 0.19530 host ceph-node03
2 hdd 0.19530 osd.2 up 1.00000 1.00000
[root@ceph-node01 ceph-deploy]#
[root@ceph-node01 ceph-deploy]# ceph osd stat
3 osds: 3 up (since 2d), 3 in (since 2d); epoch: e26
[root@ceph-node01 ceph-deploy]# ceph osd ls
0
1
2
[root@ceph-node01 ceph-deploy]# ceph osd dump
epoch 26
fsid cc10b0cb-476f-420c-b1d6-e48c1dc929af
created 2020-09-29 09:14:30.781641
modified 2020-09-29 10:14:06.100849
flags sortbitwise,recovery_deletes,purged_snapdirs,pglog_hardlimit
crush_version 7
full_ratio 0.95
backfillfull_ratio 0.9
nearfull_ratio 0.85
require_min_compat_client jewel
min_compat_client jewel
require_osd_release nautilus
pool 1 'ceph-demo' replicated size 2 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 25 lfor 0/0/20 flags hashpspool,selfmanaged_snaps stripe_width 0
removed_snaps [1~3]
max_osd 3
osd.0 up in weight 1 up_from 5 up_thru 22 down_at 0 last_clean_interval [0,0) [v2:100.73.18.152:6802/11943,v1:100.73.18.152:6803/11943] [v2:100.73.18.152:6804/11943,v1:100.73.18.152:6805/11943] exists,up 136f6cf7-05a0-4325-aa92-ad316560edff
osd.1 up in weight 1 up_from 9 up_thru 22 down_at 0 last_clean_interval [0,0) [v2:100.73.18.153:6800/10633,v1:100.73.18.153:6801/10633] [v2:100.73.18.153:6802/10633,v1:100.73.18.153:6803/10633] exists,up 79804c00-2662-47a1-9987-95579afa10b6
osd.2 up in weight 1 up_from 13 up_thru 22 down_at 0 last_clean_interval [0,0) [v2:100.73.18.128:6800/10558,v1:100.73.18.128:6801/10558] [v2:100.73.18.128:6802/10558,v1:100.73.18.128:6803/10558] exists,up f15cacec-fdcd-4d3c-8bb8-ab3565cb4d0b
[root@ceph-node01 ceph-deploy]#查看 OSD 的相关信息;
14. 扩展 mon
[root@ceph-node01 ceph-deploy]# ceph-deploy mon add ceph-node02
[root@ceph-node01 ceph-deploy]# ceph-deploy mon add ceph-node03
由于 mon 需要使用 paxos 算法进行选举一个 leader,可以查看选举状态;
[root@ceph-node01 ceph-deploy]# ceph quorum_status
查看 mon 状态
[root@ceph-node01 ceph-deploy]# ceph mon stat
e3: 3 mons at {ceph-node01=[v2:100.73.18.152:3300/0,v1:100.73.18.152:6789/0],ceph-node02=[v2:100.73.18.153:3300/0,v1:100.73.18.153:6789/0],ceph-node03=[v2:100.73.18.128:3300/0,v1:100.73.18.128:6789/0]}, election epoch 12, leader 0 ceph-node01, quorum 0,1,2 ceph-node01,ceph-node02,ceph-node03
[root@ceph-node01 ceph-deploy]#
查看 mon 详情
[root@ceph-node01 ceph-deploy]# ceph mon dump
dumped monmap epoch 3
epoch 3
fsid cc10b0cb-476f-420c-b1d6-e48c1dc929af
last_changed 2020-09-29 09:28:35.692432
created 2020-09-29 09:14:30.493476
min_mon_release 14 (nautilus)
0: [v2:100.73.18.152:3300/0,v1:100.73.18.152:6789/0] mon.ceph-node01
1: [v2:100.73.18.153:3300/0,v1:100.73.18.153:6789/0] mon.ceph-node02
2: [v2:100.73.18.128:3300/0,v1:100.73.18.128:6789/0] mon.ceph-node03
[root@ceph-node01 ceph-deploy]#
15. 扩展 mgr
[root@ceph-node01 ceph-deploy]# ceph-deploy mgr create ceph-node02 ceph-node03
16. 查看集群状态
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 9m)
mgr: ceph-node01(active, since 20m), standbys: ceph-node02, ceph-node03
osd: 3 osds: 3 up (since 13m), 3 in (since 13m)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 397 GiB 400 GiB avail
pgs:
[root@ceph-node01 ceph-deploy]#3个mon、3个mgr、3个osd的RADOS集群创建成功;
17. 移出故障 OSD
Ceph集群中的一个OSD通常对应于一个设备,且运行于专用的守护进程。在某OSD设备出现故障,或管理员出于管 理之需确实要移除特定的OSD设备时,需要先停止相关的守护进程,而后再进行移除操作。
1. 停用设备:ceph osd out {osd-num}
2. 停止进程:sudo systemctl stop ceph-osd@{osd-num}
3. 移除设备:ceph osd purge {id} --yes-i-really-mean-it
[root@ceph-node01 ceph-deploy]# ceph osd out 0
marked out osd.0.
[root@ceph-node01 ceph-deploy]# systemctl stop ceph-osd@0
[root@ceph-node01 ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
purged osd.0
[root@ceph-node01 ceph-deploy]#
移出后查看状态
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_WARN
2 daemons have recently crashed
OSD count 2 < osd_pool_default_size 3
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 15h)
mgr: ceph-node01(active, since 15h)
osd: 2 osds: 2 up (since 37h), 2 in (since 37h)
data:
pools: 1 pools, 128 pgs
objects: 54 objects, 137 MiB
usage: 2.3 GiB used, 298 GiB 300 GiB avail
pgs: 128 active+clean
[root@ceph-node01 ceph-deploy]#
磁盘擦除数据时报错
[root@ceph-node01 ceph-deploy]# ceph-deploy disk zap ceph-node01 /dev/vdb
。。。
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-volume lvm zap /dev/vdb
根据擦除数据时出现报错后,可以使用dd清空数据,然后再重启
[root@ceph-node01 ceph-deploy]# dd if=/dev/zero of=/dev/vdb bs=512K count=1
[root@ceph-node01 ceph-deploy]# reboot
再次进行zap 擦除数据,使磁盘可做 OSD 加入集群
[root@ceph-node01 ceph-deploy]# ceph-deploy disk zap ceph-node01 /dev/vdb
。。。。
/usr/sbin/ceph-volume lvm zap /dev/vdb
[ceph-node01][WARNIN] --> Zapping: /dev/vdb
[ceph-node01][WARNIN] --> --destroy was not specified, but zapping a whole device will remove the partition table
[ceph-node01][WARNIN] Running command: /usr/bin/dd if=/dev/zero of=/dev/vdb bs=1M count=10 conv=fsync
[ceph-node01][WARNIN] stderr: 记录了10+0 的读入
[ceph-node01][WARNIN] 记录了10+0 的写出
[ceph-node01][WARNIN] 10485760字节(10 MB)已复制
[ceph-node01][WARNIN] stderr: ,0.0398864 秒,263 MB/秒
[ceph-node01][WARNIN] --> Zapping successful for: <Raw Device: /dev/vdb>
[root@ceph-node01 ceph-deploy]#
磁盘修复好后,再加入集群
[root@ceph-node01 ceph-deploy]# ceph-deploy osd create ceph-node01 --data /dev/vdb
。。。
[ceph-node01][WARNIN] Running command: /usr/bin/systemctl enable --runtime ceph-osd@0
[ceph-node01][WARNIN] stderr: Created symlink from /run/systemd/system/ceph-osd.target.wants/ceph-osd@0.service to /usr/lib/systemd/system/ceph-osd@.service.
[ceph-node01][WARNIN] Running command: /usr/bin/systemctl start ceph-osd@0
[ceph-node01][WARNIN] --> ceph-volume lvm activate successful for osd ID: 0
[ceph-node01][WARNIN] --> ceph-volume lvm create successful for: /dev/vdb
[ceph-node01][INFO ] checking OSD status...
[ceph-node01][DEBUG ] find the location of an executable
[ceph-node01][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph-node01 is now ready for osd use.
[root@ceph-node01 ceph-deploy]#
查看集群状态,发现正在迁移数据
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_WARN
Degraded data redundancy: 9/88 objects degraded (10.227%), 7 pgs degraded
2 daemons have recently crashed
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 15h)
mgr: ceph-node01(active, since 15h)
osd: 3 osds: 3 up (since 6s), 3 in (since 6s)
data:
pools: 1 pools, 128 pgs
objects: 44 objects, 105 MiB
usage: 3.3 GiB used, 397 GiB / 400 GiB avail
pgs: 24.219% pgs not active
9/88 objects degraded (10.227%)
1/88 objects misplaced (1.136%)
90 active+clean
31 peering
6 active+recovery_wait+degraded
1 active+recovering+degraded
io:
recovery: 1.3 MiB/s, 1 keys/s, 1 objects/s
[root@ceph-node01 ceph-deploy]#
等待一段时间后,发现数据迁移完成,但有两个进程crashed了
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_WARN
2 daemons have recently crashed
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 15h)
mgr: ceph-node01(active, since 15h), standbys: ceph-node02, ceph-node03
osd: 3 osds: 3 up (since 30m), 3 in (since 30m)
data:
pools: 1 pools, 128 pgs
objects: 54 objects, 137 MiB
usage: 3.3 GiB used, 397 GiB / 400 GiB avail
pgs: 128 active+clean
[root@ceph-node01 ceph-deploy]#
通过 ceph health detail 查看集群问题
[root@ceph-node01 ceph-deploy]# ceph health
HEALTH_WARN 2 daemons have recently crashed
[root@ceph-node01 ceph-deploy]# ceph health detail
HEALTH_WARN 2 daemons have recently crashed
RECENT_CRASH 2 daemons have recently crashed
mgr.ceph-node02 crashed on host ceph-node02 at 2020-10-03 01:53:00.058389Z
mgr.ceph-node03 crashed on host ceph-node03 at 2020-10-03 03:33:30.776755Z
[root@ceph-node01 ceph-deploy]# ceph crash ls
ID ENTITY NEW
2020-10-03_01:53:00.058389Z_c26486ef-adab-4a1f-9b94-68953571e8d3 mgr.ceph-node02 *
2020-10-03_03:33:30.776755Z_88464c4c-0711-42fa-ae05-6196180cfe31 mgr.ceph-node03 *
[root@ceph-node01 ceph-deploy]#
通过 systemctl restart ceph-mgr@ceph-node02无法重启(原因后续要找下),再次重建了下;
[root@ceph-node01 ceph-deploy]# ceph-deploy mgr create ceph-node02 ceph-node03
再次查看集群状态如下,mgr已经恢复,但还提示两个进程crashed;
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_WARN
2 daemons have recently crashed
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 15h)
mgr: ceph-node01(active, since 15h), standbys: ceph-node02, ceph-node03
osd: 3 osds: 3 up (since 30m), 3 in (since 30m)
data:
pools: 1 pools, 128 pgs
objects: 54 objects, 137 MiB
usage: 3.3 GiB used, 397 GiB / 400 GiB avail
pgs: 128 active+clean
[root@ceph-node01 ceph-deploy]#
通过 ceph crash archive-all 或者 ID 的形式修复,再次查看集群状态如下:
[root@ceph-node01 ceph-deploy]# ceph crash archive-all
[root@ceph-node01 ceph-deploy]#
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 15h)
mgr: ceph-node01(active, since 15h), standbys: ceph-node02, ceph-node03
osd: 3 osds: 3 up (since 33m), 3 in (since 33m)
data:
pools: 1 pools, 128 pgs
objects: 54 objects, 137 MiB
usage: 3.3 GiB used, 397 GiB / 400 GiB avail
pgs: 128 active+clean
[root@ceph-node01 ceph-deploy]#
总结
1. 安装前准备
服务器规划、服务器间信任、主机名解析(hosts)、NTP同步、firewalld/iptables关闭、SELinux 关闭、配置yum源等;
2. Ceph 集群部署
mon 创建:ceph-deploy new --cluster-network 100.73.18.0/24 --public-network 100.73.18.0/24 <node-name> (创建第一个 mon )
配置拷贝:ceph-deploy admin ceph-node01 ceph-node02 ceph-node03
mon 扩展:ceph-deploy mon add ceph-node02
mgr 创建:ceph-deploy mgr create ceph-node01
mgr 扩展:ceph-deploy mgr create ceph-node02 ceph-node03
osd 创建:ceph-deploy osd create ceph-node01 --data /dev/vdb
3. 集群信息查看
列出可用 osd:ceph-deploy osd list ceph-node01(列出某节点可用osd)
查看磁盘信息:lsblk;
擦除已有盘数据使其成为osd加入集群:ceph-deploy disk zap ceph-node01 /dev/vdb;
查看 OSD 信息:ceph osd tree、ceph osd stat、ceph osd ls、ceph osd dump等
查看 mon 选举:ceph quorum_status、ceph mon stat、ceph mon dump等
4. 集群故障
停止故障 OSD:ceph osd out {osd-num}
停止故障 OSD 进程:systemctl stop ceph-osd@{osd-num}
移出故障 OSD:ceph osd purge {id} --yes-i-really-mean-it
故障信息查看:ceph health、ceph health detail
查看crash进程:ceph crash ls
修复后忽略:ceph crash archive-all
您的关注是我写作的动力
基础小知识
专辑分享
kubeadm使用外部etcd部署kubernetes v1.17.3 高可用集群
第一篇 使用 Prometheus 监控 Kubernetes 集群理论篇