اقرأ باللغة الإنجليزية

مشاركة عبر


كيفية تكوين تحقيقات السلامة وفترات الإنهاء بأمان للتطبيقات المستضافة في Azure Spring Apps

ملاحظة

سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.

سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.

تنطبق هذه المقالة على:✅ Java ✅ C#‎

تنطبق هذه المقالة على:✅ Basic/Standard ✅ Enterprise

توضح لك هذه المقالة كيفية تخصيص التطبيقات التي تعمل في Azure Spring Apps مع فحوصات السلامة وفترات الإنهاء بأمان.

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

  • تنفيذ أمر عشوائي من اختيارك داخل مثيل التطبيق.
  • إنشاء اتصال مأخذ توصيل TCP.
  • إجراء طلب HTTP.

تقدم Azure Spring Apps قواعد فحص السلامة الافتراضية لكل تطبيق. توضح لك هذه المقالة كيفية تخصيص التطبيق الخاص بك مع ثلاثة أنواع من تحقيقات السلامة:

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

  • تحدد فحوصات الجاهزية متى يكون مثيل التطبيق جاهزا لبدء قبول نسبة استخدام الشبكة. على سبيل المثال، يمكن لفحوصات الجاهزية التحكم في مثيلات التطبيق التي يتم استخدامها كخلفيات للتطبيق. عندما لا يكون مثيل التطبيق جاهزا، تتم إزالته من اكتشاف خدمة Kubernetes. لمزيد من المعلومات، راجع اكتشاف تطبيقات Spring Boot وتسجيلها. لمزيد من المعلومات حول اكتشاف الخدمة باستخدام خطة المؤسسة، راجع استخدام سجل خدمة Tanzu.

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

المتطلبات الأساسية

  • Azure CLI مع ملحق Azure Spring Apps. استخدم الأمر التالي لإزالة الإصدارات السابقة وتثبيت أحدث ملحق. إذا قمت مسبقا بتثبيت ملحق spring-cloud، قم بإلغاء تثبيته لتجنب عدم تطابق التكوين والإصدار.

    Azure CLI
    az extension remove --name spring
    az extension add --name spring
    az extension remove --name spring-cloud
    

تكوين تحقيقات السلامة والإنهاء بأمان للتطبيقات

تصف الأقسام التالية كيفية تكوين فحوصات السلامة والإنهاء بأمان باستخدام Azure CLI.

إنهاء رشيق

يصف الجدول التالي الخاصية terminationGracePeriodSeconds ، والتي يمكنك استخدامها لتكوين الإنهاء بأمان.

اسم الخاصية ‏‏الوصف
terminationGracePeriodSeconds ترسل المدة بالثوان بعد العمليات التي تعمل في مثيل التطبيق إشارة إنهاء قبل إيقافها قسرا. قم بتعيين هذه القيمة لفترة أطول من وقت التنظيف المتوقع للعملية. يجب أن تكون القيمة عددا صحيحا غير سالب. يؤدي تعيين فترة السماح إلى 0 إلى إيقاف مثيل التطبيق على الفور عبر إشارة الإيقاف، مع عدم وجود فرصة لإيقاف التشغيل. إذا كانت القيمة لا قيمة لها، فإن Azure Spring Apps تستخدم فترة السماح الافتراضية. القيمة الافتراضية هي 90.

خصائص فحص السلامة

يصف الجدول التالي الخصائص التي يمكنك استخدامها لتكوين فحوصات السلامة.

اسم الخاصية ‏‏الوصف
initialDelaySeconds عدد الثوان بعد بدء مثيل التطبيق قبل بدء الفحوصات. القيمة الافتراضية هي 0، الحد الأدنى للقيمة.
periodSeconds التردد بالثوان لإجراء الفحص. القيمة الافتراضية هي 10. الحد الأدنى للقيمة هو 1.
timeoutSeconds عدد الثوان حتى انقضاء مهلة الفحص. القيمة الافتراضية هي 1، الحد الأدنى للقيمة.
failureThreshold الحد الأدنى لعدد حالات الفشل المتتالية للمسبار الذي سيتم اعتباره فاشلا بعد نجاحه. القيمة الافتراضية هي 3. الحد الأدنى للقيمة هو 1.
successThreshold الحد الأدنى لعدد النجاحات المتتالية للمسبار ليتم اعتباره ناجحا بعد فشله. القيمة الافتراضية هي 1. يجب أن تكون القيمة 1 للحيوية وبدء التشغيل. الحد الأدنى للقيمة هو 1.

خصائص إجراء الفحص

هناك ثلاث طرق يمكنك من خلالها التحقق من مثيل التطبيق باستخدام مسبار. يجب أن يحدد كل مسبار أحد إجراءات الفحص التالية:

  • HTTPGetAction

    تنفيذ طلب HTTP GET مقابل مثيل التطبيق على مسار محدد. يعتبر التشخيص ناجحا إذا كانت الاستجابة تحتوي على رمز حالة أكبر من أو يساوي 200 وأقل من 400.

    اسم الخاصية ‏‏الوصف
    scheme المخطط الذي يجب استخدامه للاتصال بالمضيف. الإعداد الافتراضي هو HTTP.
    path مسار الوصول على خادم HTTP لمثيل التطبيق، مثل /healthz.
  • ExecAction

    تنفيذ أمر محدد داخل مثيل التطبيق. يعتبر التشخيص ناجحا إذا خرج الأمر برمز الحالة 0.

    اسم الخاصية ‏‏الوصف
    command الأمر الذي يجب تنفيذه داخل مثيل التطبيق. دليل العمل للأمر هو الدليل الجذر (/) في نظام ملفات مثيل التطبيق. لأن الأمر يتم تشغيله باستخدام exec بدلا من داخل shell، لن تعمل تعليمات shell. لاستخدام shell، قم باستدعاء shell بشكل صريح. يتم التعامل مع حالة الخروج من 0 على أنها حية/سليمة، وغير صفرية غير صحية.
  • TCPSocketAction

    إجراء فحص TCP مقابل مثيل التطبيق.

    لا توجد خصائص متوفرة للإجراء TCPSocketAction .

تخصيص التطبيق الخاص بك

استخدم الخطوات التالية لتخصيص التطبيق الخاص بك باستخدام مدخل Microsoft Azure.

  1. ضمن الإعدادات، حدد التطبيقات، ثم حدد التطبيق من القائمة.

    لقطة شاشة لمدخل Azure تعرض صفحة التطبيقات.

  2. حدد Configuration في جزء التنقل الأيمن، وحدد Health probes، ثم حدد Health probe properties.

    لقطة شاشة لصفحة تكوين مدخل Microsoft Azure تعرض علامة التبويب Health probes.

  3. لتعيين فترة سماح الإنهاء، حدد الإعدادات العامة، وحدد قيمة في مربع فترة سماح الإنهاء.

    لقطة شاشة لصفحة تكوين مدخل Microsoft Azure تعرض علامة التبويب الإعدادات العامة.

أفضل الممارسات

استخدم أفضل الممارسات التالية عند إضافة تحقيقات السلامة إلى Azure Spring Apps:

  • استخدم فحوصات الحياة والجاهزية معا. توفر Azure Spring Apps نهجين لاكتشاف الخدمة في نفس الوقت. عند فشل فحص الجاهزية، تتم إزالة مثيل التطبيق فقط من اكتشاف خدمة Kubernetes. يمكن لفحص الحياة الذي تم تكوينه بشكل صحيح إزالة مثيل التطبيق الصادر من اكتشاف خدمة يوريكا لتجنب الحالات غير المتوقعة. لمزيد من المعلومات حول اكتشاف الخدمة، راجع اكتشاف تطبيقات Spring Boot وتسجيلها. لمزيد من المعلومات حول اكتشاف الخدمة باستخدام خطة المؤسسة، راجع استخدام سجل خدمة Tanzu.

  • عند بدء تشغيل مثيل تطبيق، يحدث الفحص الأول بعد التأخير المحدد بواسطة initialDelaySeconds. تحدث الفحوصات اللاحقة بشكل دوري، وفقا لطول الفترة المحددة بواسطة periodSeconds. إذا فشل التطبيق في الاستجابة للطلبات عدة مرات كما هو محدد بواسطة failureThreshold، تتم إعادة تشغيل مثيل التطبيق. تأكد من أن التطبيق الخاص بك يمكن أن يبدأ بسرعة كافية، أو تحديث هذه المعلمات، بحيث يكون إجمالي المهلة initialDelaySeconds + periodSeconds * failureThreshold أطول من وقت بدء التطبيق الخاص بك.

  • بالنسبة لتطبيقات Spring Boot، يتم شحن Spring Boot مع دعم المجموعات الصحية، ما يسمح للمطورين بتحديد مجموعة فرعية من المؤشرات الصحية وتجميعها ضمن حالة صحية واحدة مترابطة. لمزيد من المعلومات، راجع تحقيقات الحياة والجاهزية مع Spring Boot على مدونة Spring.

    يوضح المثال التالي مسبار فعالية مع Spring Boot:

    JSON
    "probe": {
           "initialDelaySeconds": 30,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 30,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/liveness"
           }
       }
    

    يوضح المثال التالي فحص الاستعداد مع Spring Boot:

    JSON
    "probe": {
           "initialDelaySeconds": 0,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 3,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/readiness"
           }
       }
    

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

يوفر هذا القسم إجابات على الأسئلة المتداولة حول استخدام تحقيقات السلامة مع Azure Spring Apps.

  • تلقيت استجابة 400 عندما أنشأت تطبيقات مع تحقيقات صحية مخصصة. ما معنى ذلك؟

    تشير رسالة الخطأ إلى المسبار المسؤول عن فشل التوفير. تأكد من صحة قواعد فحص السلامة وأن المهلة طويلة بما يكفي للتطبيق ليكون في حالة التشغيل.

  • ما هي إعدادات الفحص الافتراضية لتطبيق موجود؟

    يوضح المثال التالي الإعدادات الافتراضية:

    JSON
    "startupProbe": null,
    "livenessProbe": {
        "disableProbe": false,
        "failureThreshold": 3,
        "initialDelaySeconds": 300,
        "periodSeconds": 10,
        "probeAction": {
            "type": "TCPSocketAction"
        },
        "successThreshold": 1,
        "timeoutSeconds": 3
    },
    "readinessProbe": {
        "disableProbe": false,
        "failureThreshold": 3,
        "initialDelaySeconds": 0,
        "periodSeconds": 5,
        "probeAction": {
            "type": "TCPSocketAction"
        },
        "successThreshold": 1,
        "timeoutSeconds": 3
    }
    

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