Présentation de Cumulus Linux. Installation matérielle et configuration initiale
Voici une introduction au début des travaux:
- Équipement acheté
- Racks loués
- 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
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:~$
# 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.
— /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
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
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
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.