إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تدير Azure Container Apps القياس الأفقي التلقائي من خلال مجموعة من قواعد القياس التعريفية. يمكنك إنشاء قواعد المقياس الخاصة بك مع مصادر أحداث مخصصة.
في هذا البرنامج التعليمي، يمكنك إضافة قاعدة مقياس مخصصة لتوسيع نطاق تطبيق الحاوية باستخدام مقاييس Java ومراقبة كيفية تحجيم التطبيق الخاص بك.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب بالفعل، يمكنك إنشاء حساب مجانا.
- Azure CLI.
- تطبيق Java تم نشره في Azure Container Apps.
إعداد البيئة
استخدم الخطوات التالية لتعريف متغيرات البيئة وإعداد البيئة.
إنشاء متغيرات لدعم تكوين المقياس الخاص بك.
export LOCATION=eastus export TENANT_ID={tenant-id} export SUBSCRIPTION_ID={subscription-id} export RESOURCE_GROUP=my-resource-group export APP_NAME=my-aca-app export IDENTITY_NAME=my-identityالمتغير الوصف LOCATIONموقع منطقة Azure حيث تقوم بإنشاء Azure Container Apps. TENANT_IDمعرف المستأجر الخاص بك. SUBSCRIPTION_IDمعرف الاشتراك، الذي تستخدمه لإنشاء تطبيقات حاوية Azure الخاصة بك. RESOURCE_GROUPاسم مجموعة موارد Azure لتطبيقات حاوية Azure. APP_NAMEاسم التطبيق لتطبيقات حاوية Azure. IDENTITY_NAMEاسم هويتك المدارة، التي تم تعيينها إلى Azure Container Apps. سجل الدخول إلى Azure باستخدام Azure CLI.
az login
إعداد هوية مدارة لتطبيقات حاوية Azure
للتحجيم باستخدام مقاييس النظام الأساسي ل Azure Container Apps، تحتاج إلى هوية مدارة للوصول إلى المقاييس من Azure Monitor.
إنشاء هوية معينة من قبل المستخدم وتعيينها إلى Azure Container Apps. يمكنك اتباع المستند إضافة هوية معينة من قبل المستخدم. بعد إنشاء الهوية، قم بتشغيل الأمر CLI لتعيين معرف الهوية.
USER_ASSIGNED_IDENTITY_ID=$(az identity show --resource-group $RESOURCE_GROUP --name $IDENTITY_NAME --query "id" --output tsv)Monitoring Readerامنح دور هويتك المدارة لقراءة البيانات من Azure Monitor. يمكنك العثور على مزيد من التفاصيل حول أدوار Azure Monitor في الأدوار المضمنة في Azure ل Monitor.# Get the principal ID for your managed identity PRINCIPAL_ID=$(az identity show --resource-group $RESOURCE_GROUP --name $IDENTITY_NAME --query "principalId" --output tsv) az role assignment create --assignee $PRINCIPAL_ID --role "Monitoring Reader" --scope /subscriptions/$SUBSCRIPTION_ID
إضافة قاعدة مقياس باستخدام مقاييس Azure Monitor
للتوسع باستخدام مقاييس Azure Monitor، يمكنك الرجوع إلى مقياس Azure Monitor Kubernetes Event-driven Autoscaling (KEDA) لتعريف قاعدة مقياس تطبيقات الحاويات الخاصة بك.
فيما يلي قائمة ببيانات التعريف الأساسية لإعداد قاعدة المقياس.
| مفتاح بيانات التعريف | الوصف |
|---|---|
| tenantId | معرف المستأجر الذي يحتوي على مورد Azure. |
| subscriptionId | معرف اشتراك Azure الذي يحتوي على مورد Azure. |
| resourceGroupName | اسم مجموعة الموارد لمورد Azure. |
| مورد عنوان URI | URI مختصر إلى مورد Azure بالتنسيق <resourceProviderNamespace>/<resourceType>/<resourceName>. |
| metricName | اسم المقياس للاستعلام. |
| نوع تجميع المقاييس | أسلوب التجميع لمقياس Azure Monitor. تتضمن الخيارات المتوسط والإجمالي والحد الأقصى. |
| metricFilter | اسم عامل التصفية ليكون أكثر تحديدا باستخدام الأبعاد المدرجة في الوثائق الرسمية. (اختياري) |
| metricAggregationInterval | وقت جمع المقياس في الصيغة hh:mm:ss (الافتراضي: 0:5:0، اختياري) |
| قيمة الهدف | القيمة المستهدفة لتشغيل إجراءات التحجيم. (يمكن أن تكون هذه القيمة عائمة) |
أضف قاعدة مقياس باستخدام مقاييس Azure Monitor لتطبيقك في Azure Container Apps .
az containerapp update \
--name $APP_NAME \
--resource-group $RESOURCE_GROUP \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name scale-with-azure-monitor-metrics \
--scale-rule-type azure-monitor \
--scale-rule-metadata "tenantId=${TENANT_ID}" \
"subscriptionId=${SUBSCRIPTION_ID}" \
"resourceGroupName=${RESOURCE_GROUP}" \
"resourceURI=Microsoft.App/containerapps/${APP_NAME}" \
"metricName=JvmGcCount" \
"metricAggregationType=Total" \
"metricAggregationInterval=0:1:0" \
"targetValue=30" \
--scale-rule-identity $USER_ASSIGNED_IDENTITY_ID
يضيف هذا الأمر قاعدة مقياس إلى تطبيق الحاوية الخاص بك بالاسم scale-with-azure-monitor-metrics
- يتم تعيين نوع المقياس إلى
azure-monitor. - يستخدم KEDA الهوية المدارة مع معرف
USER_ASSIGNED_IDENTITY_IDالمورد للمصادقة مع Azure Monitor ومقاييس الاستعلام لتطبيق الحاوية. - يستعلم KEDA عن المقياس
JvmGcCount، ويجمع قيم القياس في غضون دقيقة واحدة مع نوعTotalالتجميع . - يتم تعيين القيمة الهدف إلى
30، ما يعني أن KEDA تحسبdesiredReplicasباستخدامceil(AggregatedMetricValue(JvmGcCount)/30).
إشعار
يتم استخدام المقياس JvmGcCount فقط كمثال. يمكنك استخدام أي مقياس من Azure Monitor. قبل إعداد قاعدة المقياس، اعرض المقاييس في مدخل Microsoft Azure لتحديد المقياس المناسب، والفاصل الزمني للتجميع، والقيمة الهدف بناء على متطلبات التطبيق الخاص بك. بالإضافة إلى ذلك، ضع في اعتبارك استخدام قواعد مقياس HTTP/TCP المضمنة، والتي يمكن أن تفي بسيناريوهات التحجيم الأكثر شيوعا، قبل اختيار مقياس مخصص.
عرض التحجيم في مدخل Microsoft Azure (اختياري)
بمجرد أن تصبح المراجعة الجديدة جاهزة، أرسل طلبات إلى تطبيق الحاوية لتشغيل المقياس التلقائي باستخدام مقاييس Java.
- انتقل إلى الجزء
Metricsفي مدخل Microsoft Azure لتطبيقات حاوية Azure. - أضف مخططا، واستخدم المقياس
jvm.gc.count، مع عامل التصفيةRevision=<your-revision>، والتجميع باستخدامSum، وتقسيم حسبReplica. يمكنك مشاهدة قيمة القياس لكل نسخةJvmGcCountمتماثلة في هذه الدردشة. - أضف مخططا، واستخدم المقياس
jvm.gc.count، مع عامل التصفيةRevision=<your-revision>والتجميع باستخدامSum. يمكنك مشاهدة إجمالي قيمة القياس المجمعةJvmGcCountللمراجعة في هذه الدردشة. - أضف مخططا، واستخدم المقياس
Replica Count، مع عامل التصفيةRevision=<your-revision>والتجميع باستخدامMax. يمكنك مشاهدة عدد النسخ المتماثلة للمراجعة في هذه الدردشة.
فيما يلي عينة لقطة قياس لقاعدة مقياس المثال.
- في البداية، هناك نسخة متماثلة واحدة ()
minReplicasللتطبيق. - يؤدي ارتفاع الطلب إلى تعرض تطبيق جافا لجمع نفايات متكرر من خلال الآلة الافتراضية (JVM).
- تلاحظ KEDA زيادة قيمة المقياس المجمعة ل
jvm.gc.countإلى256، وحسابdesiredReplicasالقيمة كceil(256/30)=9. - تقوم KEDA بتوسيع عدد النسخ المتماثلة لتطبيق الحاوية إلى 9.
- يتم توزيع حركة مرور http عبر المزيد من النسخ المتماثلة، ما يقلل من متوسط عدد GC.
- ينخفض عدد GC بشكل أكبر عند عدم وجود طلبات.
- بعد فترة التوقف، يقوم KEDA بتحجيم عدد النسخ المتماثلة وصولا إلى
minReplicas=1.
سجل المقياس
لعرض سجلات مقياس KEDA، يمكنك تشغيل الاستعلام في Logs شفرة.
ContainerAppSystemLogs
| where RevisionName == "<your-revision>"
| where EventSource == "KEDA"
| project TimeGenerated, Type, Reason, ContainerAppName, Log
تنظيف الموارد
الموارد التي تم إنشاؤها في هذا البرنامج التعليمي لها تأثير على فاتورة Azure. إذا كنت لن تستخدم هذه الخدمات على المدى الطويل، فقم بتشغيل الأمر التالي لإزالة كل شيء تم إنشاؤه في هذا البرنامج التعليمي.
az group delete --resource-group $RESOURCE_GROUP