الاستعداد لنشر حل IoT Edge في الإنتاج

ينطبق على:IoT Edge 1.4 checkmark IoT Edge 1.4

هام

IoT Edge 1.4 هو الإصدار المدعوم. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.

عندما تكون مستعدا لأخذ حل IoT Edge الخاص بك من التطوير إلى الإنتاج، تأكد من تكوينه للأداء المستمر.

المعلومات المقدمة في هذه المقالة ليست كلها متساوية. لمساعدتك على تحديد الأولويات، يبدأ كل قسم بقوائم تقسم العمل إلى قسمين: من المهم إكماله قبل الانتقال إلى الإنتاج، أو مفيد لك لمعرفة ذلك.

تكوين الجهاز

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

  • مهم!

    • قم بتثبيت شهادات الإنتاج
    • لديك خطة إدارة الأجهزة
    • استخدم Moby كمحرك الحاوية
  • مفيده

    • اختيار بروتوكول المصدر

قم بتثبيت شهادات الإنتاج

يحتاج كل جهاز IoT Edge قيد الإنتاج إلى تثبيت شهادة مرجع مصدق للجهاز عليه. ثم يتم تعريف شهادة المرجع المصدق هذه إلى وقت تشغيل IoT Edge في ملف التكوين. بالنسبة لسيناريوهات التطوير والاختبار، ينشئ وقت تشغيل IoT Edge شهادات مؤقتة إذا لم يتم الإعلان عن أي شهادات في ملف التكوين. مع ذلك، تنتهي صلاحية هذه الشهادات المؤقتة بعد ثلاثة أشهر وهي غير آمنة لسيناريوهات الإنتاج. بالنسبة لسيناريوهات الإنتاج، يجب توفير شهادة CA لجهازك، إما من مرجع مصدق موقع ذاتيا أو تم شراؤه من مرجع مصدق تجاري.

لفهم دور شهادة المرجع المصدق للجهاز، راجع كيفية استخدام Azure IoT Edge للشهادات.

لمزيد من المعلومات حول كيفية تثبيت الشهادات على جهاز IoT Edge والإشارة إليها من ملف التكوين، راجع إدارة الشهادة على جهاز IoT Edge.

لديك خطة إدارة الأجهزة

قبل أن تضع أي جهاز قيد الإنتاج، يجب أن تعرف كيف ستدير التحديثات المستقبلية. بالنسبة لجهاز IoT Edge، قد تتضمن قائمة المكونات التي سيتم تحديث ما يلي:

  • برنامج ثابت للجهاز
  • مكتبات نظام التشغيل
  • محرك الحاوية، مثل Moby
  • IoT Edge
  • شهادات المرجع المصدق

تحديث الجهاز ل IoT Hub هي خدمة تمكنك من نشر التحديثات عبر الهواء (OTA) لأجهزة IoT Edge.

تتطلب الطرق البديلة لتحديث IoT Edge الوصول الفعلي أو SSH إلى جهاز IoT Edge. لمزيد من المعلومات، راجع تحديث وقت تشغيل IoT Edge. لتحديث أجهزة متعددة، ضع في اعتبارك إضافة خطوات التحديث إلى برنامج نصي أو استخدام أداة أتمتة مثل Ansible.

استخدم Moby كمحرك الحاوية

يعد محرك الحاوية شرطا أساسيا لأي جهاز IoT Edge. يتم دعم محرك moby فقط في الإنتاج. تعمل محركات الحاويات الأخرى، مثل 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 للاتصال من خلال خادم وكيل.

التوزيع

  • مفيده
    • الاتساق مع بروتوكول المصدر
    • إعداد تخزين مضيف لوحدات النظام
    • تقليل مساحة الذاكرة المستخدمة من قبل مركز 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 في بيانات التوزيع الخاصة بك. المتغيرات الثلاثة هي:

  • amqp الإعدادات__enabled
  • mqtt الإعدادات__enabled
  • http الإعدادات__enabled

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

تقليل وقت التخزين للرسائل

تُخزن وحدة مركز IoT Edge الرسائل مؤقتًا إذا تعذر تسليمها إلى IoT Hub لأي سبب من الأسباب. يمكنك تكوين مدة بقاء مركز IoT Edge على الرسائل التي لم تُسلم قبل السماح بانتهاء صلاحيتها. إذا كانت لديك مخاوف تتعلق بالذاكرة على جهازك، يمكنك خفض قيمة timeToLiveSecs في وحدة IoT Edge المزدوجة.

القيمة الافتراضية للمعلمة timeToLiveSecs هي 7200 ثانية، وهي ساعتين.

استخدام صور الوحدة النمطية الصحيحة في بيانات التوزيع

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

لا تستخدم إصدارات تتبع الأخطاء لصور الوحدة النمطية

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

ضع في اعتبارك حدود حجم التوأم عند استخدام الوحدات النمطية المخصصة

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

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

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

تكوين كيفية تطبيق التحديثات على الوحدات النمطية

عند تحديث التوزيع، يتلقى Edge Agent التكوين الجديد كتحديث مزدوج. إذا كان التكوين الجديد يحتوي على صور وحدة نمطية جديدة أو محدثة، بشكل افتراضي، يقوم Edge Agent بمعالجة كل وحدة نمطية بشكل تسلسلي:

  1. يتم تنزيل الصورة المحدثة
  2. تم إيقاف الوحدة النمطية قيد التشغيل
  3. يتم بدء تشغيل مثيل وحدة نمطية جديدة
  4. تتم معالجة تحديث الوحدة النمطية التالية

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

"modulesContent": {
    "$edgeAgent": {
        "properties.desired": {
            ...
            "systemModules": {
                "edgeAgent": {
                    "env": {
                        "ModuleUpdateMode": {
                            "value": "WaitForAllPulls"
                        }
                    ...

إدارة الحاويات

  • مهم!
    • استخدم علامات لإدارة الإصدارات
    • إدارة وحدات التخزين
  • مفيده
    • تخزين حاويات وقت التشغيل في السجل الخاص بك
    • تكوين مجموعة البيانات المهملة للصور

استخدم علامات لإدارة الإصدارات

العلامة هي مفهوم عامل إرساء يمكنك استخدامه للتمييز بين إصدارات حاويات عامل الإرساء. العلامات هي لاحقات مثل 1.1 تنتقل في نهاية مستودع الحاوية. على سبيل المثال، mcr.microsoft.com/azureiotedge-agent:1.1. العلامات قابلة للتغيير ويمكن تغييرها للإشارة إلى حاوية أخرى في أي وقت، لذلك يجب أن يتفق فريقك على اتفاقية يجب اتباعها أثناء تحديث صور الوحدة الخاصة بك للمضي قدما.

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

علامات وقت تشغيل IoT Edge

يتم تمييز صور عامل IoT Edge وصور IoT Edge hub بإصدار IoT Edge المرتبط بهما. هناك طريقتان مختلفتان لاستخدام العلامات مع نسح وقت التشغيل:

  • العلامات المتداولة - استخدم القيمتين الأوليين فقط من رقم الإصدار للحصول على أحدث صورة تطابق تلك الأرقام. على سبيل المثال، تحديث 1.1 كلما كان هناك إصدار جديد للإشارة إلى أحدث إصدار 1.1.x. إذا كان وقت تشغيل الحاوية على جهاز IoT Edge يسحب الصورة مرة أخرى، يتم تحديث وحدات وقت التشغيل إلى أحدث إصدار. عمليات التوزيع من مدخل Microsoft Azure الافتراضي إلى المتداول العلامات. ويقترح هذا النهج لأغراض التنمية.

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

إدارة وحدات التخزين

لا يزيل IoT Edge وحدات التخزين المرفقة بحاويات الوحدة النمطية. هذا السلوك حسب التصميم، لأنه يسمح باستمرار البيانات عبر مثيلات الحاوية مثل سيناريوهات الترقية. ومع ذلك، إذا تركت وحدات التخزين هذه غير مستخدمة، فقد يؤدي ذلك إلى استنفاد مساحة القرص وأخطاء النظام اللاحقة. إذا كنت تستخدم وحدات تخزين docker في السيناريو الخاص بك، فإننا نشجعك على استخدام أدوات docker مثل تقليم وحدة تخزين docker وd docker volume rm لإزالة وحدات التخزين غير المستخدمة، خاصة لسيناريوهات الإنتاج.

تخزين حاويات وقت التشغيل في السجل الخاص بك

تعرف كيفية تخزين صور الحاوية لوحدات التعليمات البرمجية المخصصة في سجل Azure الخاص بك، ولكن يمكنك أيضا استخدامه لتخزين صور الحاوية العامة مثل وحدات وقت تشغيل edgeAgent وedgeHub. قد يكون القيام بذلك مطلوبا إذا كان لديك قيود جدار حماية مشددة جدا حيث يتم تخزين حاويات وقت التشغيل هذه في Microsoft Container Registry (MCR).

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

  1. اسحب صورة edgeAgent Docker من سجل Microsoft. تحديث رقم الإصدار إذا لزم الأمر.

    # Pull edgeAgent image
    docker pull mcr.microsoft.com/azureiotedge-agent:1.4
    
    # Pull edgeHub image
    docker pull mcr.microsoft.com/azureiotedge-hub:1.4
    
  2. اسرد جميع صور Docker، وابحث عن صور edgeAgent وedgeHub، ثم انسخ معرفات الصور الخاصة بها.

    docker images
    
  3. أعد علامة صور edgeAgent وedgeHub. استبدل القيم الموجودة بين قوسين بالقيم الخاصة بك.

    # Retag your edgeAgent image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-agent:1.4
    
    # Retag your edgeHub image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.4
    
  4. ادفع صور edgeAgent وedgeHub إلى السجل الخاص بك. استبدل القيمة بين قوسين بالقيمة الخاصة بك.

    # Push your edgeAgent image to your private registry
    docker push <registry-name/server>/azureiotedge-agent:1.4
    
    # Push your edgeHub image to your private registry
    docker push <registry-name/server>/azureiotedge-hub:1.4
    
  5. قم بتحديث مراجع الصور في ملف deployment.template.json للوحدات النمطية لنظام edgeAgent وedgeHub، عن طريق استبدال mcr.microsoft.com ب "اسم السجل/الخادم" الخاص بك لكلا الوحدتين النمطيتين.

  6. افتح محرر نصوص على جهاز IoT Edge لتغيير ملف التكوين حتى يعرف عن صورة السجل الخاصة بك.

    sudo nano /etc/aziot/config.toml
    
  7. في محرر النص، قم بتغيير قيم صورتك ضمن [agent.config]. استبدل القيم الموجودة بين قوسين بالقيم الخاصة بك.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.4"
    
  8. إذا كان السجل الخاص بك يتطلب مصادقة، فقم بتعيين معلمات المصادقة في [agent.config.auth].

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. احفظ التغييرات واخرج من محرر النص.

  10. تطبيق تغيير تكوين 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"

يصف الجدول التالي معلمات تجميع البيانات المهملة للصور. جميع المعلمات اختيارية ويمكن تعيينها بشكل فردي لتغيير الإعدادات الافتراضية.

المعلمة الوصف مطلوب القيمة الافتراضية
enabled تمكين مجموعة البيانات المهملة للصور. يمكنك اختيار تعطيل الميزة عن طريق تغيير هذا الإعداد إلى false. اختياري صحيح
cleanup_recurrence يتحكم في تكرار مهمة التنظيف. يجب تحديدها على أنها عدة أيام ولا يمكن أن تكون أقل من يوم واحد.

على سبيل المثال: 1d و2d و6d وما إلى ذلك.
اختياري 1d
image_age_cleanup_threshold يحدد الحد الأدنى للعمر للصور غير المستخدمة قبل النظر في التنظيف ويجب تحديده بالأيام. يمكنك تحديد ك 0d لتنظيف الصور بمجرد إزالتها من النشر.

تعتبر الصور غير مستخدمة بعد إزالتها من النشر.
اختياري 7d
cleanup_time الوقت من اليوم، في الوقت المحلي للجهاز، عند تشغيل مهمة التنظيف. يجب أن يكون بتنسيق HH:MM على مدار 24 ساعة. اختياري 00:00

الشبكات

  • مفيده
    • مراجعة التكوين الصادر / الوارد
    • السماح باتصالات من أجهزة 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.

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

يقوم محرك الحاوية بإجراء استدعاءات لسجلات الحاويات عبر HTTPS. لاسترداد صور حاوية وقت تشغيل IoT Edge، FQDN هو mcr.microsoft.com. يتصل محرك الحاوية بالسجلات الأخرى كما تم تكوينها في التوزيع.

قائمة الاختيار هذه هي نقطة بداية لقواعد جدار الحماية:

FQDN (* = حرف بدل) منافذ TCP الصادرة الاستخدام
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 . لمزيد من المعلومات، راجع تمكين نقاط نهاية البيانات المخصصة.

إشعار

لتوفير 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 الصادرة الاستخدام
aka.ms 443 عنوان URL الغرور الذي يوفر إعادة التوجيه إلى ملف الإصدار
raw.githubusercontent.com 443 ملف إصدار خدمة الهوية المستضاف في GitHub

تكوين الاتصال من خلال الوكيل

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

تعيين خادم DNS في إعدادات محرك الحاوية

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

  1. في /etc/docker الدليل على جهازك، قم بتحرير daemon.json الملف. قم بإنشاء الملف إذا لم يكن موجودا.

  2. إضافة مفتاح dns وتعيين عنوان خادم DNS إلى خدمة DNS يمكن الوصول إليها بشكل عام. إذا تعذر على جهاز الحافة الوصول إلى خادم DNS عام، فاستخدم عنوان خادم DNS يمكن الوصول إليه في شبكتك. على سبيل المثال:

    {
        "dns": ["1.1.1.1"]
    }
    

إدارة الحل

  • مفيده
    • قم بإعداد السجلات والتشخيصات
    • إعداد برنامج تشغيل التسجيل الافتراضي
    • ضع في اعتبارك الاختبارات والبنية الأساسية لبرنامج ربط العمليات التجارية 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 لكل وحدة نمطية. على سبيل المثال:

"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.

اعتبارات الأمان

  • مهم!
    • إدارة الوصول إلى سجل الحاوية
    • تقييد الوصول إلى الحاوية لموارد المضيف

إدارة الوصول إلى سجل الحاوية

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

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

للحصول على وصول أكثر أمانا إلى السجل الخاص بك، لديك خيار خيارات المصادقة. المصادقة الشائعة والموصى بها هي استخدام كيان خدمة Active Directory المناسب تماما للتطبيقات أو الخدمات لسحب صور الحاوية بطريقة تلقائية أو غير مراقبة (بدون رأس)، كما تفعل أجهزة IoT Edge. خيار آخر هو استخدام الرموز المميزة ذات نطاق المستودع، والتي تسمح لك بإنشاء هويات طويلة أو قصيرة الأمد موجودة فقط في Azure Container Registry التي تم إنشاؤها فيها والوصول إلى مستوى المستودع.

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

  • يقوم البرنامج النصي الأول بإنشاء كيان الخدمة. يقوم إخراج معرف كيان الخدمة وكلمة المرور الأساسية للخدمة. قم بتخزين هذه القيم بأمان في سجلاتك.

  • يقوم البرنامج النصي الثاني بإنشاء تعيينات الأدوار لمنحها إلى كيان الخدمة، والتي يمكن تشغيلها لاحقا إذا لزم الأمر. نوصي بتطبيق دور مستخدم acrPull للمعلمة role . للحصول على قائمة الأدوار، راجع أدوار Azure Container Registry والأذونات.

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

  • بالنسبة إلى اسم المستخدم أو معرف العميل، حدد معرف كيان الخدمة.

  • بالنسبة إلى كلمة المرور أو سر العميل، حدد كلمة مرور كيان الخدمة.


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

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

  • بالنسبة إلى اسم المستخدم، حدد اسم مستخدم الرمز المميز.

  • بالنسبة لكلمة المرور، حدد إحدى كلمات مرور الرمز المميز.

إشعار

بعد تنفيذ مصادقة أمان محسنة، قم بتعطيل إعداد المستخدم مسؤول بحيث لا يتوفر الوصول الافتراضي إلى اسم المستخدم/كلمة المرور. في سجل الحاوية في مدخل Microsoft Azure، من القائمة اليسرى ضمن الإعدادات، حدد Access Keys.

تقييد الوصول إلى الحاوية لموارد المضيف

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

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

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

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