توصيل أجهزة Azure IoT Edge لإنشاء تسلسل هرمي

ينطبق على:علامة اختيار IoT Edge 1.5 IoT Edge 1.5 علامة اختيار IoT Edge 1.4 IoT Edge 1.4

هام

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

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

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

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

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

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

  • المصادقة: إنشاء هويات IoT Hub لجميع الأجهزة في التسلسل الهرمي للبوابة.
  • التخويل: قم بإعداد العلاقة الأصل/التابع في IoT Hub لتخويل أجهزة انتقال البيانات من الخادم للاتصال بجهازها الأصل كما لو كانت تتصل ب IoT Hub.
  • اكتشاف البوابة: تأكد من أن جهاز انتقال البيانات من الخادم يمكنه العثور على جهازه الأصل على الشبكة المحلية.
  • الاتصال الآمن: إنشاء اتصال آمن مع الشهادات الموثوق بها التي هي جزء من نفس السلسلة.

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

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

تلميح

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

إنشاء تسلسل هيكلي للبوابة

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

تخول خطوة إعداد العلاقات الأصل/التابعة أجهزة انتقال البيانات من الخادم للاتصال بجهازها الأصل كما لو كانت تتصل ب IoT Hub.

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

بشكل افتراضي، يمكن أن يكون لأحد الوالدين ما يصل إلى 100 طفل. يمكنك تغيير هذا الحد عن طريق تعيين متغير البيئة MaxConnectedClients في الوحدة النمطية edgeHub للجهاز الأصل.

في مدخل Microsoft Azure، يمكنك إدارة العلاقة الأصل/التابع عند إنشاء هويات جهاز جديدة، أو عن طريق تحرير الأجهزة الموجودة.

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

  1. في مدخل Microsoft Azure توجه إلى مركز IoT.
  2. حدد الأجهزة ضمن قائمة إدارة الأجهزة.
  3. حدد إضافة جهاز ثم حدد خانة الاختيار جهاز IoT Edge.
  4. إلى جانب تعيين معرف الجهاز وإعدادات المصادقة، يمكنك تعيين جهاز أصل أو اختيار أجهزة تابعة.
  5. اختر الجهاز أو الأجهزة التي تريدها كأصل أو طفل.

يمكنك أيضا إنشاء علاقات أصل/تابع أو إدارتها للأجهزة الموجودة.

  1. في مدخل Microsoft Azure توجه إلى مركز IoT.
  2. حدد الأجهزة في قائمة إدارة الأجهزة.
  3. حدد جهاز IoT Edge الذي تريد إدارته من القائمة.
  4. حدد أيقونة تعيين ترس جهازأصل أو إدارة الأجهزة التابعة.
  5. إضافة أي أجهزة أصل أو تابعة أو إزالتها.

إشعار

إذا كنت ترغب في إنشاء علاقات بين الأصل والتابع برمجيا، يمكنك استخدام C# أو Java أو Node.js IoT Hub Service SDK.

فيما يلي مثال على تعيين الأجهزة التابعة باستخدام C# SDK. توضح المهمة RegistryManager_AddAndRemoveDeviceWithScope() كيفية إنشاء تسلسل هرمي من ثلاث طبقات برمجيا. يوجد جهاز IoT Edge في الطبقة 1، كأصل. يوجد جهاز IoT Edge آخر في الطبقة الثانية، ويعمل كطفل وأصل على حد سواء. وأخيرا، يوجد جهاز IoT في الطبقة الثالثة، كأدنى جهاز تابع للطبقة.

إنشاء الشهادات

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

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

رسم توضيحي لسلسلة الشهادات الصادرة عن المرجع المصدق الجذر على البوابة وجهاز انتقال البيانات من الخادم

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

  1. إنشاء الشهادات التالية أو طلبها:

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

    يمكنك استخدام مرجع مصدق موقع ذاتيا أو شراء واحد من مرجع مصدق تجاري موثوق به مثل Baltimore أو Verisign أو Digicert أو GlobalSign.

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

    # !!! For test only - do not use in production !!!
    
    # Create the the root CA test certificate
    ./certGen.sh create_root_and_intermediate
    
    # Create the parent (gateway) device test certificate 
    # signed by the shared root CA certificate
    ./certGen.sh create_edge_device_ca_certificate "gateway"
    
    # Create the downstream device test certificate
    # signed by the shared root CA certificate
    ./certGen.sh create_edge_device_ca_certificate "downstream"
    

    تحذير

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

    لمزيد من المعلومات حول إنشاء شهادات الاختبار، راجع إنشاء شهادات تجريبية لاختبار ميزات جهاز IoT Edge.

  3. ستحتاج إلى نقل الشهادات والمفاتيح إلى كل جهاز. يمكنك استخدام محرك أقراص USB أو خدمة مثل Azure Key Vault أو مع وظيفة مثل نسخة ملف آمنة. اختر إحدى هذه الطرق التي تطابق السيناريو الخاص بك على أفضل نحو. انسخ الملفات إلى الدليل المفضل للشهادات والمفاتيح. يستخدم /var/aziot/certs للشهادات والمفاتيح /var/aziot/secrets .

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

تكوين الجهاز الأصل

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

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

  1. تحقق من أن شهاداتك تفي بمتطلبات التنسيق.

  2. نقل شهادة المرجع المصدق الجذر وشهادة المرجع المصدق للجهاز الأصل والمفتاحالخاص الأصل إلى الجهاز الأصل.

  3. انسخ الشهادات والمفاتيح إلى الدلائل الصحيحة. الدلائل المفضلة لشهادات الجهاز هي /var/aziot/certs للشهادات والمفاتيح /var/aziot/secrets .

    ### Copy device certificate ###
    
    # If the device certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy full-chain device certificate and private key into the correct directory
    sudo cp iot-edge-device-ca-gateway-full-chain.cert.pem /var/aziot/certs
    sudo cp iot-edge-device-ca-gateway.key.pem /var/aziot/secrets
    
    ### Root certificate ###
    
    # Copy root certificate into the /certs directory
    sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs
    
    # Copy root certificate into the CA certificate directory and add .crt extension.
    # The root certificate must be in the CA certificate directory to install it in the certificate store.
    # Use the appropriate copy command for your device OS or if using EFLOW.
    
    # For Ubuntu and Debian, use /usr/local/share/ca-certificates/
    sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt
    # For EFLOW, use /etc/pki/ca-trust/source/anchors/
    sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crt
    
  4. تغيير ملكية الشهادات والمفاتيح وأذوناتها.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
    sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    
    # Verify permissions of directories and files
    sudo ls -Rla /var/aziot
    

    إخراج القائمة مع الملكية الصحيحة والإذن مشابهة للآتي:

    azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
    /var/aziot:
    total 16
    drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
    drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
    drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
    drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets
    
    /var/aziot/certs:
    total 20
    drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
    drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
    -rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
    -rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-gateway-full-chain.cert.pem
    
    /var/aziot/secrets:
    total 16
    drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
    drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
    -rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-gateway.key.pem
    
  5. قم بتثبيت شهادة المرجع المصدق الجذر على جهاز IoT Edge الأصل عن طريق تحديث مخزن الشهادات على الجهاز باستخدام الأمر الخاص بالنظام الأساسي.

    # Update the certificate store
    
    # For Ubuntu or Debian - use update-ca-certificates
    sudo update-ca-certificates
    # For EFLOW or RHEL - use update-ca-trust
    sudo update-ca-trust
    

    لمزيد من المعلومات حول استخدام update-ca-trust في EFLOW، راجع إدارة شهادات CBL-Mariner SSL CA.

يبلغ الأمر عن إضافة شهادة واحدة إلى /etc/ssl/certs.

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.

تحديث ملف التكوين الأصل

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

  1. /etc/aziot/config.toml تحقق من وجود ملف التكوين على الجهاز الأصل.

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

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

    يمكنك أيضا استخدام ملف القالب كمرجع لإضافة معلمات التكوين في هذا القسم.

  2. افتح ملف تكوين IoT Edge باستخدام محرر. على سبيل المثال، استخدم nano المحرر لفتح /etc/aziot/config.toml الملف.

    sudo nano /etc/aziot/config.toml
    
  3. ابحث عن معلمة اسم المضيف أو أضفها إلى بداية ملف التكوين. قم بتحديث القيمة لتكون اسم المجال المؤهل بالكامل (FQDN) أو عنوان IP للجهاز الأصل IoT Edge. على سبيل المثال:

    hostname = "10.0.0.4"
    

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

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

    استخدم اسم مضيف أقصر من 64 حرفا، وهو حد الأحرف للاسم الشائع لشهادة الخادم.

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

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

  4. ابحث عن معلمة شهادة حزمة الثقة أو أضفها إلى بداية ملف التكوين.

    تحديث المعلمة trust_bundle_cert مع ملف URI إلى شهادة المرجع المصدق الجذر على جهازك. على سبيل المثال:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
  5. ابحث عن قسم شهادة Edge CA أو أضفه في ملف التكوين. قم بتحديث الشهادة cert ومعلمات المفتاح pk الخاص بمسارات URI للملف لشهادة السلسلة الكاملة والملفات الرئيسية على جهاز IoT Edge الأصل. يتطلب IoT Edge أن تكون الشهادة والمفتاح الخاص بتنسيق البريد المحسن للخصوصية (PEM) المستند إلى النص. على سبيل المثال:

    [edge_ca]
    cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"
    
  6. تحقق من أن جهاز IoT Edge يستخدم الإصدار الصحيح من عامل IoT Edge عند بدء تشغيله. ابحث عن قسم عامل Edge الافتراضي وقم بتعيين قيمة الصورة ل IoT Edge إلى الإصدار 1.5. على سبيل المثال:

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
  7. يجب أن تبدو بداية ملف التكوين الأصل مشابهة للمثال التالي.

    hostname = "10.0.0.4"
    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"
    
  8. احفظ ملف التكوين وأغلقه config.toml . على سبيل المثال، إذا كنت تستخدم محرر nano، فحدد Ctrl+O - Write Out و Enter و Ctrl+X - Exit.

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

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. تطبيق التغييرات.

    sudo iotedge config apply
    
  11. تحقق من وجود أي أخطاء في التكوين.

    sudo iotedge check --verbose
    

    إشعار

    على جهاز تم توفيره حديثا، قد ترى خطأ يتعلق ب IoT Edge Hub:

    × جاهزية الإنتاج: يستمر دليل تخزين Edge Hub على نظام ملفات المضيف - خطأ

    تعذر التحقق من الحالة الحالية لحاوية edgeHub

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

التحقق من التكوين الأصل

يجب أن يكون اسم المضيف اسم مجال مؤهل (FQDN) أو عنوان IP لجهاز IoT Edge لأن IoT Edge يستخدم هذه القيمة في شهادة الخادم عند اتصال أجهزة انتقال البيانات من الخادم. يجب أن تتطابق القيم وإلا فستحصل على خطأ عدم تطابق عنوان IP.

للتحقق من اسم المضيف، تحتاج إلى فحص متغيرات البيئة لحاوية edgeHub .

  1. سرد حاويات IoT Edge قيد التشغيل.

    iotedge list
    

    تحقق من تشغيل حاويات edgeAgent وedgeHub. يجب أن يكون إخراج الأمر مشابها للمثال التالي.

    NAME                        STATUS           DESCRIPTION      CONFIG
    SimulatedTemperatureSensor  running          Up 5 seconds     mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
    edgeAgent                   running          Up 17 seconds    mcr.microsoft.com/azureiotedge-agent:1.5
    edgeHub                     running          Up 6 seconds     mcr.microsoft.com/azureiotedge-hub:1.5
    
  2. افحص حاوية edgeHub.

    sudo docker inspect edgeHub
    
  3. في الإخراج، ابحث عن المعلمة EdgeDeviceHostName في قسم Env .

    "EdgeDeviceHostName=10.0.0.4"
    
  4. تحقق من تطابق قيمة المعلمة EdgeDeviceHostName مع config.tomlإعداد اسم المضيف. إذا لم تتطابق، فقد كانت حاوية edgeHub قيد التشغيل عند تعديل التكوين وتطبيقه. لتحديث EdgeDeviceHostName، قم بإزالة حاوية edgeAgent.

    sudo docker rm -f edgeAgent
    

    تتم إعادة إنشاء حاويات edgeAgent وedgeHub وبدء تشغيلها في غضون بضع دقائق. بمجرد تشغيل حاوية edgeHub ، افحص الحاوية وتحقق من تطابق المعلمة EdgeDeviceHostName مع ملف التكوين.

تكوين جهاز انتقال البيانات من الخادم

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

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

  1. تحقق من أن شهاداتك تفي بمتطلبات التنسيق.

  2. نقل شهادة المرجع المصدق الجذر وشهادة المرجع المصدق للجهاز التابع والمفتاحالخاص التابع إلى جهاز انتقال البيانات من الخادم.

  3. انسخ الشهادات والمفاتيح إلى الدلائل الصحيحة. الدلائل المفضلة لشهادات الجهاز هي /var/aziot/certs للشهادات والمفاتيح /var/aziot/secrets .

    ### Copy device certificate ###
    
    # If the device certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy device full-chain certificate and private key into the correct directory
    sudo cp iot-device-downstream-full-chain.cert.pem /var/aziot/certs
    sudo cp iot-device-downstream.key.pem /var/aziot/secrets
    
    ### Root certificate ###
    
    # Copy root certificate into the /certs directory
    sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs
    
    # Copy root certificate into the CA certificate directory and add .crt extension.
    # The root certificate must be in the CA certificate directory to install it in the certificate store.
    # Use the appropriate copy command for your device OS or if using EFLOW.
    
    # For Ubuntu and Debian, use /usr/local/share/ca-certificates/
    sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt
    # For EFLOW, use /etc/pki/ca-trust/source/anchors/
    sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crt
    
  4. تغيير ملكية الشهادات والمفاتيح وأذوناتها.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
    sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    
  5. قم بتثبيت شهادة المرجع المصدق الجذر على جهاز IoT Edge المتلقي للمعلومات عن طريق تحديث مخزن الشهادات على الجهاز باستخدام الأمر الخاص بالنظام الأساسي.

    # Update the certificate store
    
    # For Ubuntu or Debian - use update-ca-certificates
    sudo update-ca-certificates
    # For EFLOW or RHEL - use update-ca-trust
    sudo update-ca-trust
    

    لمزيد من المعلومات حول استخدام update-ca-trust في EFLOW، راجع إدارة شهادات CBL-Mariner SSL CA.

يبلغ الأمر عن إضافة شهادة واحدة إلى /etc/ssl/certs.

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.

تحديث ملف تكوين انتقال البيانات من الخادم

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

  1. /etc/aziot/config.toml تحقق من وجود ملف التكوين على جهاز انتقال البيانات من الخادم.

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

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

    يمكنك أيضا استخدام ملف القالب كمرجع لإضافة معلمات التكوين في هذا القسم.

  2. افتح ملف تكوين IoT Edge باستخدام محرر. على سبيل المثال، استخدم nano المحرر لفتح /etc/aziot/config.toml الملف.

    sudo nano /etc/aziot/config.toml
    
  3. ابحث عن المعلمة parent_hostname أو أضفها إلى بداية ملف التكوين يحتاج كل جهاز IoT Edge المتلقي للمعلومات إلى تحديد معلمة parent_hostname لتحديد الأصل الخاص به. قم بتحديث المعلمة parent_hostname لتكون FQDN أو عنوان IP للجهاز الأصل، ومطابقة كل ما تم توفيره باسم المضيف في ملف تكوين الجهاز الأصل. على سبيل المثال:

    parent_hostname = "10.0.0.4"
    
  4. ابحث عن معلمة شهادة حزمة الثقة أو أضفها إلى بداية ملف التكوين.

    تحديث المعلمة trust_bundle_cert مع ملف URI إلى شهادة المرجع المصدق الجذر على جهازك. على سبيل المثال:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
  5. ابحث عن قسم شهادة Edge CA أو أضفه في ملف التكوين. قم بتحديث الشهادة cert ومعلمات المفتاح pk الخاص بمسارات URI للملف لشهادة السلسلة الكاملة والملفات الرئيسية على جهاز انتقال البيانات من الخادم ل IoT Edge. يتطلب IoT Edge أن تكون الشهادة والمفتاح الخاص بتنسيق البريد المحسن للخصوصية (PEM) المستند إلى النص. على سبيل المثال:

    [edge_ca]
    cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"
    
  6. تحقق من أن جهاز IoT Edge يستخدم الإصدار الصحيح من عامل IoT Edge عند بدء تشغيله. ابحث عن قسم عامل Edge الافتراضي وقم بتعيين قيمة الصورة ل IoT Edge إلى الإصدار 1.5. على سبيل المثال:

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.config]
    image: "mcr.microsoft.com/azureiotedge-agent:1.5"
    
  7. يجب أن تبدو بداية ملف تكوين انتقال البيانات من الخادم مشابهة للمثال التالي.

    parent_hostname = "10.0.0.4"
    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"
    
  8. احفظ ملف التكوين وأغلقه config.toml . على سبيل المثال، إذا كنت تستخدم محرر nano، فحدد Ctrl+O - Write Out و Enter و Ctrl+X - Exit.

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

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. تطبيق التغييرات.

    sudo iotedge config apply
    
  11. تحقق من وجود أي أخطاء في التكوين.

    sudo iotedge check --verbose
    

    تلميح

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

    إشعار

    على جهاز تم توفيره حديثا، قد ترى خطأ يتعلق ب IoT Edge Hub:

    × جاهزية الإنتاج: يستمر دليل تخزين Edge Hub على نظام ملفات المضيف - خطأ

    تعذر التحقق من الحالة الحالية لحاوية edgeHub

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

عزل الشبكة لأجهزة انتقال البيانات من الخادم

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

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

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

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

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

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

تكوين الشبكة

لكل جهاز بوابة في الطبقة العليا، يحتاج مشغلو الشبكة إلى:

  • توفير عنوان IP ثابت أو اسم مجال مؤهل بالكامل (FQDN).

  • تخويل الاتصالات الصادرة من عنوان IP هذا إلى اسم مضيف Azure IoT Hub عبر المنفذين 443 (HTTPS) و5671 (AMQP).

  • تخويل الاتصالات الصادرة من عنوان IP هذا إلى اسم مضيف Azure Container Registry عبر المنفذ 443 (HTTPS).

    يمكن لوحدة وكيل واجهة برمجة التطبيقات معالجة الاتصالات بسجل حاوية واحد فقط في كل مرة. نوصي بتخزين جميع صور الحاوية، بما في ذلك الصور العامة التي يوفرها Microsoft Container Registry (mcr.microsoft.com)، في سجل الحاوية الخاص بك.

لكل جهاز بوابة في طبقة أقل، يحتاج مشغلو الشبكة إلى:

  • توفير عنوان IP ثابت.
  • تخويل الاتصالات الصادرة من عنوان IP هذا إلى عنوان IP للبوابة الأصل عبر المنفذين 443 (HTTPS) و5671 (AMQP).

نشر الوحدات النمطية على أجهزة الطبقة العليا

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

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

  1. في مدخل Microsoft Azure توجه إلى مركز IoT.

  2. حدد الأجهزة ضمن قائمة إدارة الأجهزة.

  3. حدد الطبقة العليا لجهاز IoT Edge الذي تقوم بتكوينه من القائمة.

  4. حدد Set modules.

  5. في قسم IoT Edge modules ، حدد Add ثم اختر IoT Edge Module.

  6. تحديث إعدادات الوحدة النمطية التالية:

    الإعداد القيمة‬
    اسم وحدة IoT النمطية IoTEdgeAPIProxy
    URI للصورة mcr.microsoft.com/azureiotedge-api-proxy:latest
    نهج إعادة تشغيل دائمًا
    الحالة المطلوبة تشغيل

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

    1. في علامة التبويب Environment variables ، أضف متغيرا يسمى NGINX_DEFAULT_PORT من النوع Text بقيمة 443.

    2. في علامة التبويب Container create options ، قم بتحديث روابط المنفذ إلى المنفذ المرجعي 443.

      {
        "HostConfig": {
          "PortBindings": {
            "443/tcp": [
              {
                "HostPort": "443"
              }
            ]
          }
        }
      }
      

    تقوم هذه التغييرات بتكوين وحدة وكيل واجهة برمجة التطبيقات للاستماع على المنفذ 443. لمنع تضارب ربط المنفذ، تحتاج إلى تكوين وحدة edgeHub النمطية لعدم الاستماع إلى المنفذ 443. بدلا من ذلك، ستقوم وحدة وكيل واجهة برمجة التطبيقات بتوجيه أي حركة مرور edgeHub على المنفذ 443.

  7. حدد Add لإضافة الوحدة النمطية إلى النشر.

  8. حدد إعدادات وقت التشغيل وابحث عن الوحدة النمطية edgeHub Container Create Options. احذف ربط المنفذ للمنفذ 443، تاركا روابط المنفذين 5671 و8883.

    {
      "HostConfig": {
        "PortBindings": {
          "5671/tcp": [
            {
              "HostPort": "5671"
            }
          ],
          "8883/tcp": [
            {
              "HostPort": "8883"
            }
          ]
        }
      }
    }
    
  9. حدد تطبيق لحفظ التغييرات التي أجريتها على إعدادات وقت التشغيل.

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

    1. في قسم IoT Edge modules ، حدد Add ثم اختر IoT Edge Module.

      الإعداد القيمة‬
      اسم وحدة IoT النمطية registry
      URI للصورة registry:latest
      نهج إعادة تشغيل always
      الحالة المطلوبة running
    2. في علامة التبويب Environment variables ، أضف المتغيرات التالية:

      Name نوع القيمة‬
      REGISTRY_PROXY_REMOTEURL Text عنوان URL لسجل الحاوية الذي تريد تعيين وحدة التسجيل هذه إليه. على سبيل المثال، https://myregistry.azurecr يمكن تعيين وحدة التسجيل إلى سجل حاوية واحد فقط، لذلك نوصي بوجود جميع صور الحاوية في سجل حاوية خاص واحد.
      REGISTRY_PROXY_USERNAME النص اسم المستخدم للمصادقة على سجل الحاوية.
      REGISTRY_PROXY_PASSWORD النص كلمة المرور للمصادقة على سجل الحاوية.
    3. في علامة التبويب Container create options ، قم بتحديث روابط المنفذ إلى المنفذ المرجعي 5000.

    {
      "HostConfig": {
        "PortBindings": {
          "5000/tcp": [
            {
              "HostPort": "5000"
            }
          ]
        }
      }
    }
    
  11. حدد Add لإضافة الوحدة النمطية إلى النشر.

  12. حدد Next: Routes للانتقال إلى الخطوة التالية.

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

    1. الاسم:Route
    2. القيمة: FROM /messages/* INTO $upstream
  14. حدد Review + create للانتقال إلى الخطوة الأخيرة.

  15. حدد إنشاء للنشر على جهازك.

نشر الوحدات النمطية على أجهزة الطبقة السفلية

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

سحب صورة حاوية المسار

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

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

على سبيل المثال، بدلا من استدعاء mcr.microsoft.com/azureiotedge-api-proxy:1.1، يجب أن تستدعي $upstream:443/azureiotedge-api-proxy:1.1أجهزة الطبقة السفلية .

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

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

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

تمهيد تشغيل عامل IoT Edge

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

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

إذا تم تكوين جهاز بوابة المستوى الأعلى لمعالجة طلبات صورة الحاوية، فاستبدل mcr.microsoft.com باسم المضيف الأصل ومنفذ الاستماع لوكيل واجهة برمجة التطبيقات. في بيان التوزيع، يمكنك استخدام $upstream كاختصار، ولكن يتطلب ذلك وحدة edgeHub لمعالجة التوجيه ولم تبدأ هذه الوحدة في هذه المرحلة. على سبيل المثال:

[agent]
name = "edgeAgent"
type = "docker"

[agent.config]
image: "{Parent FQDN or IP}:443/azureiotedge-agent:1.5"

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

تكوين وقت التشغيل ونشر وحدة الوكيل

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

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

  1. في مدخل Microsoft Azure توجه إلى مركز IoT.

  2. حدد الأجهزة ضمن قائمة إدارة الأجهزة.

  3. حدد جهاز IoT Edge للطبقة السفلية الذي تقوم بتكوينه من القائمة.

  4. حدد Set modules.

  5. في قسم IoT Edge modules ، حدد Add ثم اختر IoT Edge Module.

  6. تحديث إعدادات الوحدة النمطية التالية:

    الإعداد القيمة‬
    اسم وحدة IoT النمطية IoTEdgeAPIProxy
    URI للصورة mcr.microsoft.com/azureiotedge-api-proxy:latest
    نهج إعادة تشغيل always
    الحالة المطلوبة running

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

    1. في علامة التبويب Environment variables ، أضف متغيرا يسمى NGINX_DEFAULT_PORT من النوع Text بقيمة 443.

    2. في علامة التبويب Container create options ، قم بتحديث روابط المنفذ إلى المنفذ المرجعي 443.

      {
        "HostConfig": {
          "PortBindings": {
            "443/tcp": [
              {
                "HostPort": "443"
              }
            ]
          }
        }
      }
      

    تقوم هذه التغييرات بتكوين وحدة وكيل واجهة برمجة التطبيقات للاستماع على المنفذ 443. لمنع تضارب ربط المنفذ، تحتاج إلى تكوين وحدة edgeHub النمطية لعدم الاستماع إلى المنفذ 443. بدلا من ذلك، ستقوم وحدة وكيل واجهة برمجة التطبيقات بتوجيه أي حركة مرور edgeHub على المنفذ 443.

  7. حدد إعدادات وقت التشغيل.

  8. تحديث إعدادات الوحدة النمطية edgeHub:

    1. في حقل الصورة ، استبدل mcr.microsoft.com ب $upstream:443.
    2. في الحقل Create options ، احذف ربط المنفذ للمنفذ 443، تاركا روابط المنفذين 5671 و8883.
    {
      "HostConfig": {
        "PortBindings": {
          "5671/tcp": [
            {
              "HostPort": "5671"
            }
          ],
          "8883/tcp": [
            {
              "HostPort": "8883"
            }
          ]
        }
      }
    }
    
  9. تحديث إعدادات الوحدة النمطية edgeAgent:

    1. في حقل الصورة ، استبدل mcr.microsoft.com ب $upstream:443.
  10. حدد تطبيق لحفظ التغييرات التي أجريتها على إعدادات وقت التشغيل.

  11. حدد Next: Routes للانتقال إلى الخطوة التالية.

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

    1. الاسم:Route
    2. القيمة: FROM /messages/* INTO $upstream
  13. حدد Review + create للانتقال إلى الخطوة الأخيرة.

  14. حدد إنشاء للنشر على جهازك.

التحقق من الاتصال من التابع إلى الأصل

  1. تحقق من اتصال TLS/SSL من التابع إلى الأصل عن طريق تشغيل الأمر التالي openssl على جهاز انتقال البيانات من الخادم. استبدل <parent hostname> بعنوان FQDN أو IP الأصل.

    openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null
    

    يجب أن يؤكد الأمر التحقق الناجح من سلسلة الشهادات الأصلية على غرار المثال التالي:

    azureUser@child-vm:~$ openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null
    Can't use SSL_get_servername
    depth=3 CN = Azure_IoT_Hub_CA_Cert_Test_Only
    verify return:1
    depth=2 CN = Azure_IoT_Hub_Intermediate_Cert_Test_Only
    verify return:1
    depth=1 CN = gateway.ca
    verify return:1
    depth=0 CN = <parent hostname>
    verify return:1
    DONE
    

    يمكن تجاهل الرسالة "لا يمكن استخدام SSL_get_servername".

    depth=0 CN = يجب أن تتطابق القيمة مع معلمة اسم المضيف المحددة في ملف التكوين الأصلconfig.toml.

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

    تحذير

    يؤدي عدم استخدام شهادة سلسلة كاملة في قسم البوابة [edge_ca] إلى أخطاء التحقق من صحة الشهادة من جهاز انتقال البيانات من الخادم. على سبيل المثال، openssl s_client ... سينتج الأمر أعلاه:

    Can't use SSL_get_servername
    depth=1 CN = gateway.ca
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 CN = <parent hostname>
    verify return:1
    DONE
    

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

دمج Microsoft Defender ل IoT مع بوابة IoT Edge

يمكن استخدام أجهزة انتقال البيانات من الخادم لدمج عامل Microsoft Defender for IoT الصغير مع بوابة IoT Edge باستخدام وكيل جهاز انتقال البيانات من الخادم.

تعرف على المزيد حول Defender for IoT micro agent.

لدمج Microsoft Defender for IoT مع IoT Edge باستخدام وكيل جهاز انتقال البيانات من الخادم:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى أجهزة إدارة>أجهزة IoT Hub>Your Hub>

  3. حدد الجهاز الخاص بك.

    لقطة شاشة تعرض مكان وجود جهازك للاختيار.

  4. حدد الوحدة النمطية المزدوجة DefenderIotMicroAgent التي قمت بإنشائها من هذه الإرشادات.

    لقطة شاشة تعرض موقع DefenderIotMicroAgent.

  5. حدد الزر لنسخ سلسلة الاتصال (المفتاح الأساسي).

  6. الصق سلسلة الاتصال في تطبيق تحرير نص، وأضف GatewayHostName إلى السلسلة. GatewayHostName هو اسم المجال المؤهل بالكامل أو عنوان IP للجهاز الأصل. على سبيل المثال، HostName=nested11.azure-devices.net;DeviceId=downstream1;ModuleId=module1;SharedAccessKey=xxx;GatewayHostName=10.16.7.4

  7. افتح محطة طرفية على جهاز انتقال البيانات من الخادم.

  8. استخدم الأمر التالي لوضع سلسلة الاتصال المشفرة في utf-8 في دليل وكيل Defender for Cloud في الملف connection_string.txt في المسار التالي: /etc/defender_iot_micro_agent/connection_string.txt

    sudo bash -c 'echo "<connection string>" > /etc/defender_iot_micro_agent/connection_string.txt'
    

    connection_string.txt يجب أن يكون موجودا الآن في موقع /etc/defender_iot_micro_agent/connection_string.txtالمسار التالي .

  9. إعادة تشغيل الخدمة باستخدام هذا الأمر:

    sudo systemctl restart defender-iot-micro-agent.service 
    
  10. انتقل مرة أخرى إلى الجهاز.

    لقطة شاشة توضح كيفية الانتقال مرة أخرى إلى جهازك.

  11. قم بتمكين الاتصال بمركز IoT، وحدد أيقونة الترس.

    لقطة شاشة توضح ما يجب تحديده لتعيين جهاز أصل.

  12. حدد الجهاز الأصل من القائمة المعروضة.

  13. تأكد من فتح المنفذ 8883 (MQTT) بين جهاز انتقال البيانات من الخادم وجهاز IoT Edge.

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

كيف يمكن استخدام جهاز IoT Edge كبوابة

تكوين وحدة وكيل واجهة برمجة التطبيقات لسيناريو التسلسل الهرمي للبوابة