0Pricing
DevOps Bootcamp · درس

إخراج العقد من Load Balancer ثم إعادة تفعيلها

أخرج العقد وأعدها بأمان

إخراج العقد من Load Balancer ثم إعادة تفعيلها درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

تحديث حركة المرور المباشرة محفوف بالمخاطر

إذا حدّثت خادمًا بينما يستخدمه المستخدمون، فستفشل الطلبات. والحل هو إخراج العُقدة من موازن التحميل أولًا. 🚦

ما المقصود بإخراج العُقدة؟

يعني إخراج العُقدة إيقاف إرسال حركة مرور جديدة إليها مع السماح للطلبات الجارية بالاكتمال. بعد ذلك يصبح تحديثها آمنًا.

دورة الإخراج والتحديث وإعادة التفعيل

يتكون النمط الآمن من ثلاث خطوات: إخراج العُقدة، ونشر التغيير، ثم إعادة تفعيلها في موازن التحميل.

عطّل عُقدة في HAProxy

تضبط وحدة community.general.haproxy عُقدةً خلفية على الحالة المعطّلة، وتخبر HAProxy بالتوقف عن توجيه حركة المرور إليها.

- name: Drain web node
  community.general.haproxy:
    state: disabled
    host: "{{ inventory_hostname }}"
    socket: /var/run/haproxy.sock

شغّل مهمة موازن التحميل من موازن التحميل

توجد واجهة HAProxy على موازن التحميل، لذا استخدم delegate_to لتفويض المهمة إلى مضيف LB، مع الاستمرار في تحديد عُقدة الويب التي يجري إخراجها.

  delegate_to: lb01

انتظر حتى تُستنزف الاتصالات

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

- name: Let traffic drain
  ansible.builtin.wait_for:
    timeout: 30
  delegate_to: localhost

انشر الآن بأمان

بعد إخراج العُقدة من التوزيع، شغّل مهام التحديث: ثبّت الحزم، وادفع التهيئة، وأعد تشغيل التطبيق. لن تتأثر أي حركة مرور مباشرة. 🔧

أعد تفعيل العُقدة

بعد التحديث، اضبط حالة العُقدة على enabled لكي يستأنف HAProxy توجيه حركة المرور إلى خادمك المحدَّث حديثًا.

- name: Re-enable web node
  community.general.haproxy:
    state: enabled
    host: "{{ inventory_hostname }}"
    socket: /var/run/haproxy.sock
  delegate_to: lb01

افحص الصحة قبل إعادة التفعيل

تأكد من أن التطبيق يعمل فعلًا قبل إعادته. ويمنع فحص wait_for أو uri لنقطة نهاية الصحة تقديم الخدمة من عُقدة معطّلة.

- ansible.builtin.uri:
    url: http://localhost:8080/health
    status_code: 200
  retries: 5
  delay: 3

تعامل مع عُقدة واحدة في كل مرة

اجمع هذه الدورة مع serial بحيث لا تُخرَج سوى عُقدة واحدة أو عُقدتين في كل مرة. وتستمر العُقد الأخرى في تقديم الخدمة، مما يحقق عدم التوقف.

- hosts: web
  serial: 1

أعد التفعيل دائمًا، حتى عند الفشل

غلّف النشر داخل block مع always، حتى يعيد التحديث الفاشل العُقدة إلى التوزيع بدلًا من تركها خارج الخدمة.

اختبار سريع

دعونا نتحقق من نمط النشر الآمن.

مراجعة

لتحقيق عدم التوقف، أخرج العُقدة، وانشر التحديث، وافحص صحتها، ثم أعد تفعيلها، عُقدةً واحدةً في كل مرة باستخدام serial وكتلة always. ✅

الأسئلة الشائعة

هل درس «إخراج العقد من Load Balancer ثم إعادة تفعيلها» مجاني؟

نعم — نص درس «إخراج العقد من Load Balancer ثم إعادة تفعيلها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «إخراج العقد من Load Balancer ثم إعادة تفعيلها»؟

أخرج العقد وأعدها بأمان تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «إخراج العقد من Load Balancer ثم إعادة تفعيلها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أتمتة أجهزة الشبكة باستخدام cli_command
  2. delegate_to وrun_once للتنسيق
  3. تنسيق طبقات الويب والتطبيق وقاعدة البيانات
  4. إخراج العقد من Load Balancer ثم إعادة تفعيلها
← العودة إلى DevOps Bootcamp