مشاركة عبر


Use session pools في Azure Container Apps

توفر مجموعات الجلسات أوقات تخصيص الجلسة الفرعية وإدارة دورة حياة كل جلسة.

المفاهيم المشتركة لكلا المجموعتين

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

لإنشاء مجموعات جلسات باستخدام Azure CLI، تأكد من أن لديك أحدث إصدارات Azure CLI وإضافة Azure Container Apps:

# Upgrade the Azure CLI
az upgrade

# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y

تشمل أوامر تجمع الجلسات الشائعة:

  • az containerapp sessionpool create
  • az containerapp sessionpool show
  • az containerapp sessionpool list
  • az containerapp sessionpool update
  • az containerapp sessionpool delete

استخدمها --help مع أي أمر لرؤية الحجج المتاحة والقيم المدعومة.

للتحقق من حالة مجموعة جلسات، استخدم az containerapp sessionpool show الأمر:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

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

Important

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

Important

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

تكوين مجموعة

استخدم az containerapp sessionpool create --help لرؤية أحدث أوراقات CLI لتكوين مجموعة الجلسات. يركز هذا القسم على خيارات التكوين المتقدمة التي تنطبق عبر إصدارات واجهات برمجة التطبيقات.

تكوين دورة حياة الجلسة

عند إنشاء أو تحديث تجمع جلسات، يمكنك ضبط كيفية إنهاء الجلسات عن طريق تعيين properties.dynamicPoolConfiguration.lifecycleConfiguration. بدءا من إصدار 2025-01-01API، اختر أحد نوعين من دورة الحياة.

للحصول على المواصفة الكاملة لواجهة برمجة التطبيقات، راجع مواصفة واجهة برمجة التطبيقات الخاصة ب SessionPools.

محدد الوقت (افتراضي)

مع دورة الحياة Timed ، يتم حذف الجلسة بعد فترة من عدم النشاط. أي طلب يرسل إلى جلسة يعيد ضبط مؤقت التهدئة، مما يمدد مدة الجلسة حتى تصل إلى cooldownPeriodInSecondsحد .

ملحوظة

Timed مدعوم لجميع أنواع تجمع الجلسات ويعمل بنفس الطريقة كما executionType: Timed في إصدارات واجهات برمجة التطبيقات السابقة.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "cooldownPeriodInSeconds": 600,
      "lifecycleType": "Timed"
    }
  }
}
Property Description
cooldownPeriodInSeconds يتم حذف الجلسة عندما لا توجد طلبات لهذه المدة.
maxAlivePeriodInSeconds غير مدعوم لدورة Timed الحياة.

نقطة نهاية الإدارة

Important

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

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

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

يجب أن يتضمن كل طلب API أيضا معامل identifier سلسلة الاستعلام مع معرف الجلسة. يتيح معرف الجلسة الفريد هذا التطبيق من التفاعل مع جلسات محددة. لمعرفة المزيد عن معرفات الجلسات، راجع معرفات الجلسة.

تخزين الصور مؤقتا

عند إنشاء أو تحديث تجمع جلسات، يقوم Azure Container Apps بتخزين صورة الحاوية في المجموعة مؤقتا. يساعد هذا التخزين المؤقت في تسريع عملية إنشاء جلسات جديدة.

أي تغييرات على الصورة لا تنعكس تلقائيا في الجلسات. لتحديث الصورة، قم بتحديث مجموعة الجلسات بعلامة صورة جديدة. استخدم وسم فريد لكل تحديث للصورة لضمان سحب الصورة الجديدة.

تجمع جلسات مترجم الشيفرة

  • Azure CLI
  • مدخل Azure

استخدم الأمر az containerapps sessionpool create لإنشاء المجموعة. المثال التالي ينشئ مجموعة جلسات مفسر شيفرات بايثون باسم my-session-pool. تأكد من استبداله <RESOURCE_GROUP> باسم مجموعة الموارد قبل تنفيذ الأمر.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --location westus2 \
    --container-type PythonLTS \
    --max-sessions 100 \
    --cooldown-period 300 \
    --network-status EgressDisabled

يمكنك تعريف الإعدادات التالية عند إنشاء تجمع جلسات:

الإعداد Description
--container-type نوع مفسر الشيفرة الذي يجب استخدامه. تشمل القيم المدعومة PythonLTS وNodeLTS وShell وCustomContainer.
--max-sessions الحد الأقصى لعدد الجلسات المخصصة المسموح به في نفس الوقت. القيمة القصوى هي 600.
--cooldown-period عدد الثواني المسموح بها في وضع الخمول قبل الإنهاء. يتم إعادة تعيين فترة الخمول في كل مرة يتم فيها استدعاء واجهة برمجة التطبيقات الخاصة بالجلسة. النطاق المسموح به هو بين 300 و 3600.
--network-status يحدد ما إذا كان حركة المرور الصادرة على الشبكة مسموحا بها من الجلسة. القيم الصالحة هي EgressDisabled (الافتراضية) و EgressEnabled.

نقطة نهاية إدارة مفسر الكود

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

النقطة النهائية موجودة في الصيغة https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

لاسترجاع نقطة نهاية واجهة برمجة التطبيقات الإدارية لمجموعة جلسات، راجع القسم المشترك أعلاه لأمر مثالي.

النقاط النهائية التالية متاحة لإدارة الجلسات في مجموعة من المجموعات:

مسار نقطة النهاية Method Description
code/execute POST نفذ الكود في جلسة.
files/upload POST رفع ملف إلى جلسة.
files/content/{filename} GET حمل ملفا من جلسة.
files GET قم بإدراج الملفات في الجلسة.

تقوم ببناء الرابط الكامل لكل نقطة نهاية عن طريق ربط نقطة نهاية واجهة برمجة تطبيقات إدارة المجموعة مع مسار نقطة النهاية. يجب أن تتضمن سلسلة الاستعلام معاملة identifier تحتوي على معرف الجلسة، ومعاملة api-version بالقيمة 2024-02-02-preview. إصدارات API قد تتغير، لذا تأكد دائما من أحدث إصدار في وثائق REST API قبل استخدامها في الإنتاج.

على سبيل المثال: {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

للحصول على مراجع واجهة برمجة التطبيقات REST، انظر واجهات برمجة تطبيقات الحاويات على مستوى البياناتونظرة عامة على عمليات مستوى البيانات في تطبيقات الحاويات.

تجمع جلسات الحاويات المخصصة

لإنشاء مجموعة جلسات حاوية مخصصة، تحتاج إلى توفير صورة حاوية وإعدادات تكوين المجموعة.

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

القدرات التالية تنطبق فقط على مجموعات جلسات الحاويات المخصصة.

نقطة نهاية إدارة الحاويات المخصصة

بالنسبة لتجمعات جلسات الحاويات المخصصة، احصل على نقطة النهاية الإدارية من بوابة Azure أو مخرج Azure CLI. يتم إعادة نقطة النهاية ك poolManagementEndpoint.

النقطة النهائية موجودة في الصيغة https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

OnContainerExit

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

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "maxAlivePeriodInSeconds": 6000,
      "lifecycleType": "OnContainerExit"
    }
  }
}
Property Description
maxAlivePeriodInSeconds أقصى وقت يمكن للجلسة أن تبقى فيه قبل أن يتم حذفها.
cooldownPeriodInSeconds غير مدعوم لدورة OnContainerExit الحياة.

مجسات الحاويات

تسمح مجسات الحاويات بتحديد فحوصات صحة حاويات الجلسات حتى يتمكن الحوض من اكتشاف الجلسات غير الصحية واستبدالها للحفاظ على صحة الهدف readySessionInstances .

تدعم مجموعات الجلسات مسبارات LivenessوStarting . لمزيد من المعلومات حول سلوك المجسات، راجع Health Probes في Azure Container Apps.

عند إنشاء أو تحديث مجموعة جلسات، حدد المجسات في properties.customContainerTemplate.containers. للاطلاع على مخطط جسم الطلب الكامل، راجع مرجع إنشاء أو تحديث API في SessionPools. المثال التالي يوضح تكوينيا جزئيا مع تعريفات المجسات:

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

تتطلب مجموعات جلسات الحاويات المخصصة بيئة Azure Container Apps مفعلة بملفات التحميل العملية. إذا لم يكن لديك بيئة، استخدم az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> الأمر لإنشاء واحدة.

استخدم الأمر az containerapp sessionpool create لإنشاء مجموعة جلسات حاوية مخصصة.

المثال التالي ينشئ مجموعة جلسات تسمى my-session-pool بصورة myregistry.azurecr.io/my-container-image:1.0حاوية مخصصة .

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بالقيم المناسبة لتجمع الجلسات ومعرف الجلسة.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --environment <ENVIRONMENT> \
    --registry-server myregistry.azurecr.io \
    --registry-username <USER_NAME> \
    --registry-password <PASSWORD> \
    --container-type CustomContainer \
    --image myregistry.azurecr.io/my-container-image:1.0 \
    --cpu 0.25 --memory 0.5Gi \
    --target-port 80 \
    --cooldown-period 300 \
    --network-status EgressDisabled \
    --max-sessions 10 \
    --ready-sessions 5 \
    --env-vars "key1=value1" "key2=value2" \
    --location <LOCATION>

ينشئ هذا الأمر مجموعة جلسات مع الإعدادات التالية:

المعلمة‬ قيمة Description
--name my-session-pool اسم مجموعة الجلسات.
--resource-group my-resource-group مجموعة الموارد التي تحتوي على تجمع الجلسات.
--environment my-environment اسم أو معرف الموارد لبيئة تطبيق الحاوية.
--container-type CustomContainer نوع الحاوية في مجموعة الجلسة. يجب أن يكون ذلك CustomContainer لجلسات الحاويات المخصصة.
--image myregistry.azurecr.io/my-container-image:1.0 صورة الحاوية المستخدمة في تجمع الجلسات.
--registry-server myregistry.azurecr.io اسم مضيف خادم سجل الحاويات.
--registry-username my-username اسم المستخدم لتسجيل الدخول إلى سجل الحاويات.
--registry-password my-password كلمة المرور لتسجيل الدخول إلى سجل الحاويات.
--cpu 0.25 المعالج المطلوب بنوى.
--memory 0.5Gi الذاكرة المطلوبة.
--target-port 80 منفذ الجلسة المستخدم لحركة المرور الداخلة.
--cooldown-period 300 عدد الثواني التي يمكن أن تكون فيها الجلسة في وضع الخمول قبل انتهاء الجلسة. يتم إعادة تعيين فترة الخمول في كل مرة يتم فيها استدعاء واجهة برمجة التطبيقات الخاصة بالجلسة. يجب أن تكون القيمة بين 300 و 3600.
--network-status EgressDisabled يحدد ما إذا كان حركة المرور الصادرة على الشبكة مسموحا بها من الجلسة. القيم الصالحة هي EgressDisabled (الافتراضية) و EgressEnabled.
--max-sessions 10 الحد الأقصى لعدد الجلسات التي يمكن تخصيصها في نفس الوقت.
--ready-sessions 5 العدد المستهدف من الجلسات الجاهزة في مجموعة الجلسات طوال الوقت. زد هذا العدد إذا تم تخصيص الجلسات أسرع من تجديد المخزون.
--env-vars "key1=value1" "key2=value2" متغيرات البيئة التي يجب تعيينها في الحاوية.
--location "Supported Location" موقع تجمع الجلسة.

لتحديث مجموعة الجلسات، استخدم الأمر az containerapp sessionpool update .