我在 4 个节点上安装了全新的 Proxmox 操作系统。每个节点都有 2 个 NVMe 和 1 个 HD,一个公用 NIC,一个专用 NIC。在公用网络上,还有一个额外的 wireguard 接口用于 PVE 集群通信。专用接口仅用于即将推出的分布式存储。
# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 6c:b3:11:07:f1:18 brd ff:ff:ff:ff:ff:ff
inet 10.255.255.2/24 brd 10.255.255.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::6eb3:11ff:fe07:f118/64 scope link
valid_lft forever preferred_lft forever
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b4:2e:... brd ff:ff:ff:ff:ff:ff
inet 168..../26 brd 168....127 scope global eno1
valid_lft forever preferred_lft forever
inet6 2a01:.../128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::b62e:99ff:fecc:f5d0/64 scope link
valid_lft forever preferred_lft forever
4: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether a2:fd:6a:c7:f0:be brd ff:ff:ff:ff:ff:ff
inet6 2a01:....::2/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::..:f0be/64 scope link
valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.3.0.10/32 scope global wg0
valid_lft forever preferred_lft forever
inet6 fd01:3::a/128 scope global
valid_lft forever preferred_lft forever
节点良好,PVE 集群按预期运行。
# pvecm status
Cluster information
-------------------
Name: ac-c01
Config Version: 4
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Dec 15 22:36:44 2020
Quorum provider: corosync_votequorum
Nodes: 4
Node ID: 0x00000002
Ring ID: 1.11
Quorate: Yes
Votequorum information
----------------------
Expected votes: 4
Highest expected: 4
Total votes: 4
Quorum: 3
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 10.3.0.4
0x00000002 1 10.3.0.10 (local)
0x00000003 1 10.3.0.13
0x00000004 1 10.3.0.16
PVE 防火墙在集群中处于活动状态,但有一条规则,即所有 PVE 节点都可以通过任何协议在任何接口上的任何端口上相互通信。这是真的 - 我可以在所有 IP 上的所有节点之间进行 ping、ssh 等操作。
然后我安装了 ceph。
pveceph install
在第一个节点上,我使用以下命令初始化 ceph
pveceph init -network 10.255.255.0/24
pveceph createmon
这样可行。
第二次 - 我尝试了相同的方法(我不确定是否需要设置选项-network
- 我尝试了有和没有)。那也有效。
但是 pveceph createmon 在任何节点上都会失败:
# pveceph createmon
got timeout
我还可以访问任意节点上的端口 10.255.255.1:6789。无论我如何尝试,除了节点 1 之外,我在任何节点上都会收到“超时”信息。此外,禁用防火墙也没有任何效果。
当我删除该-network
选项时,我可以运行所有命令。看起来它无法通过第二个接口进行通信。但是接口没问题。
当我将网络设置为10.3.0.0/24
并将集群网络设置为时10.255.255.0/24
,它也能正常工作,但我希望所有 ceph 通信都通过 运行10.255.255.0/24
。哪里出了问题?
答案1
仅供参考,官方文档提到巨型帧带来了重要的性能改进:
https://ceph.io/en/news/blog/2015/ceph-loves-jumbo-frames/
就我而言,在我们设置的 6 个节点(3 个存储节点、3 个计算节点)上更改 MTU 后,读/写性能提高了约 1400%。
不,这不是打字错误。我们在 Linux VM 上测试的读写速度从 110 MB/sdd
提高到了 1.5-1.6 GB/s(1 Gbps 公共网络,10 Gbps 私有网络,SATA SSD 上的 OSD)。
注意:更改所有网络接口(公网和私网)上的 MTU 似乎非常重要!在我们的例子中,仅在私网 NIC 上更改它会导致整个系统陷入混乱。
来自Redhat的文档:
重要的
Red Hat Ceph Storage 要求在通信路径中的所有网络设备中都使用相同的 MTU 值,无论是公共网络还是集群网络,都是端到端的。
希望这对大家有帮助!谢谢
答案2
问题是 - MTU 9000 有问题。即使我通过私有网络运行完整的 Proxmox 集群,也会出现错误。
ip link set enp3s0 mtu 1500
因此,Ceph 在巨型帧方面存在问题。