使用VXLAN / EVPN从无到有的数据中心,或者如何烹饪Cumulus Linux。第1部分

在过去的六个月中,我们设法完成了一个大型有趣的项目,其中包括所有内容:从安装设备到在4个数据中心中创建单个VXLAN / EVPN域。因为 我在此过程中积累了很多经验,遇到了很多麻烦,因此我决定写一些关于该主题的文章将是最好的解决方案。我决定使第一部分更加笼统和入门。下一节将介绍工厂的目标设计。







引入Cumulus Linux。硬件安装和初始设置



开始工作的介绍如下:



  1. 购买设备
  2. 租的架子
  3. 铺设到旧数据中心的线路


需要交付的第一批硬件是预先安装了Cumulus Linux的4 x Mellanox SN2410。最初,人们对一切看起来还不了解(它只会在VXLAN / EVPN实施阶段发展),因此,我们决定使用CLAG(来自Cumulus的MLAG的模拟产品)将它们提升为简单的L3交换机。以前,我和我的同事都没有关于Cumulus的丰富经验,所以一切都在某种程度上是新的,然后就此。



没有许可证-没有端口



默认情况下,打开设备电源时,只有2个端口可用-控制台和eth0(也称为管理端口)。要取消阻止25G / 100G端口,您需要添加许可证。马上就可以清楚地看到,以软件名义的Linux并非一无是处,因为 安装许可证后,您需要通过“ systemctl restart switchd.service”重新启动switchd守护程序(实际上,缺少许可证只会阻止该守护程序启动)。



接下来的事情将立即让您记住这仍然是Linux,它将像常规Ubuntu一样使用apt-get upgrade更新设备,但并非总是可以这种方式进行更新。在版本之间进行切换时(例如,从3.1.1切换到4.1.1),您需要安装新映像,这需要将配置重置为默认值。但是它保存了在默认配置下在管理界面上启用了DHCP的功能,这使您可以返回控制。



许可证安装
cumulus@Switch1:~$ sudo cl-license -i

balagan@telecom.ru|123456789qwerty

^+d


cumulus@Switch1:~$ sudo systemctl restart switchd.service




P.S. eth0(mgmt) :

cumulus@Switch1:~$ net show configuration commands | grep eth

net add interface eth0 ip address dhcp

net add interface eth0 vrf mgmt




提交系统



作为与Juniper一起工作了很多的人,对我而言,诸如回滚,提交确认等工作。不是新手,但设法踩了几把耙子。



由于回滚1 ==最后一个工作配置的习惯,我遇到的第一件事是对积云进行回滚编号。我非常有信心地执行此命令以回滚最新更改。但是,当一块硬件刚刚失控时,我感到惊讶的是,有一段时间我不明白发生了什么。然后,从积云中读取扩展坞后,可以清楚地了解发生了什么:通过驱动命令“ net rollback 1”而不是回滚到最后一个配置,我回滚到了FIRST设备配置(再次,DHCP从默认情况下从惨败中保存了下来)



提交历史
cumulus@Switch1:mgmt:~$ net show commit history

# Date Description

— — — 2 2020-06-30 13:08:02 nclu «net commit» (user cumulus)

208 2020-10-17 00:42:11 nclu «net commit» (user cumulus)

210 2020-10-17 01:13:45 nclu «net commit» (user cumulus)

212 2020-10-17 01:16:35 nclu «net commit» (user cumulus)

214 2020-10-17 01:17:24 nclu «net commit» (user cumulus)

216 2020-10-17 01:24:44 nclu «net commit» (user cumulus)

218 2020-10-17 12:12:05 nclu «net commit» (user cumulus)


cumulus@Switch1:mgmt:~$




我必须面对的第二件事是提交确认算法:与通常的“提交确认10”不同,在10分钟之内您需要再次编写“提交”,Cumulus对这个功能有自己的看法。您的“提交确认”只是在输入命令后按Enter键,如果在提交后没有立即断开连接,这会给您造成残酷的笑话。



净提交确认10
cumulus@Switch1:mgmt:~$ net commit confirm 10

— /etc/network/interfaces 2020-10-17 12:12:08.603955710 +0300

+++ /run/nclu/ifupdown2/interfaces.tmp 2020-10-29 19:02:33.296628366 +0300

@@ -204,20 +204,21 @@



auto swp49

iface swp49

+ alias Test

link-autoneg on



net add/del commands since the last «net commit»

================================================



User Timestamp Command

— — — cumulus 2020-10-29 19:02:01.649905 net add interface swp49 alias Test



Press ENTER to confirm connectivity.




第一拓扑



下一阶段是弄清它们之间的切换逻辑,在此阶段仅安装和测试了硬件,还没有任何目标方案的讨论。但是条件之一是,连接到不同MLAG对的服务器必须位于同一L2域中。我不想将一对简单的L2做成一对,因此决定通过SVI提高L3连接性,因此选择OSPF进行路由,因为它已在较旧的数据中心中使用,这使下一步连接基础架构变得更加容易。







该图显示了物理图+将设备分成几对,图中的所有链接都在Trunk模式下工作。







如前所述,所有L3连接都是通过SVI完成的,因此,每4个VLAN中只有2个设备具有IP地址,这使您可以创建L3 p2p捆绑包。



感兴趣的人的基本命令



键合(端口通道)+ CLAG(MLAG)
# vrf mgmt best-practice

net add interface peerlink.4094 clag backup-ip ... vrf mgmt

# ( linklocal IP )

net add interface peerlink.4094 clag peer-ip linklocal

# 44:38:39:ff:00:00-44:38:39:ff:ff:ff

net add interface peerlink.4094 clag sys-mac .X.X.X.X

#C Bond#

net add bond bond-to-sc bond slaves swp1,swp2

# LACP

net add bond bond-to-sc bond mode 802.3ad

# VLAN Bond

net add bond bond-to-sc bridge vids 42-43

# ID

net add bond bond-to-sc clag id 12

P.S. /etc/network/interfaces







cumulus@Switch1:mgmt:~$ net show clag

The peer is alive

Our Priority, ID, and Role: 32768 1c:34:da:a5:6a:10 secondary

Peer Priority, ID, and Role: 100 b8:59:9f:70:0e:50 primary

Peer Interface and IP: peerlink.4094 fe80::ba59:9fff:fe70:e50 (linklocal)

VxLAN Anycast IP: 10.223.250.9

Backup IP: 10.1.254.91 vrf mgmt (active)

System MAC: 44:39:39:aa:40:97




中继/接入端口模式
# Vlan

net add vlan 21 ip address 100.64.232.9/30

# ID

net add vlan 21 vlan-id 21

# L2 Bridge

net add vlan 21 vlan-raw-device bridge

P.S. VLAN Bridge

#Trunk ( bridge vlan)

net add bridge bridge ports swp49

#Trunk ( VLAN)

net add interface swp51-52 bridge vids 510-511

#Access

net add interface swp1 bridge access 21

P.S. /etc/network/interfaces



OSPF +静态
#Static route mgmt

net add routing route 0.0.0.0/0 10.1.255.1 vrf mgmt

#OSPF Network

net add ospf network 0.0.0.0 area 0.0.0.0

#OSPF

net add interface lo ospf area 0.0.0.0

P.S. Cumulus Loopback

#OSPF

net add ospf redistribute connected

P.S. vtysh(c Cisco like ), .. Cumulus FRR



结论



我希望有人会觉得这篇文章有趣。我希望看到反馈:添加什么,什么是完全不必要的。在下一篇文章中,我们将继续进行最有趣的操作-目标网络的设计和VXLAN / EVPN配置。将来,可能还会有一篇有关使用Python进行VXLAN / EVPN自动化的文章。



All Articles