CumulusLinuxのご紹介。ハードウェアのインストールと初期設定
作業開始の概要は次のとおりです。
- 購入した機器
- レンタルラック
- 古いデータセンターへの回線が敷設されました
納品する必要のある最初のハードウェアは、CumulusLinuxがプリインストールされた4x MellanoxSN2410でした。最初は、すべてがどのように見えるか(VXLAN / EVPN実装の段階でのみ開発される)がまだ理解されていなかったため、CLAG(CumulusのMLAGのアナログ)を備えた単純なL3スイッチとしてそれらを上げることにしました。以前は、私も同僚もCumulusの経験があまりなかったので、すべてがある程度新しいものでした。
ライセンスなし-ポートなし
デフォルトでは、デバイスの電源を入れると、コンソールとeth0(別名管理ポート)の2つのポートしか使用できません。25G / 100Gポートのブロックを解除するには、ライセンスを追加する必要があります。そして、ソフトウェアの名の下にあるLinuxは、何の役にも立たないことがすぐに明らかになります。ライセンスをインストールした後、「systemctl restartswitchd.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
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
コミットシステム
ジュニパーと多くの仕事をした人として、私にとってはロールバック、コミット確認などのことです。新しくはありませんでしたが、なんとかいくつかのレーキを踏むことができました。
私が最初に遭遇したのは、ロールバック1 ==最後の作業構成の習慣のため、累積のロールバック番号付けでした。私はこのコマンドを自信を持って推進し、最新の変更をロールバックしています。しかし、ハードウェアの一部が制御不能になったときの驚きは何でしたか。しばらくの間、何が起こったのか理解できませんでした。次に、cumulusからドキュメントを読んだ後、何が起こったのかが明らかになりました。最後の構成にロールバックする代わりに「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.
最初のトポロジー
次の段階は、それらの間のスイッチのロジックを理解することでした。この段階では、ハードウェアはインストールされ、テストされただけで、ターゲットスキームの話はまだありませんでした。ただし、条件の1つは、異なるMLAGペアに接続されているサーバーが同じL2ドメインにある必要があることでした。ペアの1つを単純なL2にしたくなかったため、SVIを介してL3接続を上げることにしました。ルーティングには、OSPFが選択されました。古いデータセンターですでに使用されているため、次のステップでインフラストラクチャを簡単に接続できます。
この図は、物理図とデバイスのペアへの分割を示しています。図内のすべてのリンクはトランクモードで機能します。
前述のように、すべてのL3接続はSVIを介して行われるため、4つのデバイスのうち2つだけが各VlanにIPアドレスを持ち、一種のL3p2pバンドルを作成できます。
興味のある人のための基本的なコマンド
ボンド(ポートチャネル)+ 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構成に移ります。そして将来的には、Pythonを使用したVXLAN / EVPN自動化に関する記事が可能になります。