Einführung in Cumulus Linux. Hardwareinstallation und Ersteinrichtung
Die Einführung in den Beginn der Arbeit war wie folgt:
- Ausrüstung gekauft
- Gestelle gemietet
- Leitungen zu alten Rechenzentren verlegt
Die erste Hardware, die geliefert werden musste, war 4 x Mellanox SN2410 mit vorinstalliertem Cumulus Linux. Anfangs gab es noch kein Verständnis dafür, wie alles aussehen würde (es wird sich erst in der Phase der VXLAN / EVPN-Implementierung entwickeln), daher haben wir beschlossen, sie als einfache L3-Switches mit CLAG (Analog von MLAG von Cumulus) zu erhöhen. Bisher hatten weder ich noch meine Kollegen viel Erfahrung mit Cumulus, also war alles bis zu einem gewissen Grad neu, dann genau das.
Keine Lizenz - keine Ports
Wenn Sie das Gerät einschalten, stehen Ihnen standardmäßig nur zwei Ports zur Verfügung - Konsole und eth0 (auch als Management-Port bezeichnet). Um 25G / 100G-Ports zu entsperren, müssen Sie eine Lizenz hinzufügen. Und es wird sofort klar, dass Linux im Namen der Software nicht umsonst ist, da Nach der Installation der Lizenz müssen Sie den switchd-Daemon über "systemctl restart switchd.service" neu starten (das Fehlen einer Lizenz verhindert lediglich den Start dieses Daemons).
Das nächste, was Sie sofort daran erinnert, dass dies immer noch Linux ist, ist die Aktualisierung des Geräts mithilfe des apt-get-Upgrades, wie in regulärem Ubuntu, aber es ist nicht immer möglich, auf diese Weise zu aktualisieren. Wenn Sie beispielsweise zwischen den Versionen 3.1.1 und 4.1.1 wechseln, müssen Sie ein neues Image installieren, wodurch die Konfigurationen auf die Standardeinstellungen zurückgesetzt werden. Es wird jedoch gespeichert, dass DHCP in der Standardkonfiguration auf der Verwaltungsoberfläche aktiviert ist, sodass Sie die Steuerung zurückgeben können.
Lizenzinstallation
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
System festschreiben
Als eine Person, die viel mit Juniper gearbeitet hat, für mich Dinge wie Rollbacks, Commit Confirm, etc. waren nicht neu, schafften es aber auf ein paar Rechen zu treten.
Das erste, was mir begegnete, war die Rollback-Nummerierung von Cumulus aufgrund der Gewohnheit von Rollback 1 == der letzten Arbeitskonfiguration. Ich fahre diesen Befehl mit großer Zuversicht, um die neuesten Änderungen rückgängig zu machen. Aber was war meine Überraschung, als die Hardware einfach die Kontrolle verlor und ich einige Zeit nicht verstand, was passiert war. Nachdem ich das Dock von cumulus gelesen hatte, wurde klar, was passiert war: Indem ich den Befehl „net rollback 1“ ausführte, anstatt zur letzten Konfiguration zurückzukehren, kehrte ich zur ERSTEN Gerätekonfiguration zurück. (Und wieder wurde DHCP in der Standardkonfiguration vom Fiasko gespeichert.)
Geschichte begehen
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:~$
Das zweite, was ich zu bewältigen hatte, war der Commit-Bestätigungsalgorithmus: Im Gegensatz zum üblichen "Commit Confirm 10", bei dem Sie innerhalb von 10 Minuten erneut "Commit" schreiben müssen, hatte Cumulus eine eigene Vision dieser Funktion. Ihre "Commit-Bestätigung" drückt einfach die Eingabetaste, nachdem Sie einen Befehl eingegeben haben. Dies kann einen grausamen Witz auf Sie auslösen, wenn die Verbindung nicht sofort nach dem Commit unterbrochen wird.
Netto-Commit bestätigen 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.
Erste Topologie
Der nächste Schritt bestand darin, die Logik der Switches untereinander zu erarbeiten. Zu diesem Zeitpunkt wurde die Hardware nur installiert und getestet. Von Zielschemata war noch keine Rede. Eine der Bedingungen war jedoch, dass sich Server, die mit verschiedenen MLAG-Paaren verbunden sind, in derselben L2-Domäne befinden müssen. Ich wollte eines der Paare nicht einfach L2 machen, und deshalb wurde beschlossen, die L3-Konnektivität über SVI zu erhöhen. OSPF wurde für das Routing ausgewählt, da Es wurde bereits in älteren Rechenzentren verwendet, um die Verbindung der Infrastruktur im nächsten Schritt zu vereinfachen.
Dieses Diagramm zeigt das Physikdiagramm + die Aufteilung der Geräte in Paare. Alle Verknüpfungen im Diagramm funktionieren im Trunk-Modus.
Wie bereits erwähnt, erfolgt die gesamte L3-Konnektivität über SVI. Daher haben nur 2 von 4 Geräten eine IP-Adresse in jedem Vlan, sodass Sie eine Art L3-P2P-Bundle erstellen können.
Grundlegende Befehle für Interessierte
Bond (Port-Kanal) + 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
Trunk / Access-Port-Modus
# 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 + Statisch
#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
Fazit
Ich hoffe, jemand findet diesen Artikel interessant. Ich würde gerne Feedback sehen: Was soll hinzugefügt werden und was ist völlig unnötig. Im nächsten Artikel werden wir bereits auf das Interessanteste eingehen - auf das Design des Zielnetzwerks und die VXLAN / EVPN-Konfiguration. In Zukunft ist ein Artikel zur VXLAN / EVPN-Automatisierung mit Python möglich.