Proxmox Ceph - 別のネットワークでタイムアウトが発生しました

Proxmox Ceph - 別のネットワークでタイムアウトが発生しました

私は 4 つのノードに Proxmox で完全に新しい OS をインストールしました。各ノードには 2 つの NVMe と 1 つの HD、1 つのパブリック NIC、1 つのプライベート NIC があります。パブリック ネットワークでは、PVE クラスター通信用に実行されている追加の Wireguard インターフェイスがあります。プライベート インターフェイスは、今後の分散ストレージにのみ使用する必要があります。

# 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

それはうまくいきます。

2 番目に、同じことを試しました (オプションを設定する必要があるかどうかはわかりません。-networkありとなしで試しました)。これも機能します。

しかし、pveceph createmon はどのノードでも失敗します:

# pveceph createmon
got timeout

どのノードでもポート 10.255.255.1:6789 に到達できます。何を試しても、どのノードでも node1 で「タイムアウトしました」というメッセージが表示されます。また、ファイアウォールを無効にしても効果はありません。

オプションを削除すると-network、すべてのコマンドを実行できます。2 番目のインターフェイス経由では通信できないようです。ただし、インターフェイスは正常です。

ネットワークを に設定し10.3.0.0/24、クラスターネットワークを に設定10.255.255.0/24しても動作しますが、すべての ceph 通信を 経由で実行したいです10.255.255.0/24。何が問題なのでしょうか?

答え1

参考までに、公式ドキュメントでは、ジャンボ フレームが重要なパフォーマンスの向上をもたらすと記載されています。

https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/4/html/configuration_guide/ceph-network-configuration#mtu-value_conf の検証と構成

https://ceph.io/en/news/blog/2015/ceph-loves-jumbo-frames/

私の場合、セットアップした 6 つのノード (ストレージ 3 つ、コンピューティング 3 つ) で MTU を変更した後、読み取り/書き込みパフォーマンスが約 1400% 向上しました。

いいえ、これはタイプミスではありません。Linux ddVM でのテストでは読み取り/書き込み速度が 110 MB/秒でしたが、その後は 1.5~1.6 GB/秒に向上しました (1 Gbps パブリック ネットワーク、10 Gbps プライベート ネットワーク、SATA SSD 上の OSD)。

注意: すべてのネットワーク インターフェイス (パブリックとプライベート) の MTU を変更することは非常に重要であるようです。私たちの場合、プライベート NIC のみで MTU を変更したところ、システム全体がおかしくなりました。

Redhat のドキュメントより:

重要

Red Hat Ceph Storage では、パブリック ネットワークとクラスター ネットワークの両方において、通信パス内のすべてのネットワーク デバイス全体でエンドツーエンドで同じ MTU 値が必要です。

これが誰かの役に立つことを願います!乾杯

答え2

問題は、MTU 9000 が問題であることです。プライベート ネットワーク経由で完全な Proxmox クラスターを実行しても、エラーが発生します。

ip link set enp3s0 mtu 1500

つまり、Ceph にはジャンボ フレームに関する問題があります。

関連情報