Ağ otomasyonu. Bir insanın hayatından bir vaka

Ey Habr!

Bu yazımızda ağ altyapısının otomasyonundan bahsetmek istiyoruz. Küçük ama çok gururlu bir şirkette faaliyet gösteren ağın çalışma şeması sunulacak. Gerçek ağ ekipmanıyla yapılan tüm eşleşmeler rastgeledir. Bu ağda meydana gelen, işletmenin uzun süre kapanmasına ve ciddi mali kayıplara yol açabilecek bir vakaya bakacağız. Bu durumun çözümü “Ağ altyapısının otomasyonu” kavramına çok iyi uyuyor. Otomasyon araçlarını kullanarak, karmaşık sorunları kısa sürede nasıl etkili bir şekilde çözebileceğinizi göstereceğiz ve bu sorunların neden başka şekilde (konsol aracılığıyla) değil de bu şekilde çözülmesi gerektiği üzerinde düşüneceğiz.

Feragatname

Otomasyona yönelik ana araçlarımız Ansible (otomasyon aracı olarak) ve Git'tir (Ansible oyun kitapları deposu olarak). Ansible ya da Git'in mantığından bahsedip temel şeyleri açıklayacağımız (örneğin, Ansible'daki roletaskimodüller, envanter dosyaları, değişkenler nedir ya da ne olur, ne olur) bir giriş yazısı olmadığını hemen belirtmek isterim. git Push veya git commit komutlarını girersiniz). Bu hikaye, Ansible'ı nasıl uygulayabileceğiniz ve ekipmanınızda NTP veya SMTP'yi nasıl yapılandırabileceğinizle ilgili değildir. Bu, bir ağ sorununu hatasız, hızlı ve tercihen nasıl çözebileceğinizle ilgili bir hikaye. Ayrıca ağın nasıl çalıştığına, özellikle de TCP/IP, OSPF, BGP protokol yığınının ne olduğuna dair iyi bir anlayışa sahip olmanız tavsiye edilir. Ayrıca Ansible ve Git seçimini de denklemden çıkaracağız. Hala belirli bir çözüm seçmeniz gerekiyorsa, “Ağ Programlanabilirliği ve Otomasyonu” kitabını okumanızı önemle tavsiye ederiz. Yeni Nesil Ağ Mühendisi için Beceriler" Yazan: Jason Edelman, Scott S. Lowe ve Matt Oswalt.

Şimdi konuya.

Sorunun formüle edilmesi

Bir durum hayal edelim: Sabah saat 3'te derin uykudasınız ve rüya görüyorsunuz. Telefon görüşmesi. Teknik direktör sesleniyor:

- Evet?
— ###, ####, #####, güvenlik duvarı kümesi düştü ve yükselmiyor!!!
Gözlerinizi ovuşturup neler olduğunu anlamaya çalışıyorsunuz ve bunun nasıl olabileceğini hayal ediyorsunuz. Telefonda müdürün saçlarının yırtıldığını duyabiliyorsunuz ve general onu ikinci hattan aradığı için geri aramayı istiyor.

Yarım saat sonra vardiyanın ilk tanıtım notlarını topladınız, uyandırılabilecek herkesi uyandırdınız. Sonuç olarak teknik direktör yalan söylemedi, her şey olduğu gibi, ana güvenlik duvarı kümesi çöktü ve hiçbir temel vücut hareketi aklını başına getirmiyor. Şirketin sunduğu tüm hizmetler çalışmıyor.

Zevkinize göre bir sorun seçin, herkes farklı bir şey hatırlayacaktır. Örneğin, ağır bir yükün olmadığı bir gecede yapılan güncellemeden sonra her şey yolunda gitti ve herkes mutlu bir şekilde yattı. Ağ kartı sürücüsündeki bir hata nedeniyle trafik akmaya başladı ve arayüz arabellekleri taşmaya başladı.

Jackie Chan durumu çok iyi tanımlayabilir.

Ağ otomasyonu. Bir insanın hayatından bir vaka

Teşekkür ederim Jackie.

Çok hoş bir durum değil mi?

Ağabeyimi bir süreliğine hüzünlü düşünceleriyle baş başa bırakalım.

Olayların daha da nasıl gelişeceğini tartışalım.

Materyalin aşağıdaki sunum sırasını öneriyoruz

  1. Ağ diyagramına bakalım ve nasıl çalıştığını görelim;
  2. Ansible'ı kullanarak ayarları bir yönlendiriciden diğerine nasıl aktaracağımızı açıklayacağız;
  3. Bir bütün olarak BT altyapısının otomasyonundan bahsedelim.

Ağ şeması ve açıklaması

düzen

Ağ otomasyonu. Bir insanın hayatından bir vaka

Organizasyonumuzun mantıksal diyagramını ele alalım. Belirli ekipman üreticilerinin isimlerini vermeyeceğiz; bu makalenin amaçları açısından bunun bir önemi yok (Dikkatli okuyucu ne tür ekipmanların kullanıldığını tahmin edecektir). Bu, Ansible ile çalışmanın iyi avantajlarından sadece bir tanesi; kurulum sırasında genellikle ne tür ekipman olduğu umurumuzda değil. Anlamak gerekirse, bu, Cisco, Juniper, Check Point, Fortinet, Palo Alto gibi tanınmış satıcıların ekipmanlarıdır... kendi seçeneğinizi değiştirebilirsiniz.

Trafiği taşımak için iki ana görevimiz var:

  1. Şirketin işi olan hizmetlerimizin yayınlanmasını sağlamak;
  2. Şubelerle, uzak veri merkeziyle ve üçüncü taraf kuruluşlarla (iş ortakları ve müşteriler) iletişimin yanı sıra şubelerin merkez ofis aracılığıyla internete erişimini sağlayın.

Temel unsurlarla başlayalım:

  1. İki sınır yönlendiricisi (BRD-01, BRD-02);
  2. Güvenlik Duvarı Kümesi (FW-CLUSTER);
  3. Çekirdek anahtarı (L3-CORE);
  4. Cankurtaran halatı haline gelecek bir yönlendirici (sorunu çözdükçe ağ ayarlarını FW-CLUSTER'dan ACİL DURUM'a aktaracağız) (ACİL);
  5. Ağ altyapısı yönetimine yönelik anahtarlar (L2-MGMT);
  6. Git ve Ansible'a sahip sanal makine (VM-OTOMASYON);
  7. Ansible (Dizüstü Bilgisayar Otomasyonu) için oyun kitaplarının test edildiği ve geliştirildiği bir dizüstü bilgisayar.

Ağ, aşağıdaki alanlara sahip dinamik bir OSPF yönlendirme protokolü ile yapılandırılmıştır:

  • Alan 0 – EXCHANGE bölgesindeki trafiği taşımaktan sorumlu yönlendiricileri içeren alan;
  • Alan 1 – şirket hizmetlerinin yürütülmesinden sorumlu yönlendiricileri içeren alan;
  • Alan 2 – yönlendirme yönetimi trafiğinden sorumlu yönlendiricileri içeren alan;
  • Alan N – şube ağlarının alanları.

Sınır yönlendiricilerinde, eBGP tam görünümünün ilgili atanmış AS ile yüklendiği bir sanal yönlendirici (VRF-İNTERNET) oluşturulur. iBGP, VRF'ler arasında yapılandırılır. Şirketin bu VRF-İNTERNET'te yayınlanan beyaz adreslerden oluşan bir havuzu var. Beyaz adreslerden bazıları doğrudan FW-CLUSTER'a (şirket hizmetlerinin çalıştığı adresler) yönlendirilir, bazıları EXCHANGE bölgesi (harici IP adresleri gerektiren dahili şirket hizmetleri ve ofisler için harici NAT adresleri) üzerinden yönlendirilir. Daha sonra trafik, beyaz ve gri adreslere (güvenlik bölgeleri) sahip L3-CORE üzerinde oluşturulan sanal yönlendiricilere gider.

Yönetim ağı, özel anahtarlar kullanır ve fiziksel olarak ayrılmış bir ağı temsil eder. Yönetim ağı ayrıca güvenlik bölgelerine ayrılmıştır.
ACİL yönlendirici, FW-CLUSTER'ı fiziksel ve mantıksal olarak kopyalar. Yönetim ağına bakanlar dışındaki tüm arayüzler devre dışıdır.

Otomasyon ve açıklaması

Ağın nasıl çalıştığını anladık. Şimdi trafiği FW-CLUSTER'dan ACİL'e aktarmak için neler yapacağımıza adım adım bakalım:

  1. Çekirdek anahtardaki (L3-CORE) onu FW-CLUSTER'a bağlayan arayüzleri devre dışı bırakıyoruz;
  2. L2-MGMT çekirdek anahtarı üzerinde onu FW-CLUSTER'a bağlayan arayüzleri devre dışı bırakıyoruz;
  3. ACİL yönlendiriciyi yapılandırıyoruz (varsayılan olarak, L2-MGMT ile ilişkili olanlar hariç tüm arayüzler devre dışıdır):

  • ACİL DURUMDA arayüzleri etkinleştiriyoruz;
  • FW-Cluster'da bulunan harici IP adresini (NAT için) yapılandırıyoruz;
  • L3-CORE arp tablolarındaki poppy adreslerinin FW-Cluster'dan ACİL DURUM'a değişmesi için gARP istekleri üretiyoruz;
  • Varsayılan rotayı statik olarak BRD-01, BRD-02'ye kaydediyoruz;
  • NAT kuralları oluşturun;
  • ACİL DURUM OSPF Alanı 1'e yükseltin;
  • ACİL DURUM OSPF Alanı 2'e yükseltin;
  • Alan 1'deki rotaların maliyetini 10'a değiştiriyoruz;
  • Alan 1'deki varsayılan rotanın maliyetini 10 olarak değiştiriyoruz;
  • L2-MGMT ile ilişkili IP adreslerini (FW-CLUSTER'dakilere) değiştiriyoruz;
  • L2-MGMT arp tablolarındaki poppy adreslerinin FW-CLUSTER'dan ACİL DURUM'a değişmesi için gARP istekleri üretiyoruz.

Tekrar sorunun orijinal formülasyonuna dönüyoruz. Sabahın üçü, aşırı stres, herhangi bir aşamada yapılacak bir hata yeni sorunlara yol açabilir. CLI aracılığıyla komut yazmaya hazır mısınız? Evet? Tamam, en azından git yüzünü yıka, biraz kahve iç ve iradeni topla.
Bruce, lütfen adamlara yardım et.

Ağ otomasyonu. Bir insanın hayatından bir vaka

Otomasyonumuzu geliştirmeye devam ediyoruz.
Aşağıda başucu kitabının Ansible açısından nasıl çalıştığını gösteren bir diyagram bulunmaktadır. Bu şema yukarıda tanımladığımız şeyi yansıtıyor; bu sadece Ansible'daki özel bir uygulamadır.
Ağ otomasyonu. Bir insanın hayatından bir vaka

Bu aşamada ne yapılması gerektiğini fark ettik, bir taktik kitabı geliştirdik, testler yaptık ve artık onu hayata geçirmeye hazırız.

Başka bir küçük lirik ara söz. Hikayenin kolaylığı sizi yanıltmasın. Başucu kitaplarını yazma süreci göründüğü kadar basit ve hızlı değildi. Testler oldukça uzun sürdü, sanal bir stant oluşturuldu, çözüm defalarca test edildi, 100'e yakın test yapıldı.

Başlayalım... Her şeyin çok yavaş gerçekleştiği, bir yerlerde bir hata olduğu, sonunda bir şeylerin işe yaramayacağı hissi var. Paraşütle atlama hissi var ama paraşüt hemen açılmak istemiyor... bu normaldir.

Daha sonra, Ansible playbook'ta gerçekleştirilen işlemlerin sonucunu okuyoruz (IP adresleri gizlilik amacıyla değiştirildi):

[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 ************************************************************************

Bitti!

Aslında tam olarak hazır değil, dinamik yönlendirme protokollerinin yakınsamasını ve FIB'e çok sayıda rota yüklemeyi unutmayın. Bunu hiçbir şekilde etkileyemeyiz. Bekleriz. İşe yaradı. Artık hazır.

Ve (ağ kurulumunu otomatikleştirmek istemeyen) Vilabajo köyünde bulaşıkları yıkamaya devam ediyorlar. Bruce (kuşkusuz, zaten farklı, ancak daha az havalı değil) ekipmanın manuel olarak yeniden yapılandırılmasının ne kadar daha gerçekleşeceğini anlamaya çalışıyor.

Ağ otomasyonu. Bir insanın hayatından bir vaka

Ayrıca önemli bir nokta üzerinde durmak istiyorum. Her şeyi nasıl geri alabiliriz? Bir süre sonra FW-CLUSTER'ımızı tekrar hayata döndüreceğiz. Bu ana ekipmandır, yedek değil, ağın üzerinde çalışması gerekir.

Ağ kullanıcılarının nasıl tükenmeye başladığını hissediyor musunuz? Teknik direktör bunun neden yapılmaması gerektiği, neden daha sonra yapılabileceği konusunda binlerce argüman duyacaktır. Ne yazık ki, ağ bir grup yama, parça ve eski lüksün kalıntılarından bu şekilde çalışıyor. Patchwork bir yorgan olduğu ortaya çıktı. BT uzmanları olarak genel olarak görevimiz, bu özel durumda değil, genel olarak prensip olarak, ağın çalışmasını güzel İngilizce "tutarlılık" kelimesine getirmektir, çok yönlüdür, şu şekilde tercüme edilebilir: tutarlılık tutarlılık, mantık, tutarlılık, sistematiklik, karşılaştırılabilirlik, tutarlılık. Her şey onunla ilgili. Ancak bu durumda ağ yönetilebilir, neyin nasıl çalıştığını açıkça anlıyoruz, neyin değiştirilmesi gerektiğini açıkça anlıyoruz, gerekirse sorun çıkarsa nereye bakacağımızı açıkça biliyoruz. Ve ancak böyle bir ağda az önce tanımladığımız hileleri gerçekleştirebilirsiniz.

Aslında ayarları orijinal durumuna döndüren başka bir taktik kitabı hazırlandı. Çalışma mantığı aynıdır (görev sırasının çok önemli olduğunu hatırlamak önemlidir), zaten oldukça uzun olan bir makaleyi uzatmamak için, başucu kitabının yürütülmesinin bir listesini yayınlamamaya karar verdik. Bu tür egzersizleri yaptıktan sonra kendinizi çok daha sakin ve gelecekte daha güvende hissedeceksiniz, ayrıca orada biriktirdiğiniz koltuk değnekleri de hemen kendini gösterecektir.

Herkes bize yazabilir ve tüm yazılı kodların ve tüm hesap kitaplarının kaynaklarını alabilir. Profildeki kişiler.

Bulgular

Bize göre otomatize edilebilecek süreçler henüz netleşmedi. Karşılaştıklarımıza ve Batılı meslektaşlarımızın tartıştıklarına dayanarak şu ana kadar aşağıdaki temaları görebiliyoruz:

  • Cihaz provizyonu;
  • Veri toplama;
  • Raporlama;
  • Sorun giderme;
  • Uygunluk.

İlgi varsa, verilen konulardan biri üzerinde tartışmaya devam edebiliriz.

Biraz da otomasyondan bahsetmek istiyorum. Anlayışımıza göre ne olmalı:

  • Sistem, insan tarafından geliştirilirken, insan olmadan da yaşanmalı. Sistem insana bağlı olmamalı;
  • Operasyon uzman olmalıdır. Rutin görevleri yerine getiren bir uzman sınıfı yoktur. Tüm rutini otomatikleştirip yalnızca karmaşık sorunları çözen uzmanlar var;
  • Rutin standart görevler "bir düğmeye basılarak" otomatik olarak gerçekleştirilir, hiçbir kaynak israf edilmez. Bu tür görevlerin sonucu her zaman öngörülebilir ve anlaşılabilir.

Peki bu noktalar neye yol açmalıdır:

  • BT altyapısının şeffaflığı (Daha az işletme, modernizasyon ve uygulama riski. Yılda daha az kesinti);
  • BT kaynaklarını planlama yeteneği (Kapasite planlama sistemi - ne kadar tüketildiğini görebilirsiniz, tek bir sistemde kaç kaynağın gerekli olduğunu görebilirsiniz, mektuplarla ve üst departmanlara yapılan ziyaretlerle değil);
  • BT personeli sayısını azaltma imkanı.

Makalenin yazarları: Alexander Chelovekov (CCIE RS, CCIE SP) ve Pavel Kirillov. BT altyapısı otomasyonu konusunda tartışmak ve çözümler önermekle ilgileniyoruz.


Kaynak: habr.com

Yorum ekle