当前位置: 首页 > news >正文

RHCA - CL260 | Day11:管理存储集群

一、执行集群管理和监控

1、Defining the Ceph Manager(MGR)

MGR的作用是收集集群统计数据。当MGR主机宕机时,客户端的I/O还可用正常操作,只是不可以查询集群的统计数据信息。

Ceph集群最少部署2个MGR,第一个启动的MGR为active,其他所有MGR都是standby。

使用 ceph mgr fail <MGR_NAME> 可用手动将active降级为standby。用来人工标记一个 Ceph Manager (mgr) 守护进程实例为失败状态。这个命令通常在管理员确定某个 Ceph Manager 实例出现问题,无法正常工作时使用,以便集群能够快速转移管理职责到另一个正常的 Manager 实例。

[root@clienta ~]# ceph mgr fail serverc.lab.example.com.aiqepd
[root@clienta ~]# ceph -s
mgr: servere.kjwyko(active, since 2s), standbys: serverd.klrkci, clienta.nncugs, serverc.lab.example.com.aiqepd

命令的各个部分意味着:

  • ceph mgr fail:这是 Ceph 命令行工具的一个子命令,用来标记一个 Manager 守护进程为失败状态。
  • serverc.lab.example.com.aiqepd:这是出现问题的 Manager 守护进程的标识符。在 Ceph 中,守护进程通常会被赋予一个标识符,这个标识符通常与它们运行的服务器的主机名相关联。

在执行此命令之后,Ceph 集群会认为这个 Manager 实例已经失败,然后根据集群的配置和当前状态,可能会自动启动另一个 Manager 实例(如果有额外的 Manager 实例配置在集群中)。这样做有助于保持集群的管理功能稳定运行,即使是在个别组件出现故障的情况下。

Ceph MGR Modules(MGR模块)

  • The Ceph MGR has a modular architecture. MGR使用的模块化架构设计。

  • You can enable or disable modules as needed. 你可用根据需要启动或关闭模块。

使用 ceph mgr module ls 命令可用查看模块。

root@ceph-mon-vm4-3-37:~# ceph mgr module ls
MODULE
balancer              on (always on)
crash                 on (always on)
devicehealth          on (always on)
orchestrator          on (always on)
pg_autoscaler         on (always on)
progress              on (always on)
rbd_support           on (always on)
status                on (always on)
telemetry             on (always on)
volumes               on (always on)
cephadm               on
dashboard             on
iostat                on
nfs                   on
prometheus            on
restful               on
...

使用 ceph mgr services 命令可用查看特定模块的发布地址,比如Dashboard模块的URL。

root@ceph-mon-vm4-3-37:~# ceph mgr services
{"dashboard": "https://10.4.3.39:8443/","prometheus": "http://10.4.3.39:9283/"
}

Monitoring Cluster Health(监控集群状态)

[ceph: root@node /]# ceph health detail
[ceph: root@node /]# ceph -s
[ceph: root@node /]# ceph -w                //real-time monitoring(实时监控,ctrl+c退出)

该命令提供集群活动的状态,例如:

  • Data rebalancing across the cluster (跨集群的数据再平衡)
  • Replica recovery across the cluster (跨集群的副本恢复)
  • Scrubbing activity(擦洗活动)
  • OSDs starting and stopping(osd正在启动和停止)

2、Managing Ceph Services(管理Ceph服务)

ceph服务一般包含 $daemon$id

  • $daemon:是服务的类型,比如:mon,mgr,mds,osd,rgw,rbd-mirror等。

  • $id:是服务的标识,对于MON、MGR、RGW而言id就是主机名,对OSD而言就是OSD ID号。

使用 ceph orch ps 命令可用列出集群的所有进程,使用 --daemon_type=<daemon> 可用过滤某种类型的服务。

  • 命令:ceph orch ps --daemon_type=<daemon>
[ceph: root@node /]# ceph orch ps --daemon_type=osd
NAME   HOST                     STATUS        REFRESHED  AGE  PORTS  VERSION           IMAGE ID      CONTAINER ID 
osd.0  serverc.lab.example.com  running (6d)  2m ago     13M  -      16.2.0-117.el8cp  2142b60d7974  cdf026b72511 
osd.1  serverc.lab.example.com  running (6d)  2m ago     13M  -      16.2.0-117.el8cp  2142b60d7974  d531c05db18d 
osd.2  serverc.lab.example.com  running (6d)  2m ago     13M  -      16.2.0-117.el8cp  2142b60d7974  70d0d1668977 
osd.3  serverd.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  ff14d5bc2e8b 
osd.4  servere.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  bde9f3ebbc0e 
osd.5  serverd.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  7b3eb523663a 
osd.6  servere.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  2437ddeb3ec1 
osd.7  serverd.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  6948d60c80da 
osd.8  servere.lab.example.com  running (6d)  2m ago     12M  -      16.2.0-117.el8cp  2142b60d7974  261b945b3022 

还可以通过重启集群主机的ceph.target,实现重启该主机上面所有的ceph组件

  • 命令:systemctl restart ceph.target

也可用通过ceph orch命令管理集群的服务

  • 命令:ceph orch restart osd.default_drive_group

如果需要单独重启某个进程也可用使用ceph orch daemon命令

  • 命令:ceph orch daemon restart osd.1

3、Setting Cluster Flags(设置集群标签)

Ceph支持不同的集群标志来控制集群的行为。The ceph osd set and ceph osd unset commands manage these flags, listed below:ceph osd set 和 ceph osd unset 命令管理这些标志,如下所示:

  1. noup: Do not automatically mark a starting OSD as up.(不要自动将正在启动的OSD标记为up。
    • 防止如网络延迟问题导致OSD通信异常,各个OSD会向MON报告其他OSD down(mark down),而把自己mark up;
    • 设置noup和nodown可以防止这种波动行为.
  2. nodown:Do not automatically mark a starting OSD as down.(不要自动将正在启动的OSD标记为down。
  3. noout: this flag tells the MON not to remove any OSDs from the crush map.(这个标志告诉MON不要从粉碎图中移除任何osd。
    1. mon会在osd宕机后自动将OSD标记为out,
    2. 维护服务器时使用,防止停机维护osd时crush自动rebalance.
  4. noin: 和noout一起,在维护服务器时,不添加也不删除OSD.
  5. norecover: 不做任何数据恢复操作
  6. nobackfill: 不做任何backfill操作(回填数据是在无法使用日志恢复数据时,进行全量回填拷贝)
  7. noscrub:不做任何scrub操作( Ceph会定期启动scrub线程来扫描数据对象,分析对象的元数据,做主OSD和备OSD的比较,判断数据是否一致。)默认一天做一次scrubbing。
  8. nodeep-scrub:不做任何deep scrub操作(深度分析对象的元数据,比较数据的CRC32值是否一致),默认一周做一次deep-scrubbing。
  9. norebalance:不做任何rebalance操作.
[root@clienta ~]# ceph osd set nodown
nodown is set[root@clienta ~]# ceph osd set noin
noin is set[root@clienta ~]# ceph osd unset nodown
nodown is unset[root@clienta ~]# ceph osd unset noin
noin is unset

Cluster Power Down(关闭Ceph集群的步骤)

  1. 关闭客户端访问

  2. 确保集群状态为HEALTH_OK

  3. 关闭CephFS

  4. 设置noout, norecover, norebalance, nobackfill, nodown and pause flags.

  5. 关闭RGW

  6. 一个一个关闭OSD

  7. 一个一个关闭MON和MGR

  8. 关闭管理节点

Cluster Power Up(启动Ceph集群的步骤)

  1. 启动主机:管理节点,MON,MGR,OSD,MDS等主机

  2. 清除noout, norecover, norebalance, nobackfill, nodown and pause flags.

  3. 启动RGW

  4. 启动CephFS


4、Viewing Daemon Logs(查看守护进程日志)

查看守护进程日志,使用 journalctl -u $daemon$id 命令。

[root@node ~]# journalctl -u ceph-ff97a876-1fd2-11ec-8258-52540000fa0c@osd.10.service

5、通过将守护进程的log_to_file设置为true,为每个特定的Ceph守护进程启用日志记录。

  • 命令:ceph config set <daemon> log_to_file true
[ceph: root@node /]# ceph config set mon log_to_file true    //开启某个服务的日志功能
[ceph: root@node /]# ceph config set osd log_to_file true    //开启某个服务的日志功能

6、Analyzing OSD Usage 分析OSD使用情况

ceph osd df 命令用来查询osd使用率统计信息。

[ceph: root@node /]# ceph osd df
ID    CLASS    WEIGHT      REWEIGHT      SIZE      RAW USE   DATA       OMAP     META       AVAIL      %USE    VAR    PGS     STATUS0    hdd      1.00000     1.00000       10 GiB    48 MiB    4.2 MiB    0 B      44 MiB     9.9 GiB    0.47    0.61   29          up2    hdd      1.00000     1.00000       10 GiB    149 MiB   4.3 MiB    0 B      145 MiB    9.9 GiB    1.45    1.90   127         up
... ...

Key

Description

ID

OSD ID号

CLASS

OSD设备类型(如HDD,SSD,NVMe)

WEIGHT

OSD设备在CRUSH Map中的权重,默认根据磁盘容量计算而来

REWEIGHT

默认权重,或者通过ceph osd reweight设置的值,该命令可以临时覆盖CRUSH权重

SIZE

OSD存储空间

RAW USE

OSD使用量

DATA

存储的用户数据

OMAP

BlueFS用来存储object map(OMAP)数据的容量,数据存储在RocksDB中

META

BlueFS分配的空间和bulestore_bluefs_min参数设置的容量,二者取大

AVAIL

剩余可用空间

%USE

磁盘利用率

VAR

利用率的变化

PGS

OSD上面映射的PG数量

STATUS

OSD的状态


使用 ceph osd perf 命令,查看osd性能统计信息。

[ceph: root@node /]# ceph osd perf
osd  commit_latency(ms)  apply_latency(ms)8                   0                  07                   0                  0

7、Monitoring OSD Capacity 监控OSD容量

为了防止空间不足而导致的数据丢失,Ceph可用设置如下参数,确保存储空间不足时提前报警。

  • full-ratio:这是最重要的阈值。当OSD达到这个比例时,它会被标记为完全满。此时,Ceph将阻止新的写入操作以保护集群不会过载,并报告HEALTH_ERR状态,默认值为0.95(95%)。

  • mon_osd_nearfull_ratio:当OSD接近这个比例时,它会被标记为接近满。这是一个警告,提示管理员存储空间正在被使用,集群报警HEALTH_WARN,默认值为0.85(85%)。

  • mon_osd_backfillfull_ratio:当OSD达到这个比例时,它会被标记为回填满。这个阈值通常用来控制集群在平衡或恢复数据时的行为。

[ceph: root@node /]# ceph osd set-full-ratio .85
[ceph: root@node /]# ceph osd set-nearfull-ratio .75
[ceph: root@node /]# ceph osd set-backfillfull-ratio .80

默认的比例适合于小的Ceph集群环境,生产环境的集群应该设置更低的存储比例。

8、Monitoring Palcement Groups 监控归置组PG

Placement groups can have the following states: 归置组PG 可以有以下状态:

PG state

Description

creating

正在创建PG

peering

OSD开始确认PG内的数据是否一致,PG内多个OSD需要同步数据并校验,确认数据一致后变成active状态

active

数据一致性已经确认完成,PG中的数据可用进行读写请求

clean

PG的副本数量正确

degraded

PG内有数据对象的副本数量不正确

recovering

数据对象开始进行副本的迁移或数据同步

recovery_wait

等待恢复数据

undersized

活跃的pg数量(acting set)小于副本数

inconsistent

PG中的一个或多个副本数据不一致,代表她们中肯定有数据是错误的

replay

某OSD崩溃后,PG正在等待客户端重新发起操作

repair

PG正在执行计划性检查,遇到文件进行修复

backfill,

backfill_wait,

backfill_toofull

数据回填

回填等待

因为存储空间不足导致无法回填

incomplete

OSD失败或者未启动导致PG信息丢失

stale

PG是未知状态(OSD报告超时)

inactive

The PG has been inactive for too long. PG不活跃太久了。

unclean

The PG has been unclean for too long. PG已经不干净太久了。

remapped

OSD变化,导致PG需要进行重新映射OSD

down

The PG is offline. PG已经下线

spliting

修改存储池,增加PG,会导致旧的PG分裂,重新分配OSD

scrubbing,

deep-scrubbing

A PG scrub or deep-scrub operation is in progress.PG擦洗或深度擦洗操作正在进行中。

9、Upgrading the Cluster

1)使用cephadm-ansible剧本,将upgrade_ceph_packages设置为true,更新cephadm

[root@node ~]# ansible-playbook -i /etc/ansible/hosts cephadm-preflight.yml \ --extra-vars "ceph_origin=rhcs upgrade_ceph_packages=true"

2)执行ceph orch upgrade start命令

[ceph: root@node /]# ceph orch upgrade start --ceph-version 16.2.0-117.el8cp

3)执行ceph status查看升级状态,执行ceph versions查看版本

[ceph: root@node /]# ceph status [ceph: root@node /]# ceph versions

Lab:Performing Cluster Administration and Monitoring

1、查看启动的MGR模块,验证dashboard模块是否激活

[root@foundation0 ~]# ssh root@clienta
[root@clienta ~]# cephadm shell
[ceph: root@clienta /]# ceph mgr module ls | more
... ...
"enabled_modules": ["cephadm","dashboard","insights","iostat","prometheus","restful"
],

获取dashboard URL,命令:ceph mgr services

[ceph: root@clienta /]# ceph mgr services
{"dashboard": "https://172.25.250.12:8443/","prometheus": "http://172.25.250.12:9283/"
}

查看OSD状态,命令:ceph osd stat

[ceph: root@clienta /]# ceph osd stat
9 osds: 9 up(since 38m), 9 in (since 38m); epoch: e294

查找OSD 2进程的位置,命令:ceph osd find 2

[ceph: root@clienta /]# ceph osd find 2
{"osd": 2,"addrs": {"addrvec": [{"type": "v2","addr": "172.25.250.12:6816","nonce": 3732121245},{"type": "v1","addr": "172.25.250.12:6817","nonce": 3732121245}]},"osd_fsid": "68d72b66-4c99-4d54-a7e4-f1cb8f8e5054","host": "serverc.lab.example.com","crush_location": {"host": "hostc","rack": "rack1","root": "default-cl260"}
}

2、登录serverc主机,查看OSD进程,管理OSD进程

[root@foundation0 ~]# ssh root@serverc
[root@serverc ~]# systemctl list-units "ceph*"
... ...
ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.2.service
[root@serverc ~]# systemctl stop ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.2.service[root@serverc ~]# cephadm shell
[ceph: root@serverc /]# ceph osd stat
9 osds: 8 up (since 8s), 9 in (since 12M); epoch: e317; 105 remapped pgs
[ceph: root@serverc /]# exit[root@serverc ~]# systemctl start ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.2.service
[root@serverc ~]# cephadm shell
[ceph: root@serverc /]# ceph osd stat
9 osds: 9 up (since 13s), 9 in (since 12M); epoch: e330; 105 remapped pgs

标记OSD为out,然后重新标记in

[ceph: root@serverc /]# ceph osd out 4
marked out osd.4.
[ceph: root@serverc /]# ceph osd stat
9 osds: 9 up (since 3m), 8 in (since 9s); epoch: e332; 105 remapped pgs

备注:osd进程还在运行,但是该OSD已经不在存储集群的CRUSH map中,OSD的权重为0

[ceph: root@serverc /]# ceph osd tree
ID   CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
-13         8.00000  root default
-15         2.00000          host server0    hdd  1.00000              osd.0       up   1.00000  1.000001    ssd  1.00000              osd.1       up   1.00000  1.000002    ssd  1.00000              osd.2       up   1.00000  1.00000
-17         3.00000          host serverd3    hdd  1.00000              osd.3       up   1.00000  1.000004    hdd  1.00000              osd.4       up         0  1.00000      //OSD的权重为05    ssd  1.00000              osd.5       up   1.00000  1.00000
-19         3.00000          host servere7    hdd  1.00000              osd.7       up   1.00000  1.000008    hdd  1.00000              osd.8       up   1.00000  1.000006    ssd  1.00000              osd.6       up   1.00000  1.00000

重新将OSD加入集群

[ceph: root@serverc /]# ceph osd in 4
marked in osd.4.
[ceph: root@serverc /]# ceph osd stat
9 osds: 9 up (since 8m), 9 in (since 38s); epoch: e334;

3、创建新的存储池,上传数据到存储池,定位数据

[ceph: root@serverc /]# ceph osd pool create testpool 32 32     //创建新的存储池
[ceph: root@serverc /]# rados -p testpool put testobject /etc/ceph/ceph.conf     //上传数据到存储池,命名为testobject
[ceph: root@serverc /]# ceph osd map testpool testobject     //定位数据
osdmap e198 pool 'testpool' (6) object 'testobject' -> pg 6.98824931 (6.11) -> up ([2,8,3], p2) acting ([2,8,3], p2)

备注:该数据存储在6.11这个PG,该PG映射的OSD为2,8,3,其中2为primary OSD

[ceph: root@serverc /]# ceph pg 6.11 query
{"snap_trimq": "[]","snap_trimq_len": 0,"state": "active+clean","epoch": 198,"up": [2,8,3],"acting": [2,8,3],"acting_recovery_backfill": ["2","3","8"],"info": {"pgid": "6.11","last_update": "198'1","last_complete": "198'1",

4、查看Ceph版本

[ceph: root@serverc /]# ceph versions
{"mon": {"ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57) pacific (stable)": 4},"mgr": {"ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57) pacific (stable)": 4},"osd": {"ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57) pacific (stable)": 9},"mds": {},"rgw": {"ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57) pacific (stable)": 2},"overall": {"ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57) pacific (stable)": 19}
}

二、执行集群维护操作

1、Replacing a Failed OSD(更换失效的OSD)

红帽的Ceph存储设计的是自愈性集群设计,当存储失败失败时,数据会自动拷贝到其他存储设备,恢复数据让集群恢复health状态。如果OSD失败,可以使用图形或者如下命令替换OSD。


例如:OSD故障处理

[ceph: root@node /]# ceph -s     //先验证集群状态
[ceph: root@node /]# ceph osd tree | grep -i down     //查找失败的是哪些OSD
[ceph: root@node /]# ceph osd find osd.ID           //定位OSD的位置,比如osd.1
{"osd": 1,"addrs": {"addrvec": [{"type": "v2","addr": "172.25.250.12:6800","nonce": 2094519107},{"type": "v1","addr": "172.25.250.12:6801","nonce": 2094519107}]},"osd_fsid": "3f751363-a03c-4b76-af92-8114e38bfa09","host": "serverc.lab.example.com","crush_location": {"host": "serverc","root": "default"}
}

1)尝试重启失败的OSD

  • 命令:ceph orch daemon restart OSD_ID
[ceph: root@node /]# ceph orch daemon restart OSD_ID

如果无法重启,可能是硬件故障,可以使用journalctl命令查看OSD日志,或者使用硬件检测软件检测硬件。

2)如果你确定硬件设备需要更换,则执行如下步骤:

1.临时禁止scrubbing,不做数据对比,数据校验

  • 命令:ceph osd set noscrub; ceph osd set nodeep-scrub
[ceph: root@node /]# ceph osd set noscrub; ceph osd set nodeep-scrub

2.从集群移除OSD

  • 命令:ceph osd out osd_ID
[ceph: root@node /]# ceph osd out osd_ID

3.查看集群事件,确认有backfill操作已经开始

[ceph: root@node /]# ceph -w

4.确认backfill进程已经将所有PG迁移出OSD,这样就可以安全删除设备

  • 命令:ceph osd safe-to-destroy osd.ID
[ceph: root@node /]# ceph osd safe-to-destroy osd.ID
Error EBUSY: OSD(s) 1 have 51 pgs currently mapped to them.

提示:说明还有PG映射到该OSD,还需要等待,backfill进程,再进行后续操作

5.替换设备,将旧设备初始化(删除所有数据)

  • 命令:ceph orch device zap HOSTNAME OSD_ID --force
[ceph: root@node /]# ceph orch device zap HOSTNAME OSD_ID --force

6.替换新设备,还使用旧的ID

  • 命令:ceph orch osd rm OSD_ID --replace
  • 命令:ceph orch daemon add osd HOSTNAME:/Dev_Path
  • 命令:ceph orch daemon start OSD_ID
[ceph: root@node /]# ceph orch osd rm OSD_ID --replace
[ceph: root@node /]# ceph orch osd rm status[ceph: root@node /]# ceph orch daemon add osd HOSTNAME:/Dev_Path
[ceph: root@node /]# ceph orch daemon start OSD_ID
[ceph: root@node /]# ceph osd tree   //查看

7.重启启用scrubbing

[ceph: root@node /]# ceph osd unset noscrub; ceph osd unset nodeep-scrub

2、Adding a MON 添加新的MON

1)将当前集群的SSH密钥导出到文件

  • 命令:ceph cephadm get-pub-key > ~/ceph.pub
[ceph: root@node /]# ceph cephadm get-pub-key > ~/ceph.pub

2)将密钥拷贝给新的主机

[ceph: root@node /]# ssh-copy-id -f -i ~/ceph.pub root@HOSTNAME

3)将新主机加入集群

  • 命令:ceph orch host add HOSTNAME
[ceph: root@node /]# ceph orch host add HOSTNAME

4)设置运行MON服务的主机(如果只指定新主机,则命令会将原来所有主机的MON关闭)

  • 命令:ceph orch apply mon --placement="NODE1 NODE2 NODE3 ..."
[ceph: root@node /]# ceph orch apply mon --placement="NODE1 NODE2 NODE3 ..."

补充知识点1:

在Ceph的新版本中,特别是从Octopus和Pacific版本开始,Ceph引入了一个新的“orchestrator”层,用以简化集群的管理和自动化操作。Ceph的命令行工具ceph orch提供了一种管理服务(包括MONs)的方法,而不需要直接操作底层的服务守护进程。
以下是使用Ceph Orchestrator(ceph orch)添加新MON节点到Ceph集群的流程:

1.确保Ceph Orchestrator已经启用并运行:
ceph orch status

2.添加新的MON节点:
使用ceph orch命令可以添加新的MON节点。你需要提供新MON的主机名。假设你想要在名为new-mon-host的新节点上添加一个MON,可以使用以下命令:
ceph orch apply mon --placement="<new_mon_host>"
这里的<new_mon_host>是新的MON节点的主机名。如果你想要在多个节点上同时添加MON,可以将它们用逗号分隔。

3.验证新的MON已经添加:
添加新的MON后,需要一些时间来启动和同步。你可以使用以下命令来监控新MON的状态:
ceph -s
或者查看ceph orch的输出:
ceph orch ps --daemon-type mon

4.检查MON的配额:
Ceph通常推荐使用奇数个MON来避免脑裂(split-brain)情况。确保你添加后的MON总数是一个奇数。

在整个操作过程中,确保你有足够的权限和对Ceph集群的了解。如果在添加新的MON时遇到问题,请检查Ceph的官方文档或寻求社区的帮助。

这个过程依赖于你的Ceph集群已经配置了Orchestrator后端,例如Rook、cephadm或其他支持的Orchestrator。如果你的集群还没有配置Orchestrator后端,你需要首先设置它。在Ceph Octopus和Pacific版本中,cephadm是默认的Orchestrator后端。


3、Removing a MON 删除MON

  • 命令:ceph orch apply mon --placement="NODE1 NODE2..."
[ceph: root@node /]# ceph orch apply mon --placement="NODE1 NODE2..."

补充知识点2:

在Ceph的新版本(从Octopus起)中,使用ceph orch命令来管理集群变得日益普及。如果你需要在Ceph的一个版本(例如Ceph Quincy,即Reef版本)中删除一个监控节点(MON),你可以按照以下步骤操作:

1.检查当前MON节点的状态:
在进行任何操作之前,检查当前的MON状态和数量。你可以用以下命令来完成这个检查:
ceph mon stat
或者
ceph quorum_status --format json-pretty

2.确定要删除的MON节点:
决定哪个MON节点将被移除。你需要确保在删除后,MON节点的总数仍然是一个奇数,因为这对于避免脑裂是很重要的。

3.使用ceph orch命令移除MON节点:
假设你要删除的MON节点的主机名为mon-to-remove,使用以下命令来移除MON服务:
ceph orch daemon rm mon.<mon-to-remove>
在这里,<mon-to-remove>是你想要删除的MON节点的主机名。

4.验证MON已被移除:
使用以下命令来确认MON已经被正确地移除:
ceph mon stat
或者
ceph orch ps --daemon-type mon

5.清理MON节点的相关数据:
在某些情况下,你可能还需要手动清理已移除MON节点上的MON数据目录。这可以通过登录到相应的主机上并删除MON数据目录来完成。

6.更新ceph.conf(如果需要的话)

如果你的ceph.conf文件中硬编码了MON的地址,你需要更新它来反映这些变化。

请注意,在进行这些步骤之前,你需要确保集群处于稳定状态,并且所有的数据都已经做了适当的备份。删除MON节点是一个敏感操作,如果没有正确地执行,可能会导致集群的不稳定或数据丢失。如果你不确定自己的操作,请咨询Ceph集群的管理员。


4、Placing Hosts Into Maintenance Mode 设置主机进入维护模式

使用 ceph orch host maintenance 命令可以让主机进入或退出维护模式,进入维护模式的主机,所有的ceph进程都会被关闭。

  • 命令:ceph orch host maintenance enter HOSTNAME [--force]
  • 命令:ceph orch host maintenance exit HOSTNAME

Lab: Performing Cluster Maintenance Operations

1、模拟OSD损坏及修复过程

[root@foundation0 ~]# ssh root@clienta
[root@clienta ~]# cephadm shell

1)将osd.3服务关闭

[ceph: root@clienta /]# ceph orch daemon stop osd.3
Scheduled to stop osd.3 on host 'serverd.lab.example.com'[ceph: root@clienta /]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1         0.08817  root default
-3         0.02939      host serverc0    hdd  0.00980          osd.0         up   1.00000  1.000001    hdd  0.00980          osd.1         up   1.00000  1.000002    hdd  0.00980          osd.2         up   1.00000  1.00000
-5         0.02939      host serverd3    hdd  0.00980          osd.3       down   1.00000  1.000005    hdd  0.00980          osd.5         up   1.00000  1.000007    hdd  0.00980          osd.7         up   1.00000  1.00000
-7         0.02939      host servere4    hdd  0.00980          osd.4         up   1.00000  1.000006    hdd  0.00980          osd.6         up   1.00000  1.000008    hdd  0.00980          osd.8         up   1.00000  1.00000

2)查看集群状态(HEALTH会变成WARN)

[ceph: root@clienta /]# ceph -s

3)临时禁止scrubbing

[ceph: root@clienta /]# ceph osd set noscrub
noscrub is set[ceph: root@clienta /]# ceph osd set nodeep-scrub
nodeep-scrub is set

4)定位osd.3的位置信息(先找主机,再找对应的硬盘)

[ceph: root@clienta /]# ceph osd find osd.3
{"osd": 3,"addrs": {"addrvec": [{"type": "v2","addr": "172.25.250.13:6800","nonce": 1447491874... ...

5)如果定位到是serverd主机,则ssh远程serverd主机,使用root需要输入密码(密码为redhat)

[ceph: root@clienta /]# ssh root@serverd
root@serverd's password:<redhat>
[root@serverd ~]# cephadm shell       //在serverd主机进入ceph管理容器

6)查看该主机OSD和硬盘的对应关系(仅可以查看本机的OSD)

  • 命令:ceph-volume lvm list
[ceph: root@serverd /]# ceph-volume lvm list
====== osd.3 =======[block]       /dev/ceph-86706d5a-129b-48ca-a7d1-83f347243c0e/osd-block-21a9ebe9-908d-4026-8a57-8fbee935033eblock device              /dev/ceph-86706d5a-129b-48ca-a7d1-83f347243c0e/osd-block-21a9ebe9-908d-4026-8a57-8fbee935033eblock uuid                1wm7ER-iKn2-dZMS-RJLQ-k52x-U7jW-2x67VGcephx lockbox secretcluster fsid              2ae6d05a-229a-11ec-925e-52540000fa0ccluster name              cephcrush device class        Noneencrypted                 0osd fsid                  21a9ebe9-908d-4026-8a57-8fbee935033eosd id                    3osdspec affinity          default_drive_grouptype                      blockvdo                       0devices                   /dev/vdb
... ...[ceph: root@serverd /]# exit    //返回serverd宿主主机

或者也可以使用ceph osd metadata osd.3查看OSD和设备的对应关系

7)查看所有的ceph服务,确认OSD3的服务是否在该主机

[root@serverd ~]# systemctl list-units --all "ceph*"
ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.3.service    loaded inactive dead    Ceph osd.3 for 2ae6d05a-229a>

8)检查OSD服务的日志

[root@serverd ~]# journalctl -ru ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.3.service

9)启动osd.3服务

[root@serverd ~]# systemctl start ceph-2ae6d05a-229a-11ec-925e-52540000fa0c@osd.3.service

10)返回clienta,查看ceph osd状态

[root@serverd ~]# exit
[ceph: root@clienta /]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1         0.08817  root default
-3         0.02939      host serverc0    hdd  0.00980          osd.0         up   1.00000  1.000001    hdd  0.00980          osd.1         up   1.00000  1.000002    hdd  0.00980          osd.2         up   1.00000  1.00000
-5         0.02939      host serverd3    hdd  0.00980          osd.3         up   1.00000  1.000005    hdd  0.00980          osd.5         up   1.00000  1.000007    hdd  0.00980          osd.7         up   1.00000  1.00000
-7         0.02939      host servere4    hdd  0.00980          osd.4         up   1.00000  1.000006    hdd  0.00980          osd.6         up   1.00000  1.000008    hdd  0.00980          osd.8         up   1.00000  1.00000

11)激活scrubbing

[ceph: root@clienta /]# ceph osd unset noscrub
noscrub is unset
[ceph: root@clienta /]# ceph osd unset nodeep-scrub
nodeep-scrub is unset

12)查看ceph集群状态

[ceph: root@clienta /]# ceph -s

2、调整MON主机的数量

1)查看现有MON主机信息

[ceph: root@clienta /]# ceph orch ls --service_type=mon
NAME  RUNNING  REFRESHED  AGE  PLACEMENT
mon       4/4  6m ago     13M  clienta.lab.example.com;serverc.lab.example.com;serverd.lab.example.com;servere.lab.example.com

2)添加serverg到ceph集群

//创建密钥并拷贝到serverg
[ceph: root@clienta /]# ceph cephadm get-pub-key > ~/ceph.pub
[ceph: root@clienta /]# ssh-copy-id -f -i ~/ceph.pub root@serverg//添加主机
[ceph: root@clienta /]# ceph orch host add serverg.lab.example.com
[ceph: root@clienta /]# ceph orch host ls
HOST                     ADDR           LABELS  STATUS
clienta.lab.example.com  172.25.250.10  _admin
serverc.lab.example.com  172.25.250.12
serverd.lab.example.com  172.25.250.13
servere.lab.example.com  172.25.250.14
serverg.lab.example.com  172.25.250.16//查看mon服务,目前还不包括有serverg
[ceph: root@clienta /]# ceph orch ls --service_type=mon
NAME  RUNNING  REFRESHED  AGE  PLACEMENT
mon       4/4  6m ago     13M  clienta.lab.example.com;serverc.lab.example.com;serverd.lab.example.com;servere.lab.example.com

3)在serverg主机启动mon服务

[ceph: root@clienta /]# ceph orch apply mon \
--placement="clienta.lab.example.com \
serverc.lab.example.com \
serverd.lab.example.com \
servere.lab.example.com \
serverg.lab.example.com"
Scheduled mon update...

4)验证效果

[ceph: root@clienta /]# ceph orch ls --service_type=mon
NAME  RUNNING  REFRESHED  AGE  PLACEMENT                                                                                       
mon       5/5  80s ago    47s  clienta.lab.example.com;serverc.lab.example.com;serverd.lab.example.com;servere.lab.example.com;serverg.lab.example.com

备注:因为默认OSD的placement放置规则是运行在server*主机的vdb,vdc,vdd三块硬盘,因此serverg主机的OSD会被自动激活

[ceph: root@clienta /]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1         0.11755  root default
-3         0.02939      host serverc0    hdd  0.00980          osd.0         up   1.00000  1.000001    hdd  0.00980          osd.1         up   1.00000  1.000002    hdd  0.00980          osd.2         up   1.00000  1.00000
-5         0.02939      host serverd3    hdd  0.00980          osd.3         up   1.00000  1.000005    hdd  0.00980          osd.5         up   1.00000  1.000007    hdd  0.00980          osd.7         up   1.00000  1.00000
-7         0.02939      host servere4    hdd  0.00980          osd.4         up   1.00000  1.000006    hdd  0.00980          osd.6         up   1.00000  1.000008    hdd  0.00980          osd.8         up   1.00000  1.00000
-9         0.02939      host serverg9    hdd  0.00980          osd.9         up   1.00000  1.00000      //已激活
10    hdd  0.00980          osd.10        up   1.00000  1.00000      //已激活
11    hdd  0.00980          osd.11        up   1.00000  1.00000      //已激活

5)移除serverg主机上的MON和所有OSD,然后从集群中删除serverg主机

//移除serverg主机上的MON
[ceph: root@clienta /]# ceph orch apply mon \
--placement="clienta.lab.example.com \
serverc.lab.example.com \
serverd.lab.example.com \
servere.lab.example.com"
Scheduled mon update...[ceph: root@clienta /]# ceph mon stat
e6: 4 mons at {clienta=[v2:172.25.250.10:3300/0,v1:172.25.250.10:6789/0],serverc.lab.example.com=[v2:172.25.250.12:3300/0,v1:172.25.250.12:6789/0],serverd=[v2:172.25.250.13:3300/0,v1:172.25.250.13:6789/0],servere=[v2:172.25.250.14:3300/0,v1:172.25.250.14:6789/0]}, election epoch 50, leader 0 serverc.lab.example.com, quorum 0,1,2,3 serverc.lab.example.com,clienta,serverd,servere
//移除serverg主机上的所有OSD
[ceph: root@clienta /]# ceph orch ps serverg.lab.example.com
NAME                   HOST                     STATUS        REFRESHED  AGE  PORTS   VERSION           IMAGE ID      CONTAINER ID
crash.serverg          serverg.lab.example.com  running (8m)  70s ago    8m   -       16.2.0-117.el8cp  2142b60d7974  1e940de07157
node-exporter.serverg  serverg.lab.example.com  running (8m)  70s ago    8m   *:9100  0.18.1            68b1be7484d4  3c60cc42cefb
osd.10                 serverg.lab.example.com  running (8m)  70s ago    8m   -       16.2.0-117.el8cp  2142b60d7974  177fd4d42e77
osd.11                 serverg.lab.example.com  running (8m)  70s ago    8m   -       16.2.0-117.el8cp  2142b60d7974  6b043a470692
osd.9                  serverg.lab.example.com  running (8m)  70s ago    8m   -       16.2.0-117.el8cp  2142b60d7974  9d41d9df9e75[ceph: root@clienta /]# ceph osd stop 9 10 11
stop osd.9. stop osd.10. stop osd.11.[ceph: root@clienta /]# ceph osd out 9 10 11
marked out osd.9. marked out osd.10. marked out osd.11.

因为是删除设备,不是替换设备,直接将OSD从CRUSH地图中清除

[ceph: root@clienta /]# ceph osd crush remove osd.9
removed item id 9 name 'osd.9' from crush map[ceph: root@clienta /]# ceph osd crush remove osd.10
removed item id 10 name 'osd.10' from crush map[ceph: root@clienta /]# ceph osd crush remove osd.11
removed item id 11 name 'osd.11' from crush map
[ceph: root@clienta /]# ceph osd rm 9 10 11
removed osd.9, osd.10, osd.11
[ceph: root@clienta /]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
... ...
-7         0.02939      host servere4    hdd  0.00980          osd.4         up   1.00000  1.000006    hdd  0.00980          osd.6         up   1.00000  1.000008    hdd  0.00980          osd.8         up   1.00000  1.00000
-9               0      host serverg[ceph: root@clienta /]# ceph orch host rm serverg.lab.example.com
Removed host 'serverg.lab.example.com'
[ceph: root@clienta /]# ceph orch host ls
HOST                     ADDR           LABELS  STATUS
clienta.lab.example.com  172.25.250.10  _admin
serverc.lab.example.com  172.25.250.12
serverd.lab.example.com  172.25.250.13
servere.lab.example.com  172.25.250.14

3、维护模式

将servere主机设置为维护状态

[ceph: root@clienta /]# ceph orch host maintenance enter servere.lab.example.com
[ceph: root@clienta /]# ceph orch host ls
HOST                     ADDR           LABELS  STATUS
clienta.lab.example.com  172.25.250.10  _admin
serverc.lab.example.com  172.25.250.12
serverd.lab.example.com  172.25.250.13
servere.lab.example.com  172.25.250.14          Maintenance

重启服务器,等待重启的过程

[ceph: root@clienta /]# ssh root@servere.lab.example.com
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@servere.lab.example.com's password:<redhat>
[root@servere ~]# reboot

退出维护状态

[ceph: root@clienta /]# ceph orch host maintenance exit servere.lab.example.com
[ceph: root@clienta /]# ceph orch host ls
HOST                     ADDR           LABELS  STATUS
clienta.lab.example.com  172.25.250.10  _admin
serverc.lab.example.com  172.25.250.12
serverd.lab.example.com  172.25.250.13
servere.lab.example.com  172.25.250.14[ceph: root@clienta /]# exit
exit
[root@clienta ~]# exit
logout

小结:

本篇为 【RHCA认证 - CL260 | Day11:管理存储集群】的学习笔记,希望这篇笔记可以让您初步了解如何执行集群管理和监控、执行集群维护操作、模拟OSD损坏及修复过程,不妨跟着我的笔记步伐亲自实践一下吧!


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关环境、视频,可评论666并私信小安,请放下你的羞涩,花点时间直到你真正的理解。

http://www.dtcms.com/a/418367.html

相关文章:

  • 多线程环境下处理Flask上下文问题的文档
  • 第四部分:VTK常用类详解(第95章 vtkLegendBoxActor图例框演员类)
  • 网站模板_网站模板源码_免费企业模板源码—免费网站模板源码下载
  • 伽利略 | 近代科学的奠定 / 函数观念的演变
  • 四川网站建设益友微信公众号运营规则
  • 专业的短视频发布矩阵哪家靠谱
  • 线性代数(标量与向量+矩阵与张量+矩阵求导)
  • 济南免费网站建站模板免费网站建设软件大全
  • 【OpenHarmony】用户文件服务模块架构
  • 网站建设早会说什么建设一个网站的需求分析
  • [C++项目组件]cpp-httplib与 websocketpp的简单介绍和使用
  • 奈奎斯特采样定理
  • 做购物网站需要什么服务器网站设计 手写
  • uniapp 使用towxml
  • Uniapp 开发中遭遇「可选链赋值」语法陷阱:一次编译错误排查实录
  • 鸿蒙 H5 环境下的 UniApp 跨域与存储兼容性问题排查
  • 旧vue3项目集成electron
  • Nature Electronics:卡内基梅隆大学开放用于多模态皮肤反馈的皮肤贴附式触觉接口
  • uniapp div区域长按下载到手机相册为照片
  • Electron 安全实践:渲染进程如何安全使用主进程的三方库能力
  • uniapp集成原生安卓开发的插件
  • 做网站建设需要做哪些工作室Wordpress 转发后查看
  • Kafka面试精讲 Day 24:Spring Kafka开发实战
  • 网站模板 站长之家网站开发需要准备什么
  • bat自动保存论文到制定目录
  • 智能化生产+技术壁垒构建食品容器领军者新天力的上市答卷
  • Qt自定义圆环比例控件
  • 第三方软件测试机构:Appium如何使用Selenium的客户端库?
  • Scikit-learn Python机器学习 - 聚类分析算法 - Agglomerative Clustering(凝聚层次聚类)
  • 便宜的自制 30 MHz - 6 GHz 矢量网络分析仪