اتوماسیون شبکه موردی از زندگی

هی هابر!

در این مقاله می خواهیم در مورد اتوماسیون زیرساخت شبکه صحبت کنیم. نمودار کاری از شبکه ای که در یک شرکت کوچک اما بسیار پرافتخار فعالیت می کند ارائه خواهد شد. همه موارد منطبق با تجهیزات شبکه واقعی تصادفی هستند. ما به موردی که در این شبکه رخ داده است نگاه خواهیم کرد که می تواند منجر به تعطیلی طولانی مدت کسب و کار و خسارات مالی جدی شود. راه حل این مورد به خوبی با مفهوم "اتوماسیون زیرساخت شبکه" مطابقت دارد. با استفاده از ابزارهای اتوماسیون، نشان خواهیم داد که چگونه می توانید به طور موثر مشکلات پیچیده را در مدت زمان کوتاهی حل کنید، و به این فکر می کنیم که چرا این مشکلات باید از این طریق حل شوند و نه به شکل دیگری (از طریق کنسول).

سلب مسئولیت

ابزارهای اصلی ما برای اتوماسیون عبارتند از Ansible (به عنوان یک ابزار اتوماسیون) و Git (به عنوان یک مخزن برای کتاب های بازی Ansible). من می خواهم بلافاصله رزرو کنم که این یک مقاله مقدماتی نیست، جایی که ما در مورد منطق Ansible یا Git صحبت می کنیم و چیزهای اساسی را توضیح می دهیم (به عنوان مثال، roletaskimodules، فایل های موجودی، متغیرها در Ansible یا چه اتفاقی می افتد وقتی شما دستورات git push یا git commit را وارد می کنید). این داستان در مورد این نیست که چگونه می توانید Ansible را تمرین کنید و NTP یا SMTP را روی تجهیزات خود پیکربندی کنید. این یک داستان در مورد چگونگی حل سریع و ترجیحا مشکل شبکه بدون خطا است. همچنین توصیه می شود که درک خوبی از نحوه عملکرد شبکه داشته باشید، به ویژه اینکه پشته پروتکل TCP/IP، OSPF، BGP چیست. انتخاب Ansible و Git را نیز از معادله خارج خواهیم کرد. اگر باز هم نیاز به انتخاب راه حل خاصی دارید، خواندن کتاب «برنامه ریزی و اتوماسیون شبکه» را به شدت توصیه می کنیم. مهارت‌ها برای مهندس شبکه نسل بعدی» نوشته جیسون ادلمن، اسکات اس. لو و مت اسوالت.

حالا به اصل مطلب می پردازیم.

بیانیه مشکل

بیایید یک موقعیت را تصور کنیم: ساعت 3 بامداد، شما عمیقاً خوابیده اید و رویا می بینید. تماس تلفنی. مدیر فنی تماس می گیرد:

- آره؟
— ###، ####، #####، فایروال کلاستر افتاده و بالا نمی رود!!!
شما چشمان خود را می مالید، سعی می کنید آنچه را که اتفاق می افتد درک کنید و تصور کنید که چگونه ممکن است این اتفاق بیفتد. در تلفن صدای پاره شدن موهای سر کارگردان را می شنوید و او می خواهد تماس بگیرد زیرا ژنرال در خط دوم با او تماس می گیرد.

نیم ساعت بعد، اولین یادداشت های مقدماتی شیفت وظیفه را جمع آوری کردی، همه کسانی را که می شد از خواب بیدار کرد، بیدار کرد. در نتیجه مدیر فنی دروغ نگفته است، همه چیز همانطور که هست است، خوشه اصلی فایروال ها سقوط کرده است و هیچ حرکت اولیه بدن او را به هوش نمی آورد. تمام خدماتی که این شرکت ارائه می دهد کار نمی کند.

یک مشکل را به سلیقه خود انتخاب کنید، همه چیز متفاوتی را به خاطر خواهند آورد. به عنوان مثال، پس از یک به روز رسانی یک شبه در غیاب بار سنگین، همه چیز به خوبی کار کرد و همه خوشحال به رختخواب رفتند. ترافیک شروع به جریان کرد و بافرهای رابط به دلیل وجود اشکال در درایور کارت شبکه سرریز شدند.

جکی چان می تواند شرایط را به خوبی توصیف کند.

اتوماسیون شبکه موردی از زندگی

متشکرم، جکی.

وضعیت خیلی خوشایندی نیست، اینطور است؟

بیایید شبکه ما را برادر با افکار غم انگیزش یک مدت رها کنیم.

بیایید در مورد چگونگی توسعه بیشتر رویدادها بحث کنیم.

ما ترتیب زیر را برای ارائه مطالب پیشنهاد می کنیم

  1. بیایید به نمودار شبکه نگاه کنیم و ببینیم که چگونه کار می کند.
  2. نحوه انتقال تنظیمات از یک روتر به روتر دیگر با استفاده از Ansible را شرح خواهیم داد.
  3. بیایید در مورد اتوماسیون زیرساخت فناوری اطلاعات به طور کلی صحبت کنیم.

نمودار شبکه و توضیحات

طرح

اتوماسیون شبکه موردی از زندگی

بیایید نمودار منطقی سازمان خود را در نظر بگیریم. ما از تولید کنندگان تجهیزات خاصی نام نمی بریم؛ برای اهداف این مقاله مهم نیست (خواننده دقیق حدس می‌زند که از چه نوع تجهیزاتی استفاده می‌شود). این تنها یکی از مزایای خوب کار با Ansible است؛ هنگام راه‌اندازی، معمولاً برای ما مهم نیست که چه نوع تجهیزاتی است. فقط برای درک، این تجهیزات از فروشندگان معروف است، مانند Cisco، Juniper، Check Point، Fortinet، Palo Alto...شما می توانید گزینه خود را جایگزین کنید.

ما دو وظیفه اصلی برای جابجایی ترافیک داریم:

  1. از انتشار خدمات ما که تجارت شرکت است اطمینان حاصل کنید.
  2. امکان ارتباط با شعب، مرکز داده از راه دور و سازمان های شخص ثالث (شرکاء و مشتریان) و همچنین دسترسی شعب به اینترنت از طریق دفتر مرکزی.

بیایید با عناصر اصلی شروع کنیم:

  1. دو روتر مرزی (BRD-01، BRD-02)؛
  2. فایروال کلاستر (FW-CLUSTER)؛
  3. سوئیچ هسته (L3-CORE)؛
  4. روتری که تبدیل به یک خط حیاتی می شود (همانطور که مشکل را حل می کنیم، تنظیمات شبکه را از FW-CLUSTER به EMERGENCY منتقل می کنیم) (EMERGENCY).
  5. سوئیچ برای مدیریت زیرساخت شبکه (L2-MGMT)؛
  6. ماشین مجازی با Git و Ansible (VM-AUTOMATION)؛
  7. لپ تاپی که بر روی آن تست و توسعه کتاب های بازی برای Ansible (Laptop-Automation) انجام می شود.

شبکه با یک پروتکل مسیریابی 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. ما رابط های روی سوئیچ هسته (L3-CORE) را که آن را به FW-CLUSTER متصل می کند غیرفعال می کنیم.
  2. ما رابط های موجود در سوئیچ هسته L2-MGMT را که آن را به FW-CLUSTER متصل می کند غیرفعال می کنیم.
  3. ما روتر EMERGENCY را پیکربندی می‌کنیم (به طور پیش‌فرض، همه رابط‌ها روی آن غیرفعال هستند، به جز موارد مرتبط با L2-MGMT):

  • ما رابط ها را در حالت اضطراری فعال می کنیم.
  • ما آدرس IP خارجی (برای NAT) را که در FW-Cluster بود پیکربندی می کنیم.
  • ما درخواست‌های gARP را ایجاد می‌کنیم تا آدرس‌های poppy در جداول arp L3-CORE از FW-Cluster به EMERGENCY تغییر کنند.
  • ما مسیر پیش فرض را به عنوان ثابت در BRD-01، BRD-02 ثبت می کنیم.
  • ایجاد قوانین NAT؛
  • ارتقاء به اورژانس OSPF منطقه 1.
  • ارتقاء به اورژانس OSPF منطقه 2.
  • ما هزینه مسیرهای منطقه 1 را به 10 تغییر می دهیم.
  • هزینه مسیر پیش فرض در منطقه 1 را به 10 تغییر می دهیم.
  • ما آدرس‌های IP مرتبط با L2-MGMT را تغییر می‌دهیم (به آدرس‌هایی که در FW-CLUSTER بودند).
  • ما درخواست‌های gARP را ایجاد می‌کنیم تا آدرس‌های poppy در جداول arp L2-MGMT از FW-CLUSTER به EMERGENCY تغییر کنند.

باز هم به فرمول اصلی مسئله برمی گردیم. ساعت سه صبح، استرس زیاد، اشتباه در هر مرحله می تواند منجر به مشکلات جدیدی شود. آماده تایپ دستورات از طریق CLI هستید؟ آره؟ باشه، حداقل برو صورتت را آبکشی کن، قهوه بنوش و اراده ات را جمع کن.
بروس لطفا به بچه ها کمک کنید

اتوماسیون شبکه موردی از زندگی

خوب، ما همچنان به بهبود اتوماسیون خود ادامه می دهیم.
در زیر نموداری از نحوه عملکرد کتاب بازی در شرایط 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 را فراموش نکنید. ما به هیچ وجه نمی توانیم بر این موضوع تأثیر بگذاریم. ما منتظریم. نتیجه داد. حالا آماده است.

و در روستای ویلاباجو (که نمی خواهد راه اندازی شبکه را خودکار کند) به شستن ظروف ادامه می دهند. بروس (البته که قبلاً متفاوت است، اما نه کمتر) در تلاش است تا بفهمد پیکربندی مجدد دستی تجهیزات چقدر بیشتر خواهد بود.

اتوماسیون شبکه موردی از زندگی

همچنین می خواهم به یک نکته مهم نیز اشاره کنم. چگونه می توانیم همه چیز را پس بگیریم؟ پس از مدتی، ما FW-CLUSTER خود را به زندگی باز می گردانیم. این تجهیزات اصلی است، نه پشتیبان، شبکه باید روی آن اجرا شود.

آیا احساس می کنید که نتورکرها چگونه شروع به فرسودگی کرده اند؟ مدیر فنی هزار استدلال می شنود که چرا نباید این کار را کرد، چرا بعداً می توان این کار را کرد. متأسفانه، این شبکه از مجموعه‌ای از وصله‌ها، تکه‌ها و بقایای تجملات سابقش اینگونه کار می‌کند. معلوم می شود که یک لحاف تکه تکه شده است. وظیفه ما به طور کلی، نه در این شرایط خاص، بلکه به طور کلی در اصل، به عنوان متخصصان فناوری اطلاعات، رساندن کار شبکه به کلمه زیبای انگلیسی "consistency" است، بسیار چند وجهی است، می توان آن را به عنوان: coherence ترجمه کرد. ، سازگاری، منطق، انسجام، نظام مندی، مقایسه پذیری، انسجام. همه چیز درباره اوست. فقط در این حالت شبکه قابل مدیریت است، ما به وضوح درک می کنیم که چه چیزی و چگونه کار می کند، ما به وضوح درک می کنیم که چه چیزی باید تغییر کند، در صورت لزوم، ما به وضوح می دانیم که در صورت بروز مشکلات به کجا نگاه کنیم. و فقط در چنین شبکه ای می توانید ترفندهایی مانند مواردی را که توضیح دادیم انجام دهید.

در واقع یک کتاب بازی دیگر آماده شد که تنظیمات را به حالت اولیه برگرداند. منطق عملکرد آن یکسان است (به یاد داشته باشید که ترتیب کارها بسیار مهم است)، برای اینکه یک مقاله نسبتاً طولانی را طولانی نکنیم، تصمیم گرفتیم لیستی از اجرای کتاب بازی ارسال نکنیم. پس از انجام چنین تمرین هایی، در آینده بسیار آرام تر و مطمئن تر خواهید بود، علاوه بر این، هر عصایی که در آنجا انباشته اید بلافاصله خود را نشان می دهد.

هر کسی می‌تواند برای ما بنویسد و منابع تمام کدهای نوشته شده را به همراه تمام کتاب‌های palybook دریافت کند. مخاطبین در نمایه

یافته ها

به نظر ما، فرآیندهایی که می توانند خودکار شوند، هنوز متبلور نشده اند. بر اساس آنچه که ما با آن مواجه شده ایم و همکاران غربی ما در مورد آن بحث می کنند، موضوعات زیر تا کنون قابل مشاهده است:

  • تهیه دستگاه؛
  • جمع آوری داده ها؛
  • گزارش نویسی؛
  • عیب یابی؛
  • مطابقت

در صورت وجود علاقه، می توانیم بحث را در یکی از موضوعات داده شده ادامه دهیم.

همچنین می خواهم کمی در مورد اتوماسیون صحبت کنم. آنچه باید در درک ما باشد:

  • سیستم باید بدون شخص زندگی کند، در حالی که توسط یک فرد بهبود می یابد. سیستم نباید به انسان وابسته باشد.
  • عملیات باید متخصص باشد. هیچ کلاسی از متخصصان وجود ندارد که کارهای معمولی را انجام دهند. کارشناسانی هستند که کل روال را خودکار کرده اند و فقط مشکلات پیچیده را حل می کنند.
  • کارهای استاندارد روتین به طور خودکار "با لمس یک دکمه" انجام می شود، هیچ منبعی هدر نمی رود. نتیجه چنین کارهایی همیشه قابل پیش بینی و قابل درک است.

و این نکات باید به چه چیزی منجر شود:

  • شفافیت زیرساخت فناوری اطلاعات (خطرات کمتر عملیات، نوسازی، اجرا. خرابی کمتر در سال).
  • توانایی برنامه ریزی منابع IT (سیستم برنامه ریزی ظرفیت - می توانید ببینید چقدر مصرف شده است، می توانید ببینید چه مقدار منابع در یک سیستم واحد مورد نیاز است و نه با نامه نگاری و بازدید از بخش های برتر).
  • امکان کاهش تعداد کارکنان فناوری اطلاعات.

نویسندگان مقاله: الکساندر چلووکوف (CCIE RS، CCIE SP) و پاول کریلوف. ما علاقه مند به بحث و پیشنهاد راه حل هایی در مورد موضوع اتوماسیون زیرساخت فناوری اطلاعات هستیم.


منبع: www.habr.com

اضافه کردن نظر