مشاركة عبر


تكوين فحوصات الاستعداد

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

توضح هذه المقالة كيفية توزيع مجموعة حاويات تتضمن فحص الجاهزية، بحيث تتلقى الحاوية نسبة استخدام الشبكة عند نجاح الفحص فقط.

تدعم مثيلات حاوية Azure أيضاً أدوات الفحص الحيوية، والتي يمكنك تكوينها لتقوم بإعادة تشغيل الحاوية غير السليمة تلقائياً.

تكوين YAML

على سبيل المثال، قم بإنشاء ملف readiness-probe.yaml مع القصاصة البرمجية التالية التي تتضمن فحص الجاهزية. يحدد هذا الملف مجموعة حاويات تتكون من حاوية تقوم بتشغيل تطبيق ويب صغير. يتم توزيع التطبيق من الصورة العامة mcr.microsoft.com/azuredocs/aci-helloworld. يتم أيضاً توضيح تطبيق الحاوية هذا في توزيع مثيل حاوية في Azure باستخدام Azure CLI وغيرها من تعليمات التشغيل السريع.

apiVersion: 2019-12-01
location: eastus
name: readinesstest
properties:
  containers:
  - name: mycontainer
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      command:
        - "/bin/sh"
        - "-c"
        - "node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait"
      ports:
      - port: 80
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      readinessProbe:
        exec:
          command:
          - "cat"
          - "/tmp/ready"
        periodSeconds: 5
  osType: Linux
  restartPolicy: Always
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '80'
tags: null
type: Microsoft.ContainerInstance/containerGroups

ابدأ الأمر

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

أولاً، يقوم ببدء جلسة shell وتشغيل الأمر node لبدء تشغيل تطبيق الويب. كما يبدأ أمراً بالسكون لمدة 240 ثانية، وبعد ذلك يقوم بإنشاء ملف يسمى ready داخل الدليل /tmp:

node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait

أمر الجاهزية

يعرف readinessProbe ملف YAML هذا الذي يدعم exec أمر الاستعداد الذي يعمل كتحقق من الجاهزية. يختبر أمر الاستعداد هذا كمثال وجود الملف ready في الدليل /tmp.

ready عندما لا يكون الملف موجودا، يتم إنهاء أمر الجاهزية بقيمة غير صفرية؛ تستمر الحاوية في التشغيل ولكن لا يمكن الوصول إليها. عند إنهاء الأمر بنجاح باستخدام التعليمة البرمجية للخروج 0، تكون الحاوية جاهزة للوصول.

تحدد الخاصية periodSeconds أن أمر الجاهزية يجب أن ينفذ كل 5 ثوانٍ. يتم تشغيل فحص الجاهزية لمجموعة الحاويات طوال مدة بقائها.

مثال للتوزيع

قم بتشغيل الأمر التالي لتوزيع مجموعة حاويات باستخدام تكوين YAML السابق:

az container create --resource-group myResourceGroup --file readiness-probe.yaml

عرض فحوصات الاستعداد

في هذا المثال، أثناء أول 240 ثانية، يفشل أمر الجاهزية عند التحقق من وجود الملف ready. يقوم رمز الحالة بإرجاع إشارات توضح أن الحاوية غير جاهزة.

يمكن عرض هذه الأحداث من مدخل Microsoft Azure أو Azure CLI. على سبيل المثال، يعرض المدخل أنه يتم تشغيل الأحداث من النوع Unhealthy عند فشل أمر الجاهزية.

بوابة حدث غير صحي

التحقق من جاهزية الحاوية

بعد بدء تشغيل الحاوية، يمكنك التحقق من عدم إمكانية الوصول إليها في البداية. بعد تكوين إعدادات تشغيل الخدمة، احصل على عنوان IP لمجموعة الحاويات:

az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv

حاول الوصول إلى الموقع أثناء فشل فحص الجاهزية:

wget <ipAddress>

يظهر الإخراج أن الموقع غير قابل للوصول في البداية:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...

بعد 240 ثانية، ينجح أمر الجاهزية، ما يشير إلى أن الحاوية جاهزة. الآن، عندما تقوم بتشغيل الأمر wget، فإنه يعمل على نجاح ما يلي:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...200 OK
Length: 1663 (1.6K) [text/html]
Saving to: ‘index.html.1’

index.html.1                       100%[===============================================================>]   1.62K  --.-KB/s    in 0s

2019-10-15 16:49:38 (113 MB/s) - ‘index.html.1’ saved [1663/1663]

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

إشعار

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

الخطوات التالية

يمكن أن يكون فحص الجاهزية مفيداً في السيناريوهات التي تتضمن مجموعات متعددة الحاويات تتكون من حاويات تابعة. لمزيد من المعلومات حول سيناريوهات الحاويات المتعددة، راجع مجموعات الحاويات في مثيلات حاوية Azure.