在本章中,我们将介绍以下食谱:
- Initial troubleshooting and logging
- Troubleshooting network issues
- Troubleshooting monitors
- Troubleshooting OSDs
- Troubleshooting placement groups
在本章中,我们将介绍以下食谱:
本书前面的秘籍已经教你如何部署和管理 Ceph 集群,以及配置不同的客户端来访问 Ceph 对象存储,但是如果你的集群出现错误怎么办?随着时间的流逝,支持 Ceph 集群的硬件会出现故障,如果您了解错误的含义以及要查找的内容以缩小实际问题的范围,则对 Ceph 进行故障排除并不一定是一个可怕的考验。在本章中,我们将介绍一些技巧,这些技巧将使您能够熟练地解决 Ceph 集群上的各种问题,并向您展示在正确理解一些常见错误消息的情况下,Ceph 故障排除实际上并没有那么困难!
当您开始对 Ceph 问题进行故障排除时,您首先需要确定是哪个 Ceph 组件导致了问题。有时可以在 ceph health detail 输出或 status 命令中清楚地标记此组件,但其他时候,需要进一步调查才能发现实际问题。验证高级集群的状态还可以帮助您确定是单个故障还是整个节点故障。验证配置中的某些内容可能归因于问题也是明智的,例如不推荐的配置或配置错误的环境中的硬件。本章中的各种秘籍将有助于缩小这些问题的范围,但让我们首先查看集群的高级概述以及这些命令可以告诉我们什么。
让我们回顾一些初始集群状态命令,以帮助确定我们需要在哪里进行故障排除:
ceph status(或 ceph -s)提供比 ceph health detail 更多的信息,但如果集群中存在问题,则不会那么详细。让我们再次停止 ceph-node2 上的 OSD 进程之一,然后重新运行 ceph status 以查看它报告的内容:
第 7 章,监控 Ceph 集群 ,更详细地介绍了这些命令。这些命令中的任何一个都可以帮助您缩小组件范围,以便开始在组件级别或节点级别对故障进行故障排除。
Ceph 存储高度依赖于底层网络配置并具有专用且可靠的网络连接。网络是集群中最重要的部分之一,Ceph 节点使用它来相互通信。网络基础设施的问题可能会导致 Ceph 集群出现许多问题,从 OSD 抖动(OSD 上下波动)到监控时钟偏差错误。此外,网络错误(例如丢包或高延迟)可能会导致整个集群出现稳定性和性能问题。
如果怀疑存在集群通信问题,可以进行以下一些初步检查:
端口 6789 和端口 6800 到端口 7100 在接口 enp0s3 和 enp0s8 上打开,因为此节点托管监视器和 OSD。
Ceph 监视器问题通常可以在 ceph status 或 ceph health detail 命令输出中看到,它们会识别哪个监视器正在报告问题。 Ceph 监控日志位于 /var/log/ceph/ceph-mon.
让我们来看看一些最常见的监视器错误以及如何解决这些问题的一些步骤:
与 Ceph 监视器问题一样,Ceph OSD 问题通常首先出现在 ceph health detail 或 status 命令中。这通常会给你一些关于从哪里开始寻找实际问题的想法。例如,是单个 OSD 宕机还是对应于特定主机的一块 OSD 宕机。 Ceph OSD 日志位于托管特定 OSD 进程的节点中的 /var/log/ceph/ceph-osd.<id>.log 中,是解决 OSD 问题时开始查看的第一个区域.接下来的教程将向您展示如何解决您可能在 Ceph 集群中遇到的一些更常见的 Ceph OSD 问题。
在开始对 OSD 进行故障排除之前,最好先验证 Ceph 节点之间的集群和公共网络,因为 OSD 关闭问题通常是由对等 OSD 和 MON 之间的通信问题引起的:
检查当前的 PID 计数集:
在 /etc/sysctl.conf 中,set: kernel.pid_max = 4194303
设置更改无需重启:
验证是否进行了更改:
与 Ceph 守护进程问题一样,归置组问题通常首先出现在 ceph health detail 或 status 命令中。它们通常伴随着处于关闭状态的 OSD 或显示器上的时钟偏差问题。在继续进行故障排除之前,归置组会验证您的所有 Ceph 监视器是否up且处于仲裁状态,并且所有 Ceph OSD 都处于 up/in 状态。接下来的教程将向您展示如何解决您可能在 Ceph 集群中遇到的一些更常见的 Ceph 归置组问题。
在开始对 PG 状态进行故障排除之前,请确认 Ceph 监视器已全部启动并处于仲裁状态,并且任何可用的 OSD 也处于启动/启动状态:
既然您对 Ceph 中的不同组件进行故障排除有了一个大致的了解,那么您就可以很好地处理 Ceph 集群中的故障而不会惊慌失措。但是,如果您的 Ceph 集群发现自己处于无法修复的状态,并且无论您做什么,都无法恢复集群,该怎么办? Ceph 社区是一个庞大且知识渊博的社区,总是愿意帮助 Ceph 同胞。有关 Ceph 社区的更多信息,请参阅 http://ceph.com/community/ 并加入 Ceph社区 IRC 频道和邮件列表:http://ceph.com/irc/