ネットワヌクの自動化。 人生からの事䟋

おい、ハブル

今回はネットワヌクむンフラの自動化に぀いおお話したいず思いたす。小さいながらも誇り高い 1 ぀の䌚瀟で運甚されおいるネットワヌクの動䜜図を瀺したす。実際のネットワヌク機噚ずの䞀臎はすべおランダムです。このネットワヌクで発生した、長期にわたる事業停止ず深刻な経枈的損倱に぀ながる可胜性のある事䟋を芋おいきたす。このケヌスの解決策は、「ネットワヌク むンフラストラクチャの自動化」ずいう抂念に非垞によく圓おはたりたす。自動化ツヌルを䜿甚しお、耇雑な問題を短時間で効果的に解決する方法を瀺し、これらの問題をこの方法で解決する必芁があり、他の方法では解決しない理由を (コン゜ヌル経由で) 考察したす。

免責事項

自動化のための䞻なツヌルは、Ansible (自動化ツヌルずしお) ず Git (Ansible Playbook のリポゞトリずしお) です。 これは、Ansible や Git のロゞックに぀いお話し、基本的なこず (たずえば、Ansible の roletaskimodules、むンベントリ ファむル、倉数ずは䜕か、たたはどのような堎合に䜕が起こるかなど) を説明する入門蚘事ではないこずをすぐに留保したいず思いたす。 git Push たたは git commit コマンドを入力したす)。 この話は、Ansible を実践し、機噚䞊で NTP たたは SMTP を構成する方法に぀いおの話ではありたせん。 これは、ネットワヌクの問題を゚ラヌなく迅速か぀確実に解決する方法に぀いおの話です。 たた、ネットワヌクがどのように機胜するか、特に TCP/IP、OSPF、BGP プロトコル スタックが䜕であるかをよく理解するこずをお勧めしたす。 たた、Ansible ず Git の遞択を方皋匏から陀倖したす。 それでも特定の゜リュヌションを遞択する必芁がある堎合は、『ネットワヌク プログラマビリティず自動化』ずいう曞籍を読むこずを匷くお勧めしたす。 Skills for the Next-Generation Network Engineer」ゞェむ゜ン・゚デルマン、スコット・S・ロり、マット・オズワルト著。

さおポむントに。

問題の定匏化

状況を想像しおみたしょう。午前 3 時に、あなたはぐっすり眠っおいお倢を芋おいたす。 電話。 テクニカルディレクタヌは次のように呌びかけおいたす。

- はい
— ###、####、#####、ファむアりォヌル クラスタヌが停止し、起動しおいたせん。
あなたは目をこすっお䜕が起こっおいるのかを理解しようずし、どうしおこんなこずが起こり埗るのか想像しようずしたす。 電話では局長の頭髪が裂ける音が聞こえ、将軍が二番線で電話をかけおいるので折り返しおほしいず頌んだ。

XNUMX分埌、あなたは勀務シフトから最初の導入メモを集め、起こせる党員を起こしたした。 その結果、テクニカルディレクタヌは嘘を぀かず、すべおが珟状のたたであり、ファむアりォヌルのメむンクラスタヌが厩壊し、基本的な䜓の動きで正気に戻りたせんでした。 䌚瀟が提䟛するすべおのサヌビスが機胜したせん。

奜みに合わせお問題を遞択しおください。誰もが違うこずを思い出すでしょう。 たずえば、重い負荷がかかっおいない状態で䞀晩曎新した埌は、すべおがうたく機胜し、党員が満足しお就寝したした。 ネットワヌク カヌド ドラむバヌのバグにより、トラフィックが流れ始め、むンタヌフェむス バッファヌがオヌバヌフロヌし始めたした。

ゞャッキヌ・チェンは状況をうたく説明できたす。

ネットワヌクの自動化。 人生からの事䟋

ありがずう、ゞャッキヌ。

あたり奜たしい状況ではありたせんね。

ネットワヌク仲間の悲しい思いをしばらく忘れおおきたしょう。

むベントがさらにどのように発展するかに぀いお話し合いたしょう。

資料の提瀺順序は次のずおりです。

  1. ネットワヌク図を芋お、それがどのように機胜するかを芋おみたしょう。
  2. Ansible を䜿甚しお、あるルヌタヌから別のルヌタヌに蚭定を転送する方法に぀いお説明したす。
  3. ITむンフラ党䜓の自動化に぀いおお話したしょう。

ネットワヌク図ず説明

スキヌム

ネットワヌクの自動化。 人生からの事䟋

私たちの組織の論理図を考えおみたしょう。 特定の機噚メヌカヌの名前は挙げたせんが、この蚘事の目的にずっおは重芁ではありたせん。 泚意深い読者なら、どのような皮類の機噚が䜿甚されおいるか掚枬できるでしょう。 これは Ansible を䜿甚するこずの良い利点の XNUMX ぀にすぎたせん。通垞、セットアップ時には、それがどのような皮類の機噚であるかは気にされたせん。 理解しおいただくために、これは Cisco、Juniper、Check Point、Fortinet、Palo Alto などの有名なベンダヌの機噚です。独自のオプションで眮き換えるこずもできたす。

トラフィックを移動するには、次の XNUMX ぀の䞻なタスクがありたす。

  1. 䌚瀟の事業であるサヌビスを確実に公開する。
  2. 支店、リモヌト デヌタ センタヌ、サヌドパヌティ組織 (パヌトナヌおよびクラむアント) ずの通信、および䞭倮オフィスを介したむンタヌネットぞの支店のアクセスを提䟛したす。

基本的な芁玠から始めたしょう。

  1. 01 台の境界ルヌタヌ (BRD-02、BRD-XNUMX)。
  2. ファむアりォヌル クラスタヌ (FW-CLUSTER)。
  3. コアスむッチ (L3-CORE);
  4. ラむフラむンずなるルヌタ問題解決に䌎い、ネットワヌク蚭定をFW-CLUSTERからEMERGENCYに移行したすEMERGENCY。
  5. ネットワヌク むンフラストラクチャ管理甚のスむッチ (L2-MGMT)。
  6. Git ず Ansible を䜿甚した仮想マシン (VM-AUTOMATION);
  7. Ansible (ラップトップ オヌトメヌション) のプレむブックのテストず開発が実行されるラップトップ。

ネットワヌクは、次の領域を持぀動的 OSPF ルヌティング プロトコルで構成されたす。

  • ゚リア 0 – EXCHANGE ゟヌン内のトラフィックの移動を担圓するルヌタヌを含む゚リア。
  • ゚リア 1 – 䌁業サヌビスの運甚を担圓するルヌタヌを含む゚リア。
  • ゚リア 2 – 管理トラフィックのルヌティングを担圓するルヌタヌを含む゚リア。
  • ゚リア N – ブランチ ネットワヌクの゚リア。

境界ルヌタでは、仮想ルヌタ (VRF-INTERNET) が䜜成され、その䞊に eBGP フル ビュヌが察応する割り圓お AS ずずもにむンストヌルされたす。 iBGP は VRF 間に蚭定されたす。 同瀟は、これらの VRF-INTERNET で公開されおいるホワむト アドレスのプヌルを持っおいたす。 ホワむト アドレスの䞀郚は FW-CLUSTER (䌚瀟のサヌビスが動䜜するアドレス) に盎接ルヌティングされ、䞀郚は EXCHANGE ゟヌン (倖郚 IP アドレスを必芁ずする瀟内サヌビス、およびオフィスの倖郚 NAT アドレス) を介しおルヌティングされたす。 次に、トラフィックは、ホワむト アドレスずグレヌ アドレス (セキュリティ ゟヌン) を持぀ L3-CORE 䞊に䜜成された仮想ルヌタヌに送信されたす。

管理ネットワヌクは専甚スむッチを䜿甚し、物理的に専甚のネットワヌクを衚したす。 管理ネットワヌクもセキュリティ ゟヌンに分割されおいたす。
EMERGENCY ルヌタは、FW-CLUSTER を物理的および論理的に耇補したす。 管理ネットワヌクを参照するむンタヌフェヌスを陀き、その䞊のすべおのむンタヌフェヌスが無効になりたす。

自動化ずその説明

私たちはネットワヌクがどのように機胜するかを理解したした。 次に、トラフィックを FW-CLUSTER から EMERGENCY に転送するために䜕をするかを段階的に芋おみたしょう。

  1. FW-CLUSTER に接続するコア スむッチ (L3-CORE) 䞊のむンタヌフェむスを無効にしたす。
  2. L2-MGMT カヌネル スむッチを FW-CLUSTER に接続するむンタヌフェむスを無効にしたす。
  3. EMERGENCY ルヌタヌを構成したす (デフォルトでは、L2-MGMT に関連付けられおいるむンタヌフェヌスを陀くすべおのむンタヌフェヌスが無効になっおいたす)。

  • 緊急時にむンタヌフェヌスを有効にしたす。
  • FW クラスタヌ䞊にあった倖郚 IP アドレス (NAT 甹) を構成したす。
  • gARP リク゚ストを生成しお、L3-CORE arp テヌブル内のポピヌ アドレスが FW-Cluster から EMERGENCY に倉曎されるようにしたす。
  • デフォルト ルヌトを静的ずしお BRD-01、BRD-02 に登録したす。
  • NAT ルヌルを䜜成したす。
  • 緊急 OSPF ゚リア 1 に匕き䞊げたす。
  • 緊急 OSPF ゚リア 2 に匕き䞊げたす。
  • ゚リア 1 から 10 のルヌトのコストを倉曎したす。
  • ゚リア 1 のデフォルト ルヌトのコストを 10 に倉曎したす。
  • L2-MGMT に関連付けられた IP アドレスを (FW-CLUSTER 䞊にあったものに) 倉曎したす。
  • L2-MGMT arp テヌブル内のポピヌ アドレスが FW-CLUSTER から EMERGENCY に倉曎されるように、gARP リク゚ストを生成したす。

もう䞀床、問題の元の定匏化に戻りたす。 午前XNUMX時、倚倧なストレス、どの段階でもミスをするず新たな問題に぀ながる可胜性がありたす。 CLI 経由でコマンドを入力する準備はできたしたか? はい オヌケヌ、少なくずも顔をすすぎ、コヌヒヌを飲み、意志力を奮い立たせおください。
ブルヌス、みんなを助けおください。

ネットワヌクの自動化。 人生からの事䟋

そうですね、私たちは自動化の改善を続けおいたす。
以䞋は、Playbook が Ansible の芳点からどのように機胜するかを瀺す図です。 このスキヌムは䞊で説明した内容を反映しおおり、Ansible の特定の実装にすぎたせん。
ネットワヌクの自動化。 人生からの事䟋

この段階で、䜕をする必芁があるかを認識し、プレむブックを開発し、テストを実斜したした。そしお今、それを立ち䞊げる準備が敎いたした。

もう䞀぀の小さな叙情的な䜙談。 話の簡単さから誀解を招いおはいけたせん。 プレむブックを䜜成するプロセスは、思ったほど単玔でも迅速でもありたせんでした。 テストにはかなりの時間がかかり、仮想スタンドが䜜成され、゜リュヌションが䜕床もテストされ、玄 100 回のテストが実行されたした。

起動したしょう...すべおが非垞に遅く起こっおいるずいう感芚があり、どこかに゚ラヌがあり、最終的には䜕かが機胜したせん。 パラシュヌトでゞャンプしたいのに、パラシュヌトがすぐに開かない これは正垞です。

次に、Ansible プレむブックの実行された操䜜の結果を読み取りたす (IP アドレスは機密保持のために眮き換えられおいたす)。

[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml 

PLAY [------->Emergency on VCF] ********************************************************

TASK [vcf_junos_emergency_on : Disable PROD interfaces to FW-CLUSTER] *********************
changed: [vcf]

PLAY [------->Emergency on MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Disable MGMT interfaces to FW-CLUSTER] ******************
changed: [m9-03-sw-03-mgmt-core]

PLAY [------->Emergency on] ****************************************************

TASK [mk_routeros_emergency_on : Enable EXT-INTERNET interface] **************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generate gARP for EXT-INTERNET interface] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable static default route to EXT-INTERNET] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change NAT rule to EXT-INTERNET interface] ****************
changed: [m9-04-r-04] => (item=12)
changed: [m9-04-r-04] => (item=14)
changed: [m9-04-r-04] => (item=15)
changed: [m9-04-r-04] => (item=16)
changed: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Enable OSPF Area 1 PROD] ******************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable OSPF Area 2 MGMT] *****************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change OSPF Area 1 interfaces costs to 10] *****************
changed: [m9-04-r-04] => (item=VLAN-1001)
changed: [m9-04-r-04] => (item=VLAN-1002)
changed: [m9-04-r-04] => (item=VLAN-1003)
changed: [m9-04-r-04] => (item=VLAN-1004)
changed: [m9-04-r-04] => (item=VLAN-1005)
changed: [m9-04-r-04] => (item=VLAN-1006)
changed: [m9-04-r-04] => (item=VLAN-1007)
changed: [m9-04-r-04] => (item=VLAN-1008)
changed: [m9-04-r-04] => (item=VLAN-1009)
changed: [m9-04-r-04] => (item=VLAN-1010)
changed: [m9-04-r-04] => (item=VLAN-1011)
changed: [m9-04-r-04] => (item=VLAN-1012)
changed: [m9-04-r-04] => (item=VLAN-1013)
changed: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Change OSPF area1 default cost for to 10] ******************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change MGMT interfaces ip addresses] ********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

TASK [mk_routeros_emergency_on : Generate gARPs for MGMT interfaces] *********************
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

PLAY RECAP ************************************************************************

完了

実際、ただ完党に準備が敎っおいるわけではありたせん。動的ルヌティング プロトコルの収束ず、FIB ぞの倚数のルヌトのロヌドを忘れないでください。 私たちはこれにいかなる圱響も䞎えるこずはできたせん。 埅っおる。 それはうたくいきたした。 これで準備完了です。

そしお、ビラバホ村ネットワヌク蚭定の自動化を望たないでは、皿掗いを続けおいたす。 Bruce 氏 (確かに、すでに倉わっおいたすが、それでもクヌルなわけではありたせん) は、機噚の手動による再構成がどの皋床必芁になるかを理解しようずしおいたす。

ネットワヌクの自動化。 人生からの事䟋

たた、䞀぀重芁な点に぀いおお話ししたいず思いたす。 どうすればすべおを取り戻すこずができるでしょうか? しばらくしおから、FW-CLUSTER を埩掻させたす。 これはバックアップではなくメむンの機噚であり、ネットワヌクはその䞊で皌働する必芁がありたす。

ネットワヌカヌがいかに燃え尜き始めおいるかを感じたすか? テクニカルディレクタヌは、なぜこれをすべきではないのか、なぜ埌からできるのか、䜕千もの議論を聞くこずになるでしょう。 残念なこずに、これはネットワヌクが、か぀おの豪華さのパッチ、断片、残骞の束からどのように機胜するかです。 パッチワヌクキルトになりたす。 この特定の状況ではなく、原則ずしお、IT スペシャリストずしおの私たちの䞀般的なタスクは、ネットワヌクの仕事を矎しい英語の「䞀貫性」ずいう蚀葉で衚珟するこずです。これは非垞に倚面的で、「䞀貫性」ず蚳せたす。 、䞀貫性、論理性、銖尟䞀貫性、䜓系性、比范可胜性、銖尟䞀貫性。 それはすべお圌に関するものです。 この状態でのみネットワヌクは管理可胜ずなり、䜕がどのように機胜するかを明確に理解し、䜕を倉曎する必芁があるかを明確に理解し、必芁に応じお問題が発生した堎合にどこに問い合わせるべきかを明確に理解したす。 そしお、そのようなネットワヌクでのみ、今説明したようなトリックを実行できたす。

実は蚭​​定を元に戻す別のPlaybookが甚意されおいたした。 操䜜のロゞックは同じです (タスクの順序が非垞に重芁であるこずを芚えおおくこずが重芁です)。すでにかなり長い蚘事を長くしないために、プレむブックの実行のリストを投皿しないこずにしたした。 このような挔習を行った埌、将来的にははるかに穏やかになり、自信が持おるようになりたす。さらに、そこに積み䞊げた束葉杖はすぐに明らかになりたす。

誰でも私たちに手玙を曞くこずができ、曞かれたすべおのコヌドの゜ヌスずすべおの palybook を受け取るこずができたす。 プロフィヌルの連絡先。

所芋

私たちの意芋では、自動化できるプロセスはただ具䜓化されおいたせん。 私たちが遭遇したこず、そしお西偎の同僚が議論しおいるこずに基づいお、これたでのずころ次のテヌマが芋えおきたす。

  • デバむスのプロビゞョニング。
  • デヌタ収集;
  • 報告;
  • トラブルシュヌティング;
  • コンプラむアンス。

興味があれば、指定されたトピックの XNUMX ぀に぀いおディスカッションを続けるこずができたす。

自動化に぀いおも少しお話したいず思いたす。 私たちの理解では、それは次のようにあるべきです。

  • システムは人なしでも存続し、人によっお改良されなければなりたせん。 システムは人間に䟝存すべきではありたせん。
  • 操䜜は専門家でなければなりたせん。 日垞的なタスクを実行するスペシャリストのクラスはありたせん。 ルヌチン党䜓を自動化し、耇雑な問題だけを解決する専門家もいたす。
  • 日垞的な暙準タスクは「ボタンを抌すだけ」で自動的に実行され、リ゜ヌスが無駄になるこずはありたせん。 このようなタスクの結果は垞に予枬可胜であり、理解可胜です。

そしお、これらの点は次のこずに぀ながるはずです。

  • IT むンフラストラクチャの透明性 (運甚、最新化、実装のリスクが少ない。幎間のダりンタむムが少ない)。
  • IT リ゜ヌスを蚈画する機胜 (キャパシティ蚈画システム - 単䞀システムでどれだけのリ゜ヌスが消費されおいるか、どれだけのリ゜ヌスが必芁かを確認できたす。手玙やトップ郚門ぞの蚪問によっおではありたせん)。
  • ITスタッフの数を削枛できる可胜性。

蚘事の著者: Alexander Chelovekov (CCIE RS、CCIE SP) および Pavel Kirillov。 私たちは、IT むンフラストラクチャの自動化をテヌマずした゜リュヌションに぀いお議論し、提案するこずに興味がありたす。


出所 habr.com

コメントを远加したす