由于本人能力有限,文章及部分观点仅供参考。如有不正确或可改进之处,欢迎读者批评指正。
前言
在去年的这个时候,我在家中部署了三节点 Proxmox VE + Ceph 超融合集群(见 此文)。
今年,我计划新加入一台服务器,与原集群构成四节点集群。新节点用以提供 Ceph 之外的独立存储用于关键备份的冗余存储,以及进一步扩展集群算力,并不参与 Ceph 集群的扩展。但无奈预算有限,最终重新启用了已停用一年了的一台 R730(即去年文中的 Server 4)。
配置方面,集群中原有的三台 R730XD 配置完全相同,但这台 R730 与它们并不相同。在网络接口方面,三台 R730XD 均带有两个 1Gbps 电缆口与四个 10Gbps 光缆口,而这台 R730 带有四个 1Gbps 电缆口和两个 10Gbps 光缆口。
一年前我进行网络配置时,在服务器侧和交换机侧均通过基于端口的隔离完成对 VLAN(虚拟局域网)的划分。这一方法配置简单且直观,但是我的 R730 没有足够的光缆端口,在这一配置下无法优美地连接到每一个 VLAN。
为此我思考了新的可能性,我想到了在 PVE 页面上配置网络时出现的 VLAN ID 选项。在进行了一定的研究后,我意识到基于 IEEE 802.1Q 标准,通过配置 VLAN ID 使得多 VLAN 共用同一链路的配置是更为合适的解决方案。
硬件与网络
服务器
- Server 1~3
- Dell PowerEdge R730xd Server
- Proxmox VE 8.4.1 x86_64
- Intel Xeon E5-2680 v4 (56) @ 3.300GHz
- 128GB (8x16GB) DDR4 2400MHz ECC RDIMM
- 1 GbE RJ45 Port x 2 (
eno3
,eno4
) - 10 GbE SFP+ Port x4 (
eno1
,eno2
,enp130s0f0
,enp130s0f1
)
- Server 4
- Dell PowerEdge R730 Server
- Proxmox VE 8.4.1 x86_64
- Intel Xeon E5-2680 v4 (56) @ 3.300GHz
- 96GB (6x16GB) DDR4 2133MHz ECC RDIMM
- 1 GbE RJ45 Port x4 (
eno1
,eno2
,eno3
,eno4
) - 10 GbE SFP+ Port x2 (
enp130s0f0
,enp130s0f1
)
交换机
- H3C S6800-54QF-H3
- 10 GbE SFP+ Port x48 (
XGE1/0/1
~XGE1/0/48
) - 40 GbE QSFP+ Port x4 (
FGE1/0/49
~FGE1/0/54
)
- 10 GbE SFP+ Port x48 (
- H3C S5130S-52S-HI
- 1 GbE RJ45 Port x48 (
GE1/0/1
~GE1/0/48
) - 10 GbE SFP+ Port x4 (
XGE1/0/51
~XGE1/0/54
)
- 1 GbE RJ45 Port x48 (
网络规划
10.1.0.0/16
:管理网络。10.2.0.0/16
:业务网络。10.3.0.0/16
:Ceph 公共网络。10.4.0.0/16
:Ceph 集群网络。192.168.1.0/24
:家庭网络。
其中管理网络与家庭网络配置于电缆交换机(S5130S-52S-HI)上,此次配置并不调整。此次配置的为业务网络、Ceph 公共网络与 Ceph 集群网络。
原理介绍
原方案配置 VLAN 为 Access 模式。该模式基于端口执行了 VLAN 隔离,管理简单直观,并常用于接入层交换机,但是灵活性较差,在调整端口时需要相应修改配置。同时,多个 VLAN 使用独立链路也会导致链路使用率不充分,对物理链路数量也提出了要求。
IEEE 802.1Q 标准引入了 VLAN 标签(VLAN ID)概念。该标准会在以太网帧里插入 4 字节的 VLAN Tag 字段,里面就包含 VLAN ID 等信息。通过配置 VLAN 为 Trunk 模式,即可使用该标准,实现在一条链路上的多 VLAN 共存。
该方案使得同一个物理端口可以承载多个 VLAN,非常适合需要聚合多个 VLAN 的链路汇聚,可以支持大规模网络中的 VLAN 透传和跨交换机隔离。配置复杂度略高,需要在链路两端正确配置 VLAN Trunk。
在此次配置中,我计划重新配置所有服务器和光缆交换机的相关配置,将每一台服务器连接到光缆交换机的链路各自全部聚合,使得在逻辑层面上每台服务器与交换机仅有一条链路。随后配置服务器和交换机的 VLAN Trunk 配置。
交换机配置
物理链接
每台服务器连接到光缆交换机的如下端口:
- Server 1:
XGE1/0/1
~XGE1/0/4
- Server 2:
XGE1/0/9
~XGE1/0/12
- Server 3:
XGE1/0/17
~XGE1/0/20
- Server 4:
XGE1/0/25
~XGE1/0/26
链路聚合
依次配置四个链路聚合组,链路聚合组 1(BAGG1
)的配置如下:
[switch1]interface Bridge-Aggregation1
[switch1-Bridge-Aggregation1]link-aggregation mode dynamic # 使用 LACP
[switch1-Bridge-Aggregation1]jumboframe enable 9216 # 巨帧启用,216
[switch1-Bridge-Aggregation1]interface range XGE1/0/1 to XGE1/0/4 # 选中链接端口
[switch1-if-range]port link-aggregation group 1 # 加入链路聚合组
虚拟局域网
这里为每一个网段给予 VLAN ID:
10.2.0.0/16
: 2010.3.0.0/16
: 3010.4.0.0/16
: 40
需注意 1 为默认 VLAN ID,不建议使用。
先在交换机全局配置 VLAN,以 VLAN 20 为例:
[switch1]vlan 20 # 创建 VLAN
[switch1-vlan20]name prod # 为 VLAN 命名
然后配置链路聚合口允许这些 VLAN 通过,以 BAGG1
为例:
[switch1]interface Bridge-Aggregation 1
[switch1-Bridge-Aggregation1]port link-type trunk # 设置 Trunk 模式
[switch1-Bridge-Aggregation1]port trunk permit vlan 20 30 40 # 允许这些 VLAN ID 通过
这样就完成了交换机端的配置。在退出前记得使用 save
保存交换机设置。
服务器配置
完成交换机端配置后,我们需要对四个节点依次配置服务器侧网络配置。这里我们通过 PVE 网页进行快速配置。
链路聚合
创建 Linux Bond,加入所有连接的端口,选择模式为 LACP,即可完成链路聚合配置。
我在去年的文章中使用了 layer2+3 的哈希策略,认为这种更兼容且对交换机压力更小的哈希方式。这次我配置了 layer3+4 的哈希策略,对于交换机压力略大,但是能够提供更好的散列效果。
虚拟局域网
创建 Linux VLAN,它能够在 Linux Bond 之上额外添加 VLAN 配置。在原始设备中选中刚才创建的 Linux Bond,并且标注需要的 VLAN 标签,即可完成配置。
网桥
创建 Linux Bridge,桥接到刚创建的 Linux VLAN 即可。不需要开启“VLAN 感知”,它用于对不同 VLAN 的流量进行分流。
以此便完成了所有虚拟机上的网络配置,最后附以 Server 1 的完整网络配置:
结语
至此,基于 IEEE 802.1Q 协议改进的虚拟局域网即配置完成。
参考
- H3C 官方文档
- Proxmox VE 中文文档
- ChatGPT
Comments | NOTHING