إدخال Cumulus Linux. تركيب الأجهزة والإعداد الأولي
مقدمة في بداية العمل كانت على النحو التالي:
- شراء المعدات
- رفوف مستأجرة
- تم وضع خطوط لمراكز البيانات القديمة
أول قطعة من الأجهزة التي يجب تسليمها كانت 4 x Mellanox SN2410 مع نظام Cumulus Linux المثبت مسبقًا عليها. في البداية ، لم يكن هناك أي فهم لكيفية ظهور كل شيء (سيتم تطويره فقط في مرحلة تنفيذ VXLAN / EVPN) ، لذلك قررنا رفعها كمفاتيح L3 بسيطة باستخدام CLAG (تناظرية من MLAG من Cumulus). في السابق ، لم يكن لدي ولا زملائي خبرة كبيرة مع Cumulus ، لذلك كان كل شيء جديدًا إلى حد ما ، ثم تقريبًا.
بدون ترخيص - لا توجد منافذ
بشكل افتراضي ، عند تشغيل الجهاز ، يتوفر لك منفذا فقط - وحدة التحكم و eth0 (ويعرف أيضًا باسم منفذ الإدارة). لإلغاء حظر منافذ 25G / 100G ، تحتاج إلى إضافة ترخيص. ويتضح على الفور أن Linux باسم البرنامج ليس من أجل لا شيء منذ ذلك الحين بعد تثبيت الترخيص ، تحتاج إلى إعادة تشغيل البرنامج الخفي switchd من خلال "إعادة تشغيل systemctl switchd.service" (في الواقع ، يمنع عدم وجود ترخيص هذا البرنامج الخفي من البدء).
الشيء التالي الذي سيجعلك تتذكر على الفور أن هذا لا يزال Linux ، هو تحديث الجهاز باستخدام apt-get Upgrade ، كما هو الحال في Ubuntu العادي ، ولكن ليس من الممكن دائمًا التحديث بهذه الطريقة. عند التبديل بين الإصدارات ، على سبيل المثال ، من 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
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" بدلاً من الرجوع إلى التكوين الأخير ، عدت إلى تكوين الجهاز الأول. (ومرة أخرى ، حفظ 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:~$
# 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.
— /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 ، وبالتالي تقرر رفع اتصال L3 عبر SVI ، فقد تم اختيار OSPF للتوجيه ، حيث تم استخدامه بالفعل في مراكز البيانات القديمة ، مما يسهل توصيل البنية التحتية في الخطوة التالية.
يوضح هذا الرسم التخطيطي مخطط الفيزياء + تقسيم الأجهزة إلى أزواج ، تعمل جميع الروابط الموجودة في المخطط في وضع Trunk.
كما ذكرنا سابقًا ، تتم جميع اتصالات L3 عبر SVI ، وبالتالي ، فإن جهازين فقط من أصل 4 أجهزة لهما عنوان IP في كل شبكة محلية ظاهرية ، مما يسمح لك بإنشاء نوع من حزمة L3 p2p.
أوامر أساسية للمهتمين
Bond (Port-channel) + 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
وضع الجذع / منفذ الوصول
# 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 + ثابت
#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
خاتمة
آمل أن يجد شخص ما هذا المقال ممتعًا. أرغب في رؤية التعليقات: ما الذي يجب إضافته وما هو غير ضروري تمامًا. في المقالة التالية ، سننتقل بالفعل إلى الأكثر إثارة للاهتمام - تصميم الشبكة المستهدفة وتكوين VXLAN / EVPN. وفي المستقبل ، من الممكن نشر مقال عن أتمتة VXLAN / EVPN باستخدام Python.