0Pricing
Ansible Academy · درس

نشر متدرّج خلف Load Balancer

أطلِق الإصدار تسلسليًا دون توقف

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

عدم التوقف هو الوعد

حدّث جميع عُقد الويب دون إسقاط أي طلب واحد. والحيلة هي النشر التدريجي: غيّر عددًا قليلًا من المضيفين في كل مرة. 🔄

يتحكم serial في الدفعة

أضف serial إلى الـ play حتى يعمل Ansible على المضيفين ضمن موجات صغيرة بدلًا من العمل عليها جميعًا دفعةً واحدةً.

- hosts: web
  serial: 1
  tasks:
    - import_role:
        name: webapp

تعمل النسب المئوية أيضًا

يقبل serial نسبةً مئوية أو قائمةً بأحجام الدفعات، حتى تتمكن من زيادة النطاق تدريجيًا: ابدأ بنشر تجريبي، ثم استخدم دفعات أكبر.

serial:
  - 1
  - 25%
  - 50%

أخرج العُقدة قبل لمسها

قبل تحديث عُقدة، أخرجها من التوزيع. استخدم delegate_to لإخبار موازن التحميل بالتوقف عن إرسال حركة المرور إليها.

- name: Drain node
  community.general.haproxy:
    state: disabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

لماذا تستخدم delegate_to مع LB

لا يستطيع مضيف الويب تعطيل نفسه في موازن التحميل؛ بل يجب على موازن التحميل تنفيذ ذلك. ويشغّل delegate_to هذه المهمة على lb1 لكل مضيف ويب.

انشر الإصدار الجديد

بعد إخراج العُقدة، انشر الشفرة، وأنشئ التهيئة، ودَع المعالج يعيد تحميل خدمة التطبيق لذلك المضيف فقط.

- name: Pull release
  ansible.builtin.git:
    repo: "{{ app_repo }}"
    version: "{{ app_version }}"
    dest: /srv/app
  notify: Reload app

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

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

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

أعد التفعيل في موازن التحميل

بعد التأكد من سلامتها، أعد العُقدة إلى التوزيع، مرةً أخرى عبر delegate_to إلى موازن التحميل. وستتجه حركة المرور إلى الإصدار الجديد.

- name: Enable node
  community.general.haproxy:
    state: enabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

يحميك max_fail_percentage

اضبط max_fail_percentage حتى يتوقف النشر إذا فشل عدد كبير جدًا من المضيفين، مما يمنع الإصدار السيئ من الانتشار أكثر.

- hosts: web
  serial: 1
  max_fail_percentage: 20

run_once للخطوات المشتركة

يجب تنفيذ بعض الخطوات، مثل ترحيل db لمرة واحدة، مرةً واحدةً فقط. استخدم run_once حتى ينفذها مضيف واحد فقط.

- name: Migrate db
  ansible.builtin.command: /srv/app/migrate
  run_once: true

الدورة بأكملها

لكل مضيف: أخرج العُقدة، وانشر التحديث، وافحص الصحة، ثم أعد التفعيل. ويكرر serial هذه الدورة ضمن موجات آمنة حتى يتم تحديث مجموعة المضيفين بأكملها. ✅

اختبار سريع

تجعل كلمة مفتاحية واحدة خطوة LB تعمل.

مراجعة

أنشأت نشرًا تدريجيًا: دفعات ينظمها serial، وإخراج العُقد وإعادة تفعيلها عبر delegate_to، وفحوصات للصحة، وحاجزًا عند الفشل. دون توقف. 🟢

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

هل درس «نشر متدرّج خلف Load Balancer» مجاني؟

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

ماذا ستتعلم في «نشر متدرّج خلف Load Balancer»؟

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

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

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

كم من الوقت يستغرق درس «نشر متدرّج خلف Load Balancer»؟

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

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

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

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

  1. هندسة المشروع: Roles وInventory
  2. تجهيز المضيفين وتأمينهم وتهيئتهم الأولية
  3. نشر متدرّج خلف Load Balancer
  4. اختبارات Smoke والتراجع والإشعارات
← العودة إلى Ansible Academy