إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
IoT Edge 1.5
Important
IoT Edge 1.5 LTS هو الإصدار المدعوم. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي اعتبارا من 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
عندما تكون مستعدا لأخذ حل IoT Edge الخاص بك من التطوير إلى الإنتاج، تأكد من تكوينه للأداء المستمر.
ليست كل المعلومات الواردة في هذه المقالة بنفس القدر من الأهمية. لمساعدتك على تحديد الأولويات، يبدأ كل قسم بقوائم تقسم العمل إلى مجموعتين: من المهم إكماله قبل الانتقال إلى الإنتاج، أو من المفيد معرفته.
Device configuration
يمكن أن تكون أجهزة IoT Edge أي شيء من Raspberry Pi إلى كمبيوتر محمول أو جهاز ظاهري يعمل على خادم. يمكنك الوصول إلى الجهاز فعليا أو من خلال اتصال ظاهري، أو يمكن عزله لفترات طويلة. في كلتا الحالتين، تأكد من تكوينه للعمل بشكل مناسب.
Important
- قم بتثبيت شهادات الإنتاج
- لديك خطة إدارة الأجهزة
- استخدم Moby كمحرك الحاوية. إذا كنت تستخدم محاذاة Ubuntu Core، يتم صيانة محاذاة Docker بواسطة Canonical ويتم دعمها لسيناريوهات الإنتاج.
Helpful
- اختيار بروتوكول المصدر
قم بتثبيت شهادات الإنتاج
يحتاج كل جهاز IoT Edge قيد الإنتاج إلى تثبيت شهادة مرجع مصدق للجهاز عليه. ثم يتم تعريف شهادة المرجع المصدق هذه إلى وقت تشغيل IoT Edge في ملف التكوين. للتطوير والاختبار، ينشئ وقت تشغيل IoT Edge شهادات مؤقتة إذا لم يتم الإعلان عن أي شهادات في ملف التكوين. ولكن تنتهي صلاحية هذه الشهادات المؤقتة بعد ثلاثة أشهر وهي غير آمنة لسيناريوهات الإنتاج. بالنسبة لسيناريوهات الإنتاج، قم بتوفير شهادة Edge CA الخاصة بك، إما من مرجع مصدق موقع ذاتيا أو شهادة تم شراؤها من مرجع مصدق تجاري.
لفهم دور شهادة المرجع المصدق Edge، راجع كيفية استخدام Azure IoT Edge للشهادات.
لمزيد من المعلومات حول تثبيت الشهادات على جهاز IoT Edge والرجوع إليها من ملف التكوين، راجع إدارة الشهادة على جهاز IoT Edge.
لديك خطة إدارة الأجهزة
قبل وضع أي جهاز في الإنتاج، ضع في اعتبارك كيفية إدارة التحديثات المستقبلية. بالنسبة لجهاز IoT Edge، يمكن أن تتضمن قائمة المكونات التي يجب تحديثها ما يلي:
- Device firmware
- مكتبات نظام التشغيل
- محرك الحاوية، مثل Moby
- IoT Edge
- CA certificates
تحديث الجهاز ل IoT Hub هي خدمة تتيح لك نشر التحديثات عبر الهواء (OTA) لأجهزة IoT Edge.
تتطلب الطرق الأخرى لتحديث IoT Edge الوصول الفعلي أو SSH إلى جهاز IoT Edge. لمزيد من المعلومات، راجع تحديث وقت تشغيل IoT Edge. لتحديث أجهزة متعددة، ضع في اعتبارك إضافة خطوات التحديث إلى برنامج نصي أو استخدام أداة أتمتة مثل Ansible.
Container engine
مطلوب محرك حاوية لأي جهاز IoT Edge. يتم دعم محرك moby في الإنتاج. إذا كنت تستخدم محاذاة Ubuntu Core، يتم صيانة محاذاة Docker بواسطة Canonical ويتم دعمها لسيناريوهات الإنتاج. تعمل محركات الحاويات الأخرى، مثل Docker، مع IoT Edge ولا بأس من استخدام هذه المحركات للتطوير. يمكن إعادة توزيع المحرك المحمول عند استخدامه مع Azure IoT Edge، وتوفر Microsoft خدمة لهذا المحرك.
اختيار بروتوكول المصدر
يمكنك تكوين البروتوكول (الذي يحدد المنفذ المستخدم) للاتصال المصدر إلى IoT Hub لكل من عامل IoT Edge ومركز IoT Edge. البروتوكول الافتراضي هو AMQP، ولكن قد تحتاج إلى تغيير ذلك استنادا إلى إعداد الشبكة.
تحتوي كلتا الوحدتين النمطية لوقت التشغيل على متغير بيئة UpstreamProtocol . القيم صالحة للمتغير هي:
- MQTT
- AMQP
- MQTTWS
- AMQPWS
تكوين متغير UpstreamProtocol لعامل IoT Edge في ملف التكوين على الجهاز نفسه. على سبيل المثال، إذا كان جهاز IoT Edge خلف خادم وكيل يحظر منافذ AMQP، فقد تحتاج إلى تكوين عامل IoT Edge لاستخدام AMQP عبر WebSocket (AMQPWS) لإنشاء الاتصال الأولي ب IoT Hub.
بعد توصيل جهاز IoT Edge، استمر في تكوين متغير UpstreamProtocol لكلا الوحدتين النمطيتين لوقت التشغيل في عمليات النشر المستقبلية. على سبيل المثال، راجع تكوين جهاز IoT Edge للاتصال من خلال خادم وكيل.
Deployment
-
Helpful
- الاتساق مع بروتوكول المصدر
- إعداد تخزين مضيف لوحدات النظام
- تقليل مساحة الذاكرة المستخدمة من قبل مركز IoT Edge
- استخدام صور الوحدة النمطية الصحيحة في بيانات التوزيع
- ضع في اعتبارك حدود حجم التوأم عند استخدام الوحدات النمطية المخصصة
- تكوين كيفية تطبيق التحديثات على الوحدات النمطية
الاتساق مع بروتوكول المصدر
إذا قمت بتكوين عامل IoT Edge على جهاز IoT Edge الخاص بك لاستخدام بروتوكول مختلف عن AMQP الافتراضي، فيجب عليك إعلان نفس البروتوكول في جميع عمليات التوزيع المستقبلية. على سبيل المثال، إذا كان جهاز IoT Edge الخاص بك خلف خادم عامل يحظر منافذ AMQP، فمن المحتمل أنك قمت بتكوين الجهاز للاتصال عبر AMQP عبر WebSocket (AMQPWS). عند نشر الوحدات النمطية على الجهاز، قم بتكوين نفس بروتوكول AMQPWS لعامل IoT Edge ومركز IoT Edge، وإلا فإن AMQP الافتراضي يتجاوز الإعدادات ويمنعك من الاتصال مرة أخرى.
ما عليك سوى تكوين متغير البيئة UpstreamProtocol لعامل IoT Edge ووحدات محور IoT Edge. تعتمد أي وحدات نمطية إضافية أي بروتوكول يتم تعيينه في الوحدات النمطية لوقت التشغيل.
يتم توفير مثال على هذه العملية في تكوين جهاز IoT Edge للاتصال من خلال خادم وكيل.
إعداد تخزين مضيف لوحدات النظام
تستخدم وحدات لوحة وصل عامل IoT Edge التخزين المحلي للحفاظ على الحالة وتمكين المراسلة بين الوحدات النمطية والأجهزة والسحابة. للحصول على موثوقية وأداء أفضل، قم بتكوين وحدات النظام لاستخدام التخزين على نظام الملفات المضيف.
لمزيد من المعلومات، راجع تخزين المضيف لوحدات النظام النمطية.
تقليل مساحة الذاكرة المستخدمة بواسطة IoT Edge Hub
إذا كنت تقوم بتوزيع أجهزة مقيدة مع ذاكرة محدودة متوفرة، يمكنك تكوين مركز IoT Edge لتشغيله بقدرة أكثر بساطة واستخدام مساحة أقل على القرص. هذه التكوينات تحد من أداء محور IoT Edge، ومع ذلك، ابحث عن التوازن الصحيح الذي يناسب الحل الخاص بك.
عدم تحسين الأداء على الأجهزة المقيدة
تم تحسين مركز IoT Edge للأداء بشكل افتراضي، لذلك يحاول تخصيص أجزاء كبيرة من الذاكرة. يمكن أن يسبب هذا التكوين مشاكل في الاستقرار على الأجهزة الأصغر مثل Raspberry Pi. إذا كنت تقوم بنشر أجهزة ذات موارد مقيدة، فقد تحتاج إلى تعيين متغير البيئة OptimizeForPerformance إلى خطأ على مركز IoT Edge.
عند تعيين OptimizeForPerformance إلى true، يستخدم رئيس بروتوكول MQTT PooledByteBufferAllocator، الذي يتمتع بأداء أفضل ولكنه يخصص المزيد من الذاكرة. لا يعمل المخصص بشكل جيد على أنظمة التشغيل 32 بت أو على الأجهزة ذات الذاكرة المنخفضة. بالإضافة إلى ذلك، عند تحسينه للأداء، يخصص RocksDb المزيد من الذاكرة لدوره كموفر تخزين محلي.
لمزيد من المعلومات، راجع مشكلات الاستقرار على الأجهزة الأصغر.
تعطيل البروتوكولات غير المستخدمة
طريقة أخرى لتحسين أداء مركز IoT Edge وتقليل استخدام الذاكرة الخاصة به هي إيقاف تشغيل رؤوس البروتوكولات لأي بروتوكولات لا تستخدمها في الحل الخاص بك.
يتم تكوين رؤوس البروتوكولات عن طريق تعيين متغيرات البيئة المنطقية لوحدة مركز IoT Edge في بيانات التوزيع الخاصة بك. المتغيرات الثلاثة هي:
- amqpSettings__enabled
- mqttSettings__enabled
- httpSettings__enabled
تحتوي جميع المتغيرات الثلاثة على تسطيرين أسفل السطر ويمكن تعيينها إما إلى صواب أو خطأ.
تقليل وقت التخزين للرسائل
تُخزن وحدة مركز IoT Edge الرسائل مؤقتًا إذا تعذر تسليمها إلى IoT Hub لأي سبب من الأسباب. يمكنك تكوين مدة بقاء مركز IoT Edge على الرسائل التي لم تُسلم قبل السماح بانتهاء صلاحيتها. إذا كانت لديك مخاوف تتعلق بالذاكرة على جهازك، يمكنك خفض قيمة timeToLiveSecs في وحدة IoT Edge المزدوجة.
القيمة الافتراضية للمعلمة timeToLiveSecs هي 7200 ثانية، وهي ساعتين.
استخدام صور الوحدة النمطية الصحيحة في بيانات التوزيع
إذا تم استخدام صورة وحدة نمطية فارغة أو خاطئة، يعيد عامل Edge محاولة تحميل الصورة، مما يؤدي إلى إنشاء حركة مرور إضافية. أضف الصور الصحيحة إلى بيان النشر لتجنب إنشاء حركة مرور غير ضرورية.
لا تستخدم إصدارات تتبع الأخطاء لصور الوحدة النمطية
عند الانتقال من سيناريوهات الاختبار إلى سيناريوهات الإنتاج، تذكر إزالة تكوينات تتبع الأخطاء من بيانات التوزيع. تحقق من أن أي من صور الوحدة النمطية في بيانات التوزيع تحتوي على لاحقة .debug . إذا أضفت خيارات إنشاء لعرض المنافذ في الوحدات النمطية لتصحيح الأخطاء، فقم بإزالة خيارات الإنشاء هذه أيضا.
ضع في اعتبارك حدود حجم التوأم عند استخدام الوحدات النمطية المخصصة
بيان التوزيع الذي يحتوي على وحدات نمطية مخصصة هو جزء من التوأم EdgeAgent. راجع القيود المفروضة على حجم الوحدة النمطية المزدوجة.
إذا قمت بنشر عدد كبير من الوحدات النمطية، فقد تستنفد حد حجم التوأم هذا. ضع في اعتبارك بعض عوامل التخفيف الشائعة لهذا الحد الثابت:
- قم بتخزين أي تكوين في الوحدة النمطية المزدوجة المخصصة، والتي لها حدها الخاص.
- قم بتخزين بعض التكوينات التي تشير إلى موقع غير محدود المساحة (أي إلى مخزن كائن ثنائي كبير الحجم).
تكوين كيفية تطبيق التحديثات على الوحدات النمطية
عند تحديث التوزيع، يتلقى Edge Agent التكوين الجديد كتحديث مزدوج. إذا كان التكوين الجديد يحتوي على صور وحدة نمطية جديدة أو محدثة، بشكل افتراضي، يقوم Edge Agent بمعالجة كل وحدة نمطية بشكل تسلسلي:
- يتم تنزيل الصورة المحدثة
- تم إيقاف الوحدة النمطية قيد التشغيل
- يتم بدء تشغيل مثيل وحدة نمطية جديدة
- تتم معالجة تحديث الوحدة النمطية التالية
في بعض الحالات، على سبيل المثال، عند وجود تبعيات بين الوحدات النمطية، قد يكون من المستحسن أولا تنزيل جميع صور الوحدة النمطية المحدثة قبل إعادة تشغيل أي وحدات نمطية قيد التشغيل. يمكن تكوين سلوك تحديث الوحدة النمطية هذا عن طريق تعيين متغير ModuleUpdateMode بيئة عامل IoT Edge إلى قيمة WaitForAllPullsالسلسلة . لمزيد من المعلومات، راجع متغيرات بيئة IoT Edge.
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
...
"systemModules": {
"edgeAgent": {
"env": {
"ModuleUpdateMode": {
"value": "WaitForAllPulls"
}
...
Container management
-
Important
- استخدم علامات لإدارة الإصدارات
- Manage volumes
-
Helpful
- تخزين حاويات وقت التشغيل في السجل الخاص بك
- تكوين مجموعة البيانات المهملة للصور
استخدم علامات لإدارة الإصدارات
العلامة هي مفهوم عامل إرساء يمكنك استخدامه للتمييز بين إصدارات حاويات عامل الإرساء. العلامات هي لاحقات مثل 1.5 تنتقل في نهاية مستودع الحاوية. على سبيل المثال، mcr.microsoft.com/azureiotedge-agent:1.5. العلامات قابلة للتغيير ويمكن تغييرها للإشارة إلى حاوية أخرى في أي وقت، لذلك يجب أن يتفق فريقك على اتفاقية يجب اتباعها أثناء تحديث صور الوحدة الخاصة بك للمضي قدما.
تساعدك العلامات أيضا في فرض التحديثات على أجهزة IoT Edge الخاصة بك. عند دفع إصدار محدث من وحدة نمطية إلى سجل الحاوية، قم بزيادة العلامة. ثم، دفع توزيع جديد إلى الأجهزة الخاصة بك مع زيادة العلامة. يتعرف محرك الحاوية على العلامة المتزايدة كإصدار جديد ويسحب أحدث إصدار وحدة نمطية إلى جهازك.
علامات وقت تشغيل IoT Edge
يتم تمييز صور عامل IoT Edge وصور IoT Edge hub بإصدار IoT Edge المرتبط بهما. هناك طريقتان مختلفتان لاستخدام العلامات مع نسح وقت التشغيل:
العلامات المتداولة - استخدم القيمتين الأوليين فقط من رقم الإصدار للحصول على أحدث صورة تطابق تلك الأرقام. على سبيل المثال، يتم تحديث 1.5 كلما كان هناك إصدار جديد للإشارة إلى أحدث إصدار 1.5.x. إذا كان وقت تشغيل الحاوية على جهاز IoT Edge يسحب الصورة مرة أخرى، يتم تحديث وحدات وقت التشغيل إلى أحدث إصدار. عمليات التوزيع من مدخل Microsoft Azure الافتراضي إلى المتداول العلامات. ويقترح هذا النهج لأغراض التنمية.
علامات محددة - استخدم كافة القيم الثلاث لرقم الإصدار لتعيين إصدار الصورة بشكل صريح. على سبيل المثال، لن يتغير 1.5.0 بعد إصداره الأولي. يمكنك تعريف رقم إصدار جديد في بيان التوزيع عندما تكون جاهزا للتحديث. ويقترح هذا النهج لأغراض الإنتاج.
Manage volumes
لا يزيل IoT Edge وحدات التخزين المرفقة بحاويات الوحدة النمطية. هذا السلوك حسب التصميم، لأنه يسمح باستمرار البيانات عبر مثيلات الحاوية مثل سيناريوهات الترقية. ومع ذلك، إذا تركت وحدات التخزين هذه غير مستخدمة، فقد يؤدي ذلك إلى استنفاد مساحة القرص وأخطاء النظام اللاحقة. إذا كنت تستخدم وحدات تخزين docker في السيناريو الخاص بك، فإننا نشجعك على استخدام أدوات docker مثل تقليم وحدة تخزين docker وd docker volume rm لإزالة وحدات التخزين غير المستخدمة، خاصة لسيناريوهات الإنتاج.
تخزين حاويات وقت التشغيل في السجل الخاص بك
تعرف كيفية تخزين صور الحاوية لوحدات التعليمات البرمجية المخصصة في سجل Azure الخاص بك، ولكن يمكنك أيضا استخدامه لتخزين صور الحاوية العامة مثل وحدات وقت تشغيل edgeAgent وedgeHub. قد يكون القيام بذلك مطلوبا إذا كان لديك قيود جدار حماية مشددة حيث يتم تخزين حاويات وقت التشغيل هذه في Microsoft Container Registry (MCR).
توضح الخطوات التالية كيفية سحب صورة Docker من edgeAgent وedgeHub إلى جهازك المحلي، وإعادة تصنيفها، ودفعها إلى السجل الخاص بك، ثم تحديث ملف التكوين الخاص بك حتى تعرف أجهزتك سحب الصورة من السجل الخاص بك.
اسحب صورة edgeAgent Docker من سجل Microsoft. تحديث رقم الإصدار إذا لزم الأمر.
# Pull edgeAgent image docker pull mcr.microsoft.com/azureiotedge-agent:1.5 # Pull edgeHub image docker pull mcr.microsoft.com/azureiotedge-hub:1.5اسرد جميع صور Docker، وابحث عن صور edgeAgent وedgeHub، ثم انسخ معرفات الصور الخاصة بها.
docker imagesأعد علامة صور edgeAgent وedgeHub. استبدل القيم الموجودة بين قوسين بالقيم الخاصة بك.
# Retag your edgeAgent image docker tag <my-image-id> <registry-name/server>/azureiotedge-agent:1.5 # Retag your edgeHub image docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.5ادفع صور edgeAgent وedgeHub إلى السجل الخاص بك. استبدل القيمة بين قوسين بالقيمة الخاصة بك.
# Push your edgeAgent image to your private registry docker push <registry-name/server>/azureiotedge-agent:1.5 # Push your edgeHub image to your private registry docker push <registry-name/server>/azureiotedge-hub:1.5قم بتحديث مراجع الصور في ملف deployment.template.json للوحدات النمطية لنظام edgeAgent وedgeHub، عن طريق استبدال
mcr.microsoft.comب "اسم السجل/الخادم" الخاص بك لكلا الوحدتين النمطيتين.افتح محرر نصوص على جهاز IoT Edge لتغيير ملف التكوين حتى يعرف عن صورة السجل الخاصة بك.
sudo nano /etc/aziot/config.tomlفي محرر النص، قم بتغيير قيم صورتك ضمن
[agent.config]. استبدل القيم الموجودة بين قوسين بالقيم الخاصة بك.[agent.config] image = "<registry-name/server>/azureiotedge-agent:1.5"إذا كان السجل الخاص بك يتطلب مصادقة، فقم بتعيين معلمات المصادقة في
[agent.config.auth].[agent.config.auth] serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server> username = "<username>" password = "<password>"احفظ التغييرات واخرج من محرر النص.
تطبيق تغيير تكوين IoT Edge.
sudo iotedge config applyيتم إعادة تشغيل وقت تشغيل IoT Edge.
لمزيد من المعلومات، راجع:
تكوين مجموعة البيانات المهملة للصور
مجموعة البيانات المهملة للصور هي ميزة في IoT Edge v1.4 والإحدث لتنظيف صور Docker التي لم تعد تستخدمها وحدات IoT Edge النمطية تلقائيا. يقوم فقط بحذف صور Docker التي تم سحبها بواسطة وقت تشغيل IoT Edge كجزء من عملية التوزيع. يساعد حذف صور Docker غير المستخدمة في الحفاظ على مساحة القرص.
يتم تنفيذ الميزة في مكون مضيف IoT Edge والخدمة aziot-edged وتمكينها بشكل افتراضي. يتم التنظيف كل يوم في منتصف الليل (بالتوقيت المحلي للجهاز) ويزيل صور Docker غير المستخدمة التي تم استخدامها آخر مرة منذ سبعة أيام. يتم تعيين المعلمات للتحكم في سلوك التنظيف في config.toml وشرحها لاحقا في هذا القسم. إذا لم يتم تحديد المعلمات في ملف التكوين، يتم تطبيق القيم الافتراضية.
على سبيل المثال، ما يلي هو config.toml قسم تجميع البيانات المهملة للصور باستخدام القيم الافتراضية:
[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d"
cleanup_time = "00:00"
يصف الجدول التالي معلمات تجميع البيانات المهملة للصور. جميع المعلمات اختيارية ويمكن تعيينها بشكل فردي لتغيير الإعدادات الافتراضية.
| Parameter | Description | Required | Default value |
|---|---|---|---|
enabled |
تمكين مجموعة البيانات المهملة للصور. يمكنك اختيار تعطيل الميزة عن طريق تغيير هذا الإعداد إلى false. |
Optional | true |
cleanup_recurrence |
يتحكم في تكرار مهمة التنظيف. يجب تحديدها على أنها عدة أيام ولا يمكن أن تكون أقل من يوم واحد. على سبيل المثال: 1d و2d و6d وما إلى ذلك. |
Optional | 1d |
image_age_cleanup_threshold |
يحدد الحد الأدنى للعمر للصور غير المستخدمة قبل النظر في التنظيف ويجب تحديده بالأيام. يمكنك تحديد ك 0d لتنظيف الصور بمجرد إزالتها من النشر. تعتبر الصور غير مستخدمة بعد إزالتها من النشر. |
Optional | 7d |
cleanup_time |
الوقت من اليوم، في الوقت المحلي للجهاز، عند تشغيل مهمة التنظيف. يجب أن يكون بتنسيق HH:MM على مدار 24 ساعة. إذا لم يكن الجهاز متصلا بالإنترنت، فلن يتم تشغيل مهمة التنظيف. سيتم تشغيل المهمة في cleanup_time المجدولة التالية إذا كان الجهاز متصلا بالإنترنت في ذلك الوقت. | Optional | 00:00 |
Networking
-
Helpful
- مراجعة التكوين الصادر / الوارد
- السماح باتصالات من أجهزة IoT Edge
- تكوين الاتصال من خلال الوكيل
- تعيين خادم DNS في إعدادات محرك الحاوية
مراجعة التكوين الصادر / الوارد
يتم دائمًا تكوين قنوات الاتصال بين Azure IoT Hub و IoT Edge لتكون صادرة. بالنسبة لمعظم سيناريوهات IoT Edge، لا يلزم سوى ثلاثة اتصالات. يحتاج محرك الحاوية إلى الاتصال بسجل الحاوية (أو السجلات) الذي يحتفظ بنسخة الوحدة. يحتاج وقت تشغيل IoT Edge إلى الاتصال بـ IoT Hub لاسترداد معلومات تكوين الجهاز وإرسال الرسائل والقياس عن بُعد. وإذا كنت تستخدم التوفير التلقائي، يحتاج IoT Edge إلى الاتصال بخدمة تزويد الأجهزة. لمزيد من المعلومات، راجع قواعد تكوين جدار الحماية والمنفذ.
السماح باتصالات من أجهزة IoT Edge
إذا تطلب إعداد الشبكة أن تسمح صراحة بالاتصالات التي يتم إجراؤها من أجهزة IoT Edge، فراجع القائمة التالية لمكونات IoT Edge:
- يفتح عامل IoT Edge اتصال AMQP/MQTT مستمر ب IoT Hub، ربما عبر WebSockets.
- يفتح مركز IoT Edge اتصال AMQP ثابتا واحدا أو اتصالات MQTT متعددة ب IoT Hub، ربما عبر WebSockets.
- تقوم خدمة IoT Edge بإجراء مكالمات HTTPS متقطعة إلى IoT Hub.
في جميع الحالات الثلاث، سيتطابق اسم المجال المؤهل بالكامل (FQDN) مع النمط \*.azure-devices.net.
Container registries
يقوم محرك الحاوية بإجراء استدعاءات لسجلات الحاويات عبر HTTPS. لاسترداد صور حاوية وقت تشغيل IoT Edge، FQDN هو mcr.microsoft.com. يتصل محرك الحاوية بالسجلات الأخرى كما تم تكوينها في التوزيع.
قائمة الاختيار هذه هي نقطة بداية لقواعد جدار الحماية:
FQDN (* = حرف بدل) |
منافذ TCP الصادرة | Usage |
|---|---|---|
mcr.microsoft.com |
443 | سجل حاويات Microsoft |
*.data.mcr.microsoft.com |
443 | نقطة نهاية البيانات التي توفر تسليم المحتوى |
*.cdn.azcr.io |
443 | نشر الوحدات النمطية من Marketplace إلى الأجهزة |
global.azure-devices-provisioning.net |
443 | الوصول إلى خدمة توفير الأجهزة (اختياري) |
*.azurecr.io |
443 | سجلات الحاويات الشخصية والجهات الخارجية |
*.blob.core.windows.net |
443 | تنزيل دلتا صور Azure Container Registry من تخزين blob |
*.azure-devices.net |
5671، 8883، 4431 | الوصول إلى IoT Hub |
*.docker.io |
443 | الوصول إلى Docker Hub (اختياري) |
1افتح المنفذ 8883 ل MQTT الآمن أو المنفذ 5671 ل AMQP الآمن. إذا كان يمكنك إجراء اتصالات عبر المنفذ 443 فقط، فيمكن تشغيل أي من هذه البروتوكولات من خلال نفق WebSocket.
نظرا لأن عنوان IP لمركز IoT يمكن أن يتغير دون إشعار، استخدم FQDN دائما لتكوين قائمة السماح. لمعرفة المزيد، راجع فهم عنوان IP لمركز IoT الخاص بك.
بعض قواعد جدار الحماية هذه موروثة من Azure Container Registry. لمزيد من المعلومات، راجع تكوين القواعد للوصول إلى سجل حاوية Azure خلف جدار حماية.
يمكنك تمكين نقاط نهاية البيانات المخصصة في سجل حاوية Azure لتجنب السماح لأحرف البدل ل FQDN *.blob.core.windows.net . لمزيد من المعلومات، راجع تمكين نقاط نهاية البيانات المخصصة.
Note
لتوفير FQDN متناسق بين نقاط نهاية REST والبيانات، بدءا من 15 يونيو 2020 ، ستتغير نقطة نهاية بيانات Microsoft Container Registry من *.cdn.mscr.io إلى *.data.mcr.microsoft.com
لمزيد من المعلومات، راجع تكوين قواعد جدار حماية عميل Microsoft Container Registry
إذا كنت لا تريد تكوين جدار الحماية الخاص بك للسماح بالوصول إلى سجلات الحاويات العامة، يمكنك تخزين الصور في سجل الحاوية الخاص بك، كما هو موضح في حاويات وقت تشغيل المتجر في السجل الخاص بك.
خدمة هوية Azure IoT
توفر خدمة هوية IoT خدمات التوفير والتشفير لأجهزة Azure IoT. تتحقق خدمة الهوية من أن الإصدار المثبت هو أحدث إصدار. يستخدم الفحص FQDNs التالية للتحقق من الإصدار.
| FQDN | منافذ TCP الصادرة | Usage |
|---|---|---|
aka.ms |
443 | عنوان URL الغرور الذي يوفر إعادة التوجيه إلى ملف الإصدار |
raw.githubusercontent.com |
443 | ملف إصدار خدمة الهوية المستضاف في GitHub |
تكوين الاتصال من خلال الوكيل
إذا كانت الأجهزة الخاصة بك سيتم توزيعها على شبكة تستخدم خادم الوكيل، فإنها تحتاج إلى أن تكون قادرة على الاتصال من خلال الوكيل للوصول إلى IoT Hub وسجلات الحاويات. لمزيد من المعلومات، راجع تكوين جهاز IoT Edge للاتصال من خلال خادم وكيل.
تعيين خادم DNS في إعدادات محرك الحاوية
حدد خادم DNS للبيئة الخاصة بك في إعدادات محرك الحاوية. ينطبق إعداد خادم DNS على جميع وحدات الحاوية التي بدأها المحرك.
في
/etc/dockerالدليل على جهازك، قم بتحريرdaemon.jsonالملف. إنشاء الملف إذا لم يكن موجودا.إضافة مفتاح dns وتعيين عنوان خادم DNS إلى خدمة DNS يمكن الوصول إليها بشكل عام. إذا تعذر على جهاز الحافة الوصول إلى خادم DNS عام، فاستخدم عنوان خادم DNS الذي يمكن الوصول إليه في شبكتك. For example:
{ "dns": ["1.1.1.1"] }
Solution management
-
Helpful
- قم بإعداد السجلات والتشخيصات
- إعداد برنامج تشغيل التسجيل الافتراضي
- ضع في اعتبارك الاختبارات والبنية الأساسية لبرنامج ربط العمليات التجارية CI / CD
قم بإعداد السجلات والتشخيصات
في نظام Linux، يستخدم برنامج IoT Edge الخفي المجلات باعتباره محرك التسجيل الافتراضي. استخدم أداة journalctl سطر الأوامر للاستعلام عن سجلات البرنامج الخفي.
بدءا من الإصدار 1.2، يعتمد IoT Edge على برامج خفية متعددة. بينما يمكنك الاستعلام عن سجلات كل خفي بشكل فردي باستخدام journalctl، استخدم iotedge system الأوامر للاستعلام عن السجلات المدمجة.
الأمر الموحد
iotedge:sudo iotedge system logsالأمر المكافئ
journalctl:journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
عند اختبار توزيع IoT Edge، يمكنك عادة الوصول إلى أجهزتك لاسترداد السجلات واستكشاف الأخطاء وإصلاحها. في سيناريو التوزيع، قد لا يكون لديك هذا الخيار. ضع في اعتبارك كيفية جمع معلومات حول أجهزتك في الإنتاج. أحد الخيارات هو استخدام وحدة تسجيل تجمع المعلومات من الوحدات النمطية الأخرى وترسلها إلى السحابة. على سبيل المثال، استخدم logspout-loganalytics، أو صمم تحليلاتك الخاصة.
إعداد برنامج تشغيل التسجيل الافتراضي
بشكل افتراضي، لا يقوم محرك حاوية Moby بتعيين حدود حجم سجل الحاوية. مع مرور الوقت، يمكن أن يتسبب هذا في امتلاء الجهاز بالسجلات ونفاد مساحة القرص. قم بتعيين محرك الحاوية local لاستخدام برنامج تشغيل التسجيل كآلية تسجيل.
local يوفر برنامج تشغيل التسجيل حدا افتراضيا لحجم السجل، وينفذ تدوير السجل بشكل افتراضي، ويستخدم تنسيق ملف أكثر كفاءة، مما يساعد على منع استنفاد مساحة القرص. يمكنك أيضا استخدام برامج تشغيل تسجيل مختلفة وتعيين حدود مختلفة للحجم استنادا إلى احتياجاتك.
الخيار: تكوين برنامج تشغيل التسجيل الافتراضي لجميع وحدات الحاوية
قم بتعيين محرك الحاوية لاستخدام برنامج تشغيل تسجيل معين عن طريق تعيين قيمة log driver إلى اسم برنامج تشغيل السجل في daemon.json الملف. يعين المثال التالي برنامج تشغيل التسجيل الافتراضي إلى local برنامج تشغيل السجل (مستحسن).
{
"log-driver": "local"
}
يمكنك أيضا تكوين المفاتيح لاستخدام log-opts القيم المناسبة في daemon.json الملف. يعين المثال التالي برنامج تشغيل السجل إلى local ويعين الخيارين max-size و max-file .
{
"log-driver": "local",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
أضف هذه المعلومات أو ألحقها بملف باسم daemon.json وضعه في الموقع التالي:
/etc/docker/
أعد تشغيل محرك الحاوية حتى تسري التغييرات.
الخيار: ضبط إعدادات السجل لكل وحدة حاوية
قم بتعيين هذه الخيارات في createOptions لكل وحدة نمطية. For example:
"createOptions": {
"HostConfig": {
"LogConfig": {
"Type": "local",
"Config": {
"max-size": "10m",
"max-file": "3"
}
}
}
}
خيارات إضافية على أنظمة Linux
قم بتكوين محرك الحاوية لإرسال السجلات إلى
systemdدفتر اليومية عن طريق تعيينjournaldبرنامج تشغيل التسجيل الافتراضي.قم بإزالة السجلات القديمة من جهازك بشكل دوري عن طريق تثبيت أداة logrotate. استخدم مواصفات الملف التالية:
/var/lib/docker/containers/*/*-json.log{ copytruncate daily rotate7 delaycompress compress notifempty missingok }
ضع في اعتبارك الاختبارات والبنية الأساسية لبرنامج ربط العمليات التجارية CI / CD
لتوزيع IoT Edge الأكثر كفاءة، قم بدمج توزيع الإنتاج الخاص بك في مسارات الاختبار و CI/CD. يدعم Azure IoT Edge العديد من منصات CI / CD، بما في ذلك Azure DevOps. لمزيد من المعلومات، راجع التكامل المستمر والنشر المستمر إلى Azure IoT Edge.
Security considerations
-
Important
- إدارة الوصول إلى سجل الحاوية
- تقييد الوصول إلى الحاوية لموارد المضيف
إدارة الوصول إلى سجل الحاوية
قبل نشر الوحدات النمطية لإنتاج أجهزة IoT Edge، تأكد من التحكم في الوصول إلى سجل الحاوية حتى لا يتمكن الغرباء من الوصول إلى صور الحاوية أو تغييرها. استخدم سجل حاوية خاصا لإدارة صور الحاوية.
في البرامج التعليمية والوثائق الأخرى، نطلب منك استخدام نفس بيانات اعتماد سجل الحاوية على جهاز IoT Edge كما هو الحال على جهاز التطوير الخاص بك. تساعدك هذه الإرشادات على إعداد بيئات الاختبار والتطوير بسهولة أكبر وهي ليست للاستخدام الإنتاجي.
للحصول على وصول أكثر أمانا إلى السجل الخاص بك، اختر من بين العديد من خيارات المصادقة. يعد استخدام كيان خدمة Active Directory طريقة شائعة وموصى بها للتطبيقات أو الخدمات لسحب صور الحاوية تلقائيا وغير مراقب، مثل أجهزة IoT Edge. يمكنك أيضا استخدام الرموز المميزة ذات نطاق المستودع، والتي تتيح لك إنشاء هويات طويلة أو قصيرة الأجل موجودة فقط في Azure Container Registry حيث تقوم بإنشائها والوصول إلى نطاق مستوى المستودع.
لإنشاء كيان خدمة، قم بتشغيل البرنامجين النصيين الموضحين في إنشاء كيان خدمة. تقوم هذه البرامج النصية بما يلي:
يقوم البرنامج النصي الأول بإنشاء كيان الخدمة. يعرض معرف كيان الخدمة وكلمة مرور كيان الخدمة. قم بتخزين هذه القيم بأمان في سجلاتك.
يقوم البرنامج النصي الثاني بإنشاء تعيينات الأدوار لمنحها إلى كيان الخدمة. قم بتشغيله لاحقا إذا لزم الأمر. استخدم دور مستخدم acrPull للمعلمة
role. للحصول على قائمة الأدوار، راجع أدوار Azure Container Registry والأذونات.
للمصادقة باستخدام كيان خدمة، قم بتوفير معرف الخدمة الأساسي وبيانات اعتماد كلمة المرور من البرنامج النصي الأول في بيان النشر.
بالنسبة إلى اسم المستخدم أو معرف العميل، حدد معرف كيان الخدمة.
بالنسبة إلى كلمة المرور أو سر العميل، حدد كلمة مرور كيان الخدمة.
لإنشاء رموز مميزة ذات نطاق مستودع، اتبع إنشاء رمز مميز في نطاق المستودع.
للمصادقة باستخدام الرموز المميزة ذات نطاق المستودع، قم بتوفير اسم الرمز المميز وبيانات اعتماد كلمة المرور التي تحصل عليها بعد إنشاء الرمز المميز الخاص بك في نطاق المستودع في بيان النشر.
بالنسبة إلى اسم المستخدم، حدد اسم مستخدم الرمز المميز.
بالنسبة لكلمة المرور، حدد إحدى كلمات مرور الرمز المميز.
Note
بعد تنفيذ مصادقة أمان محسنة، قم بتعطيل إعداد مستخدم المسؤول بحيث لا يتوفر الوصول الافتراضي إلى اسم المستخدم وكلمة المرور. يمكنك العثور على إعداد سجل الحاوية في مدخل Microsoft Azure، ضمن Settings، حدد Access Keys.
تقييد الوصول إلى الحاوية لموارد المضيف
لموازنة موارد المضيف المشتركة عبر الوحدات النمطية، قم بتعيين حدود لاستخدام الموارد لكل وحدة نمطية. هذه الحدود تأكد من أن وحدة نمطية واحدة لا يمكنها استخدام الكثير من الذاكرة أو وحدة المعالجة المركزية ومنع العمليات الأخرى من العمل على الجهاز. بشكل افتراضي، لا يحد النظام الأساسي ل IoT Edge من الموارد للوحدات النمطية لأنك تحتاج إلى اختبار لمعرفة مقدار الموارد التي تحتاجها الوحدة النمطية لتشغيلها بشكل جيد.
يتيح لك Docker تحديد الموارد مثل الذاكرة واستخدام وحدة المعالجة المركزية. لمزيد من المعلومات، راجع خيارات وقت التشغيل مع الذاكرة ووحدات المعالجة المركزية ووحدات معالجة الرسومات.
يمكنك تطبيق هذه القيود على الوحدات النمطية الفردية باستخدام خيارات الإنشاء في بيانات التوزيع. لمزيد من المعلومات، راجع كيفية تكوين خيارات إنشاء الحاوية لوحدات IoT Edge النمطية.
Next steps
- تعرف على المزيد حول النشر التلقائي ل IoT Edge.
- راجع كيف يدعم IoT Edge التكامل المستمر والنشر المستمر.