我们刚刚安装了一个由 6 台 Proxmox 服务器组成的集群,使用 3 个节点作为 Ceph 存储,3 个节点作为计算节点。
我们的集群的性能和稳定性遇到了奇怪且严重的问题。
当直接通过 SSH、RDP 或 VNC 控制台访问时,虚拟机和 Proxmox Web 访问往往会无缘无故地挂起,时间从几秒钟到几分钟不等。甚至 Proxmox 主机似乎也遥不可及,正如此监控捕获中所示。这还会导致 Proxmox 集群问题,一些服务器不同步。
例如,在测试主机节点之间的 ping 时,它可以完美地进行几次 ping,挂起,继续(没有任何 pingback 时间增加 - 仍然 <1ms),再次挂起等。
我们最初遇到了一些性能问题,但这些问题已通过将 NIC 的 MTU 调整为 9000(+1300% 读/写改进)得到解决。现在我们需要让这一切稳定下来,因为目前它还不能投入生产。
硬件配置
我们的网络架构与 Ceph 官方文档中描述的类似,有一个 1 Gbps 的公共网络和一个 10 Gbps 的集群网络。它们连接到 6 台服务器中的每台的两个物理网卡。
存储服务器节点:
- CPU:Xeon E-2136(6 核,12 线程),3.3 GHz,Turbo 4.5 GHz
- 内存:16 GB
- 贮存:
- 2x RAID 1 256 GB NVMe,LVM
- 系统根逻辑卷:15 GB(~55% 可用)
- 交换:7.4 GB
- OSD2 的 WAL:80 GB
- 4 TB SATA 固态硬盘 (OSD1)
- 12 TB SATA 硬盘 (OSD2)
- 2x RAID 1 256 GB NVMe,LVM
- 网络接口控制器:
- 英特尔公司 I350 千兆:连接到公共 1 Gbps 网络
- Intel 公司 82599 10 Gigabit:连接到 10 Gbps 集群(内部)网络
计算服务器节点:
- CPU:Xeon E-2136(6 核,12 线程),3.3 GHz,Turbo 4.5 GHz
- 内存:64 GB
- 贮存:
- 2x RAID 1 256 GB SATA SSD
- 系统根逻辑卷:15 GB(~65% 可用)
- 2x RAID 1 256 GB SATA SSD
软件:(在所有 6 个节点上)
- Proxmox 7.0-13,安装在 Debian 11 之上
- Ceph v16.2.6,使用 Proxmox GUI 安装
- 每个存储节点上的 Ceph Monitor
- 存储节点 1 + 3 上的 Ceph 管理器
Ceph 配置
集群的ceph.conf:
[global]
auth_client_required = cephx
auth_cluster_required = cephx
auth_service_required = cephx
cluster_network = 192.168.0.100/30
fsid = 97637047-5283-4ae7-96f2-7009a4cfbcb1
mon_allow_pool_delete = true
mon_host = 1.2.3.100 1.2.3.101 1.2.3.102
ms_bind_ipv4 = true
ms_bind_ipv6 = false
osd_pool_default_min_size = 2
osd_pool_default_size = 3
public_network = 1.2.3.100/30
[client]
keyring = /etc/pve/priv/$cluster.$name.keyring
[mds]
keyring = /var/lib/ceph/mds/ceph-$id/keyring
[mds.asrv-pxdn-402]
host = asrv-pxdn-402
mds standby for name = pve
[mds.asrv-pxdn-403]
host = asrv-pxdn-403
mds_standby_for_name = pve
[mon.asrv-pxdn-401]
public_addr = 1.2.3.100
[mon.asrv-pxdn-402]
public_addr = 1.2.3.101
[mon.asrv-pxdn-403]
public_addr = 1.2.3.102
问题:
- 我们的架构正确吗?
- 是否应通过公共网络访问 Ceph 监视器和管理器?(这是 Proxmox 的默认配置给我们的)
- 有人知道这些干扰/不稳定性从何而来以及如何解决这些问题吗?
[编辑]
- 当您有 3 个存储节点时,使用默认池大小 3 是否正确?我最初打算使用 2,但找不到类似的例子,所以决定使用默认配置。
发现的问题
- 我们注意到 arping 不知何故从两个 MAC 地址(公共 NIC 和私有 NIC)返回 ping,这没有任何意义,因为它们是单独的 NIC,由单独的交换机连接。这可能是网络问题的一部分。
- 在其中一个虚拟机上执行备份任务(备份到 Proxmox 备份服务器,物理上远程)时,它似乎以某种方式影响了集群。虚拟机卡在备份/锁定模式,即使备份似乎已正确完成(在备份服务器上可见且可访问)。
- 自第一次备份问题以来,Ceph 一直在尝试重建自身,但未能成功。它处于降级状态,表明它缺少 MDS 守护进程。但是,我仔细检查了一下,存储节点 2 和 3 上有正常工作的 MDS 守护进程。它一直在重建自身,直到卡在这种状态。
状态如下:
root@storage-node-2:~# ceph -s 簇: 编号:97637047-5283-4ae7-96f2-7009a4cfbcb1 健康:HEALTH_WARN 可用的备用 MDS 守护进程不足 背部 OSD 心跳缓慢(最长 10055.902 毫秒) 前端 OSD 心跳缓慢(最长 10360.184 毫秒) 数据冗余度降低:141397/1524759 个对象已降级(9.273%),156 个 pg 已降级,288 个 pg 大小不足 服务: mon:3 个守护进程,法定人数为 asrv-pxdn-402、asrv-pxdn-401、asrv-pxdn-403(年龄为 4 个月) mgr:asrv-pxdn-401(活跃,自 16 分钟以来) mds: 1/1 守护进程启动 osd:6 osds:4 个启动 (自 22 小时以来),4 个进入 (自 21 小时以来) 数据: 卷数:1/1 健康 池:5 个池,480 个 pgs 对象:691.68k 个对象,2.6 TiB 使用情况:已使用 5.2 TiB,可用 24 TiB / 29 TiB pgs:141397/1524759 个对象已降级 (9.273%) 192 活性+清洁 156 活跃+尺寸不足+退化 132 活跃+小尺寸
[编辑2]
root@storage-node-2:~# ceph osd 树 ID 类别 权重 类型 名称 状态 重新加权 PRI-AFF -1 43.65834 根默认值 -3 14.55278 主机 asrv-pxdn-401 0 hdd 10.91409 osd.0 启动 1.00000 1.00000 3 SSD 3.63869 OSD.3 上 1.00000 1.00000 -5 14.55278 主机 asrv-pxdn-402 1 硬盘 10.91409 osd.1 启动 1.00000 1.00000 4 SSD 3.63869 OSD.4 上 1.00000 1.00000 -7 14.55278 主机 asrv-pxdn-403 2 hdd 10.91409 osd.2 关闭 0 1.00000 5 ssd 3.63869 osd.5 停机 0 1.00000
答案1
问题已得到解决。实际上有两个独立的问题:
- 上游交换机存在配置问题,导致网络陷入混乱(由我们的数据中心合作伙伴管理)。
- 我们必须将 MTU 设置为 9000都是私人的和公共网络否则,我们的网络通信将出现严重的中断。
希望这对其他人有帮助。
干杯,D