أتمتة الشبكة. حالة من حياة المرء

يا هبر!

في هذه المقالة نود أن نتحدث عن أتمتة البنية التحتية للشبكة. سيتم عرض مخطط عمل للشبكة التي تعمل في شركة صغيرة ولكنها فخورة جدًا. جميع المطابقات مع معدات الشبكة الحقيقية تكون عشوائية. سننظر في الحالة التي حدثت في هذه الشبكة، والتي كان من الممكن أن تؤدي إلى إغلاق الأعمال لفترة طويلة وخسائر مالية فادحة. يتناسب حل هذه الحالة جيدًا مع مفهوم "أتمتة البنية التحتية للشبكة". باستخدام أدوات التشغيل الآلي، سنوضح كيف يمكنك حل المشكلات المعقدة بشكل فعال في وقت قصير، وسنفكر في سبب ضرورة حل هذه المشكلات بهذه الطريقة وليس بطريقة أخرى (عبر وحدة التحكم).

إخلاء المسئولية

أدواتنا الرئيسية للأتمتة هي Ansible (كأداة للأتمتة) وGit (كمستودع لكتب قواعد Ansible). أود أن أبدي تحفظًا على الفور بأن هذه ليست مقالة تمهيدية، حيث نتحدث عن منطق Ansible أو Git، ونشرح الأشياء الأساسية (على سبيل المثال، ما هي وحدات المهام الوظيفية، أو ملفات المخزون، أو المتغيرات في Ansible، أو ماذا يحدث عندما تقوم بإدخال أوامر git Push أو git Commit). لا تتعلق هذه القصة بكيفية ممارسة Ansible وتكوين NTP أو SMTP على أجهزتك. هذه قصة حول كيف يمكنك حل مشكلة الشبكة بسرعة وبشكل مفضل دون أخطاء. ومن المستحسن أيضًا أن يكون لديك فهم جيد لكيفية عمل الشبكة، ولا سيما ما هي حزمة بروتوكولات TCP/IP، OSPF، BGP. سنحذف أيضًا اختيار Ansible وGit من المعادلة. إذا كنت لا تزال بحاجة إلى اختيار حل معين، فإننا نوصي بشدة بقراءة كتاب "قابلية برمجة وأتمتة الشبكة". مهارات مهندس شبكات الجيل التالي" بقلم جيسون إيدلمان وسكوت إس لوي ومات أوسوالت.

الآن إلى العمل.

صياغة المشكلة

لنتخيل موقفًا: في الساعة الثالثة صباحًا، تكون نائمًا وتحلم. مكالمة هاتفية. المدير الفني يدعو :

- نعم؟
— ###, ####, #####، سقطت مجموعة جدار الحماية ولا ترتفع !!!
تفرك عينيك محاولًا فهم ما يحدث وتخيل كيف يمكن أن يحدث هذا. تسمع عبر الهاتف تمزق شعر رأس المدير، وهو يطلب معاودة الاتصال لأن الجنرال يتصل به على الخط الثاني.

بعد نصف ساعة، قمت بجمع الملاحظات التمهيدية الأولى من نوبة العمل، واستيقظت كل من يمكن إيقاظه. ونتيجة لذلك، لم يكذب المدير الفني، كل شيء كما هو، وسقطت المجموعة الرئيسية من جدران الحماية، ولا تعيده أي حركات أساسية في الجسم إلى رشده. جميع الخدمات التي تقدمها الشركة لا تعمل.

اختر مشكلة حسب ذوقك، سيتذكر الجميع شيئًا مختلفًا. على سبيل المثال، بعد التحديث بين عشية وضحاها في غياب الحمل الثقيل، كل شيء يعمل بشكل جيد، وذهب الجميع إلى السرير سعداء. بدأت حركة المرور تتدفق، وبدأت المخازن المؤقتة للواجهة في التدفق بسبب خطأ في برنامج تشغيل بطاقة الشبكة.

يستطيع جاكي شان وصف الموقف جيدًا.

أتمتة الشبكة. حالة من حياة المرء

شكرا لك جاكي.

ليس الوضع لطيفا للغاية، أليس كذلك؟

دعونا نترك شبكتنا يا أخي مع أفكاره الحزينة لفترة من الوقت.

دعونا نناقش كيف ستتطور الأحداث أكثر.

نقترح الترتيب التالي لعرض المادة

  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 إلى الطوارئ) (الطوارئ)؛
  5. مفاتيح لإدارة البنية التحتية للشبكة (L2-MGMT)؛
  6. آلة افتراضية مع Git وAnsible (VM-AUTOMATION)؛
  7. جهاز كمبيوتر محمول يتم من خلاله اختبار وتطوير أدلة التشغيل الخاصة بـ Ansible (Laptop-Automation).

تم تكوين الشبكة باستخدام بروتوكول توجيه OSPF ديناميكي مع المناطق التالية:

  • المنطقة 0 - المنطقة التي تتضمن أجهزة التوجيه المسؤولة عن نقل حركة المرور في منطقة التبادل؛
  • المنطقة 1 – المنطقة التي تتضمن أجهزة التوجيه المسؤولة عن تشغيل خدمات الشركة؛
  • المنطقة 2 - المنطقة التي تتضمن أجهزة التوجيه المسؤولة عن توجيه حركة مرور الإدارة؛
  • المنطقة N – مناطق شبكات الفروع.

على أجهزة التوجيه الحدودية، يتم إنشاء جهاز توجيه افتراضي (VRF-INTERNET)، حيث يتم تثبيت العرض الكامل لـ eBGP مع AS المخصص له. تم تكوين iBGP بين VRFs. تمتلك الشركة مجموعة من العناوين البيضاء التي يتم نشرها على VRF-INTERNET. يتم توجيه بعض العناوين البيضاء مباشرة إلى FW-CLUSTER (العناوين التي تعمل عليها خدمات الشركة)، ويتم توجيه بعضها عبر منطقة EXCHANGE (خدمات الشركة الداخلية التي تتطلب عناوين IP خارجية، وعناوين NAT الخارجية للمكاتب). بعد ذلك، تنتقل حركة المرور إلى أجهزة التوجيه الافتراضية التي تم إنشاؤها على L3-CORE بعناوين بيضاء ورمادية (مناطق الأمان).

تستخدم شبكة الإدارة محولات مخصصة وتمثل شبكة مخصصة فعليًا. وتنقسم شبكة الإدارة أيضًا إلى مناطق أمنية.
يقوم جهاز توجيه الطوارئ فعليًا ومنطقيًا بتكرار FW-CLUSTER. يتم تعطيل جميع الواجهات الموجودة عليه باستثناء تلك التي تنظر إلى شبكة الإدارة.

الأتمتة ووصفها

لقد اكتشفنا كيفية عمل الشبكة. الآن دعونا نلقي نظرة خطوة بخطوة على ما سنفعله لتحويل حركة المرور من FW-CLUSTER إلى EMERGENCY:

  1. نقوم بتعطيل الواجهات الموجودة على المحول الأساسي (L3-CORE) الذي يربطه بـ FW-CLUSTER؛
  2. نقوم بتعطيل الواجهات الموجودة على مفتاح L2-MGMT kernel الذي يربطه بـ FW-CLUSTER؛
  3. نقوم بتكوين جهاز توجيه الطوارئ (افتراضيًا، يتم تعطيل جميع الواجهات عليه، باستثناء تلك المرتبطة بـ L2-MGMT):

  • نقوم بتمكين الواجهات في حالة الطوارئ؛
  • نقوم بتكوين عنوان IP الخارجي (لـ NAT) الموجود على FW-Cluster؛
  • نقوم بإنشاء طلبات gARP بحيث يتم تغيير عناوين الخشخاش في جداول L3-CORE arp من FW-Cluster إلى EMERGENCY؛
  • نقوم بتسجيل المسار الافتراضي باعتباره ثابتًا لـ BRD-01، BRD-02؛
  • إنشاء قواعد NAT؛
  • رفع إلى منطقة الطوارئ OSPF 1؛
  • رفع إلى منطقة الطوارئ OSPF 2؛
  • قمنا بتغيير تكلفة الطرق في المنطقة 1 إلى 10؛
  • نقوم بتغيير تكلفة المسار الافتراضي في المنطقة 1 إلى 10؛
  • نقوم بتغيير عناوين IP المرتبطة بـ L2-MGMT (إلى تلك التي كانت موجودة على FW-CLUSTER)؛
  • نقوم بإنشاء طلبات gARP بحيث يتم تغيير عناوين الخشخاش في جداول L2-MGMT arp من FW-CLUSTER إلى EMERGENCY.

مرة أخرى، نعود إلى الصيغة الأصلية للمشكلة. الساعة الثالثة صباحًا، ضغط هائل، أي خطأ في أي مرحلة يمكن أن يؤدي إلى مشاكل جديدة. هل أنت مستعد لكتابة الأوامر عبر واجهة سطر الأوامر (CLI)؟ نعم؟ حسنًا، على الأقل اذهب واغسل وجهك واشرب بعض القهوة واجمع قوة إرادتك.
بروس، الرجاء مساعدة الرجال.

أتمتة الشبكة. حالة من حياة المرء

حسنًا، نحن نواصل تحسين التشغيل الآلي لدينا.
يوجد أدناه رسم تخطيطي لكيفية عمل قواعد اللعبة في مصطلحات Ansible. يعكس هذا المخطط ما وصفناه أعلاه، وهو مجرد تطبيق محدد في Ansible.
أتمتة الشبكة. حالة من حياة المرء

في هذه المرحلة، أدركنا ما يجب القيام به، وقمنا بتطوير دليل قواعد اللعبة، وأجرينا الاختبارات، ونحن الآن على استعداد لإطلاقه.

استطراد غنائي صغير آخر. لا ينبغي أن تضللك سهولة القصة. لم تكن عملية كتابة كتيبات اللعب بسيطة وسريعة كما قد تبدو. استغرق الاختبار الكثير من الوقت، وتم إنشاء منصة افتراضية، وتم اختبار الحل عدة مرات، وتم إجراء حوالي 100 اختبار.

هيا بنا نبدأ... هناك شعور بأن كل شيء يحدث ببطء شديد، وهناك خطأ في مكان ما، ولن يعمل شيء ما في النهاية. الشعور بالقفز بالمظلة، ولكن المظلة لا تريد أن تفتح على الفور... وهذا أمر طبيعي.

بعد ذلك، نقرأ نتيجة العمليات التي تم إجراؤها على Ansible Playbook (تم استبدال عناوين 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 إلى الحياة. هذه هي المعدات الرئيسية، وليس النسخ الاحتياطي، ويجب أن تعمل الشبكة عليه.

هل تشعر كيف بدأ المسوقون الشبكيون في الإرهاق؟ سوف يستمع المدير الفني إلى آلاف الحجج لماذا لا ينبغي القيام بذلك، ولماذا يمكن القيام بذلك لاحقًا. لسوء الحظ، هذه هي الطريقة التي تعمل بها الشبكة من مجموعة من الرقع والقطع وبقايا ترفها السابق. اتضح أنه لحاف مرقع. مهمتنا بشكل عام، ليس في هذا الموقف بالتحديد، ولكن بشكل عام من حيث المبدأ، كمتخصصين في تكنولوجيا المعلومات، هي إيصال عمل الشبكة إلى الكلمة الإنجليزية الجميلة "الاتساق"، فهي متعددة الأوجه للغاية، ويمكن ترجمتها على النحو التالي: التماسك ، الاتساق، المنطق، التماسك، المنهجية، المقارنة، التماسك. كل شيء عنه. فقط في هذه الحالة تكون الشبكة قابلة للإدارة، ونحن نفهم بوضوح ما الذي يعمل وكيف يعمل، ونفهم بوضوح ما يجب تغييره، وإذا لزم الأمر، فإننا نعرف بوضوح أين ننظر في حالة ظهور مشاكل. وفقط في مثل هذه الشبكة يمكنك تنفيذ حيل مثل تلك التي وصفناها للتو.

في الواقع، تم إعداد قواعد اللعبة الأخرى، والتي أعادت الإعدادات إلى حالتها الأصلية. منطق عملها هو نفسه (من المهم أن تتذكر أن ترتيب المهام مهم جدًا)، حتى لا نطيل مقالًا طويلًا بالفعل، قررنا عدم نشر قائمة بتنفيذ قواعد اللعبة. بعد إجراء مثل هذه التمارين، ستشعر بمزيد من الهدوء والثقة في المستقبل، بالإضافة إلى ذلك، فإن أي عكازات قمت بتجميعها هناك ستكشف عن نفسها على الفور.

يمكن لأي شخص أن يكتب إلينا ويحصل على مصادر كل التعليمات البرمجية المكتوبة، بالإضافة إلى جميع الكتب الورقية. جهات الاتصال في الملف الشخصي.

النتائج

وفي رأينا أن العمليات التي يمكن أتمتتها لم تتبلور بعد. وبناء على ما واجهناه وما يناقشه زملاؤنا الغربيون، تتجلى حتى الآن المحاور التالية:

  • توفير الجهاز؛
  • جمع البيانات؛
  • الإبلاغ ؛
  • استكشاف الأخطاء وإصلاحها؛
  • الالتزام.

إذا كان هناك اهتمام، يمكننا مواصلة المناقشة حول أحد المواضيع المحددة.

أود أيضًا أن أتحدث قليلاً عن الأتمتة. ما ينبغي أن يكون في فهمنا:

  • يجب أن يعيش النظام بدون شخص، بينما يتم تحسينه بواسطة شخص. لا ينبغي للنظام أن يعتمد على البشر؛
  • يجب أن تكون العملية خبيرة. لا توجد فئة من المتخصصين الذين يؤدون المهام الروتينية. هناك خبراء قاموا بأتمتة الروتين بأكمله وحل المشكلات المعقدة فقط؛
  • يتم تنفيذ المهام القياسية الروتينية تلقائيًا "بلمسة زر واحدة"، ولا يتم إهدار أي موارد. إن نتيجة مثل هذه المهام يمكن التنبؤ بها ومفهومة دائمًا.

وإلى ماذا يجب أن تؤدي هذه النقاط إلى:

  • شفافية البنية التحتية لتكنولوجيا المعلومات (مخاطر أقل للتشغيل والتحديث والتنفيذ. ووقت توقف أقل سنويًا)؛
  • القدرة على تخطيط موارد تكنولوجيا المعلومات (نظام تخطيط القدرات - يمكنك معرفة مقدار الاستهلاك، ويمكنك معرفة عدد الموارد المطلوبة في نظام واحد، وليس عن طريق الرسائل والزيارات إلى الإدارات العليا)؛
  • إمكانية تقليل عدد موظفي تكنولوجيا المعلومات.

مؤلفو المقال: ألكسندر تشيلوفكوف (CCIE RS، CCIE SP) وبافل كيريلوف. نحن مهتمون بمناقشة واقتراح الحلول المتعلقة بموضوع أتمتة البنية التحتية لتكنولوجيا المعلومات.


المصدر: www.habr.com

إضافة تعليق