De rien au centre de données avec VXLAN / EVPN ou comment cuisiner Cumulus Linux. Partie 1

Au cours des six derniers mois, nous avons réussi à travailler sur un projet important et intéressant, qui comprenait tout: de l'installation de l'équipement à la création d'un seul domaine VXLAN / EVPN dans 4 centres de données. Car J'avais beaucoup d'expérience et beaucoup de bosses dans le processus, j'ai décidé qu'écrire quelques articles sur ce sujet serait la meilleure solution. J'ai décidé de rendre la première partie plus générale et introductive. La conception cible de l'usine sera révélée dans la section suivante.







Présentation de Cumulus Linux. Installation matérielle et configuration initiale



Voici une introduction au début des travaux:



  1. Équipement acheté
  2. Racks loués
  3. Lignes vers les anciens centres de données posées


Le premier matériel à livrer était 4 x Mellanox SN2410 avec Cumulus Linux pré-installé. Au début, nous ne comprenions toujours pas à quoi tout ressemblerait (cela ne se développera qu'au stade de l'implémentation VXLAN / EVPN), par conséquent, nous avons décidé de les élever comme de simples commutateurs L3 avec CLAG (Analogue of MLAG from Cumulus). Auparavant, ni moi ni mes collègues n'avions beaucoup d'expérience avec Cumulus, donc tout était dans une certaine mesure nouveau, puis à peu près cela.



Pas de licence - pas de ports



Par défaut, lorsque vous allumez l'appareil, seuls 2 ports vous sont disponibles: console et eth0 (également appelé port de gestion). Pour débloquer les ports 25G / 100G, vous devez ajouter une licence. Et il devient immédiatement clair que Linux au nom du logiciel n'est pas pour rien, puisque après l'installation de la licence, vous devez redémarrer le démon switchd via «systemctl restart switchd.service» (en fait, l'absence de licence empêche simplement ce démon de démarrer).



La prochaine chose qui vous rappellera immédiatement qu'il s'agit toujours de Linux, sera la mise à jour de l'appareil en utilisant la mise à niveau apt-get, comme dans un Ubuntu ordinaire, mais il n'est pas toujours possible de mettre à jour de cette façon. Lorsque vous passez d'une version à une autre, par exemple de la version 3.1.1 à la version 4.1.1, vous devez installer une nouvelle image, ce qui implique de réinitialiser les configurations par défaut. Mais cela enregistre que DHCP est activé sur l'interface de gestion dans la configuration par défaut, ce qui vous permet de reprendre le contrôle.



Installation de la licence
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




Système de validation



En tant que personne qui a beaucoup travaillé avec Juniper, pour moi des choses comme les rollbacks, la validation de validation, etc. n'étaient pas nouveaux, mais ont réussi à marcher sur quelques râteaux.



La première chose que j'ai rencontrée était la numérotation de retour arrière pour cumulus, en raison de l'habitude de restaurer 1 == dernière configuration de travail. Je pilote cette commande avec une grande confiance pour annuler les dernières modifications. Mais quelle a été ma surprise lorsque le matériel a tout simplement disparu sous contrôle, et pendant un certain temps, je n'ai pas compris ce qui s'était passé. Puis, après avoir lu la documentation de cumulus, il est devenu clair ce qui s'était passé: en exécutant la commande «net rollback 1» au lieu de revenir à la dernière configuration, je suis revenu à la configuration du PREMIER appareil. (Et encore une fois, DHCP a enregistré du fiasco dans la configuration par défaut)



commettre l'histoire
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:~$




La deuxième chose à laquelle j'ai dû faire face était l'algorithme de confirmation de validation: contrairement à l'habituel «commit confirm 10», où dans les 10 minutes vous devez à nouveau écrire «commit», Cumulus avait sa propre vision de cette fonctionnalité. Votre «confirmation de validation» consiste simplement à appuyer sur Entrée après avoir entré une commande, ce qui peut vous jouer une blague cruelle si la connectivité n'est pas perdue immédiatement après la validation.



net commit confirmer 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.




Première topologie



L'étape suivante consistait à élaborer la logique des commutateurs entre eux, à ce stade, le matériel était seulement installé et testé, il n'était pas encore question de schémas cibles. Mais l'une des conditions était que les serveurs connectés à différentes paires MLAG doivent être dans le même domaine L2. Je ne voulais pas faire de l'une des paires une simple L2, et il a donc été décidé d'augmenter la connectivité L3 via SVI, OSPF a été choisi pour le routage, car il était déjà utilisé dans les centres de données plus anciens, ce qui facilitait la connexion de l'infrastructure à l'étape suivante.







Ce diagramme montre le diagramme physique + la division des appareils en paires, tous les liens du diagramme fonctionnent en mode Trunk.







Comme mentionné, toute la connectivité L3 se fait via SVI, par conséquent, seuls 2 appareils sur 4 ont une adresse IP dans chaque Vlan, ce qui vous permet de créer une sorte de bundle L3 p2p.



Commandes de base pour les personnes intéressées



Bond (Port-canal) + 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




Mode de port de coffre / d'accès
# 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 + statique
#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



Conclusion



J'espère que quelqu'un trouvera cet article intéressant. J'aimerais voir des commentaires: ce qu'il faut ajouter et ce qui est complètement inutile. Dans le prochain article, nous passerons déjà au plus intéressant - à la conception du réseau cible et à la configuration VXLAN / EVPN. Et à l'avenir, un article sur l'automatisation VXLAN / EVPN à l'aide de Python est possible.



All Articles