三台服务器之间的点对点网络

三台服务器之间的点对点网络

我有三台服务器,每台都有两个网络端口。我想使用点对点连接来连接这些服务器,而不使用交换机。

以下是物理连接的示意图:

   +---------+
   |  Node A |
   |    |eth0}-----+
   |         |     | +---------+
   |    |eth1}-+   | |  Node C |
   +---------+ |   +-{eth1|    |
               |     |         |
               |   +-{eth0|    |
               |   | +---------+
   +---------+ |   |
   |  Node B | |   |
   |    |eth0}-+   |
   |         |     |
   |    |eth1}-----+
   +---------+

我希望服务器能够互相通信。我的意思是:

  • 服务器应该是同一 IP 网络的一部分,例如 10.10.10.0/24。
  • 每个服务器都应有一个 IP 地址,例如节点 A 的 IP 地址为 10.10.10.1,节点 B 的 IP 地址为 10.10.10.2,节点 C 的 IP 地址为 10.10.10.3。
  • IP 数据包应根据其目的地采用不同的路由。例如,在节点 A 上,目的地为 10.10.10.2(节点 B)的数据包应通过 路由,eth1而目的地为 10.10.10.3(节点 C)的数据包应通过 路由eth0
  • (编辑:以下内容并非严格要求,但如果有就更好了。)广播应通过两个物理端口路由。发往所有其他地址的数据包都将被丢弃。

是否可以创建一个实现此目的的网络配置?

我的一个想法是,我可以在每个节点上创建一个虚拟以太网接口,然后添加一些路由规则。但我不完全确定这是否是正确的方法。我也不确定如何实现广播的正确路由。

另一个想法是,我可以在每台服务器上创建一个网桥(由两个端口组成),并配置生成树以确保只有一个网桥处于活动状态。

但我猜想桥梁是没有必要的,因为所有节点都可以直接到达。

欢迎任何想法和建议!

编辑: 一些背景信息:(这些信息对于解决问题不是必需的,但我想描述问题的背景并说明为什么这个问题与这个论坛相关。)

我在这里尝试实现的是设置一个由三个节点组成的 Ceph 集群。每个节点都配备了一个 Intel E810-CQDA2 NIC 和两个 100GBASE-SR4 收发器。我使用 OM4 光纤进行互连。这是一个商业设置,硬件成本超过 30k(不包括 NVMe SSD)。

所有这些的目的是创建一个 Ceph 测试系统,看看 Ceph 是否能成为我们未来可以使用的相关技术。目前,我不想投资 100G 交换机,因为这种投资的成本很高(从我目前所见,不可能以低于 10,000 美元的价格购买优质的 100G 交换机,而且基本上需要两个交换机才能避免单点故障)。如果我们在未来某个时候将 Ceph 投入生产,我们已经拥有了适当的数据中心和交换机基础设施。但截至目前,这只是一个测试环境,我想将其与生产严格分开。

答案1

是的。bond在每个主机上创建绑定两个物理网卡的接口,并使用绑定模式 3 broadcast。每台服务器将把所有通信传输到两个对应服务器。将它们连接成一个“环”(或“三角形”)。然后只需将单个网络块中的地址分配给所有服务器即可。

ip link add name bond0 type bond mode broadcast
ip link set eth0 master bond0
ip link set eth1 master bond0
ip link set eth0 up
ip link set eth1 up
ip link set bond0 up
ip addr add 10.0.0.1/24 dev bond0

在所有服务器上重复此操作,每台服务器使用来自同一子网的不同 IP 地址。瞧!

例如:大约 10 年前,我们使用这种技术连接三个 Proxmox VE 节点,以在它们之间运行超过 10 GB 的 CEPH 网络。10gpbs 交换机非常昂贵,但我们有 2 端口 10gbps 卡。

相关内容