تكوين جهاز IoT Edge للاتصال من خلال خادم وكيل

ينطبق على:yes icon IoT Edge 1.1 إصدارات أخرى:IoT Edge 1.2

ينطبق على:yes icon IoT Edge 1.2 إصدارات أخرى:IoT Edge 1.1

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

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

  1. تثبيت وقت تشغيل IoT Edge على جهازك

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

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

  2. تكوين IoT Edge ووقت تشغيل الحاوية على جهازك

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

    هذه الخطوة هي عملية لمرة واحدة لتكوين جهاز IoT Edge عند إعداده لأول مرة.

  3. تكوين خصائص عامل IoT Edge في ملف التكوين على جهازك

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

    هذه الخطوة هي عملية لمرة واحدة لتكوين جهاز IoT Edge عند إعداده لأول مرة.

  4. بالنسبة لجميع عمليات نشر الوحدات النمطية المستقبلية، قم بتعيين متغيرات البيئة لأي وحدة نمطية تتصل من خلال الوكيل

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

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

تعرف على عنوان URL للوكيل

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

تتخذ عناوين URL الوكيلة التنسيق التالي: protocol://proxy_host:proxy_port.

  • البروتوكول هو إما HTTP أو HTTPS. يمكن ل Docker daemon استخدام أي من البروتوكولين، اعتمادا على إعدادات تسجيل الحاوية، ولكن يجب أن تستخدم حاويات IoT Edge الخفية وحاويات وقت التشغيل دائما HTTP للاتصال بالوكيل.

  • proxy_host هو عنوان للخادم الوكيل. إذا كان الخادم الوكيل يتطلب المصادقة، فيمكنك توفير بيانات الاعتماد الخاصة بك كجزء من المضيف الوكيل بالتنسيق التالي: user:password@proxy_host.

  • proxy_port هو منفذ الشبكة الذي يستجيب فيه الوكيل لحركة مرور الشبكة.

تثبيت IoT Edge من خلال وكيل

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

أجهزة لينكس

إذا كنت تقوم بتثبيت وقت تشغيل IoT Edge على جهاز Linux، فقم بتكوين مدير الحزم للانتقال عبر الخادم الوكيل للوصول إلى حزمة التثبيت. على سبيل المثال، قم بإعداد apt-get لاستخدام وكيل http. بمجرد تكوين مدير الحزم الخاص بك، اتبع الإرشادات الواردة في تثبيت وقت تشغيل Azure IoT Edge كالمعتاد.

Windows الأجهزة التي تستخدم IoT Edge لنظام التشغيل Linux على Windows

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

أجهزة Windows باستخدام حاويات Windows

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

توضح الخطوات التالية مثالا على تثبيت Windows باستخدام الوسيطة -proxy :

  1. يحتاج الأمر Invoke-WebRequest إلى معلومات الوكيل للوصول إلى البرنامج النصي للمثبت. ثم يحتاج الأمر Deploy-IoTEdge إلى معلومات الوكيل لتنزيل ملفات التثبيت.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
    
  2. لا يحتاج الأمر Initialize-IoTEdge إلى المرور عبر الخادم الوكيل، لذا فإن الخطوة الثانية تتطلب فقط معلومات الوكيل ل Invoke-WebRequest.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
    

إذا كانت لديك بيانات اعتماد معقدة للخادم الوكيل لا يمكن تضمينها في عنوان URL، فاستخدم المعلمة -ProxyCredential داخل -InvokeWebRequestParameters. على سبيل المثال،

$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }

لمزيد من المعلومات حول معلمات الوكيل، راجع استدعاء WebRequest. لمزيد من المعلومات حول معلمات تثبيت Windows، راجع البرامج النصية PowerShell ل IoT Edge على Windows.

تكوين IoT Edge و Moby

تعتمد IoT Edge على اثنين من البرامج الخفية التي تعمل على جهاز IoT Edge. يقدم Moby daemon طلبات ويب لسحب صور الحاويات من سجلات الحاويات. يقدم برنامج IoT Edge الخفي طلبات الويب للتواصل مع IoT Hub.

يجب تكوين كل من Moby و IoT Edge الخفية لاستخدام الخادم الوكيل لوظائف الجهاز المستمرة. تتم هذه الخطوة على جهاز IoT Edge أثناء الإعداد الأولي للجهاز.

موبي الخفي

نظرا لأن Moby مبني على Docker ، فراجع وثائق Docker لتكوين Moby daemon مع متغيرات البيئة. تدعم معظم سجلات الحاويات (بما في ذلك DockerHub وسجلات حاويات Azure) طلبات HTTPS، وبالتالي فإن المعلمة التي يجب تعيينها هي HTTPS_PROXY. إذا كنت تقوم بسحب الصور من سجل لا يدعم أمان طبقة النقل (TLS) ، فيجب عليك تعيين معلمة HTTP_PROXY .

اختر المقالة التي تنطبق على نظام تشغيل جهاز IoT Edge:

IoT Edge daemon

يتم تكوين برنامج IoT Edge الخفي بطريقة مشابهة ل Moby daemon. اتبع الخطوات التالية لتعيين متغير بيئة للخدمة، استنادا إلى نظام التشغيل الخاص بك.

يستخدم برنامج IoT Edge الخفي دائما HTTPS لإرسال الطلبات إلى IoT Hub.

Linux

افتح محررا في المحطة الطرفية لتكوين البرنامج الخفي IoT Edge.

sudo systemctl edit iotedge

أدخل النص التالي، واستبدل <عنوان URL> الوكيل بعنوان الخادم الوكيل والمنفذ. ثم قم بالحفظ والخروج.

[Service]
Environment=https_proxy=<proxy URL>

قم بتحديث مدير الخدمة لالتقاط التكوين الجديد ل IoT Edge.

sudo systemctl daemon-reload

أعد تشغيل IoT Edge لتصبح التغييرات سارية المفعول.

sudo systemctl restart iotedge

تحقق من إنشاء متغير البيئة، وتم تحميل التكوين الجديد.

systemctl show --property=Environment iotedge

افتح محررا في المحطة الطرفية لتكوين البرنامج الخفي IoT Edge.

sudo systemctl edit aziot-edged

أدخل النص التالي، واستبدل <عنوان URL> الوكيل بعنوان الخادم الوكيل والمنفذ. ثم قم بالحفظ والخروج.

[Service]
Environment=https_proxy=<proxy URL>

بدءا من الإصدار 1.2 ، يستخدم IoT Edge خدمة هوية إنترنت الأشياء للتعامل مع توفير الأجهزة باستخدام IoT Hub أو IoT Hub Device Provisioning Service. افتح محررا في المحطة الطرفية لتكوين خفي خدمة هوية إنترنت الأشياء.

sudo systemctl edit aziot-identityd

أدخل النص التالي، واستبدل <عنوان URL> الوكيل بعنوان الخادم الوكيل والمنفذ. ثم قم بالحفظ والخروج.

[Service]
Environment=https_proxy=<proxy URL>

قم بتحديث مدير الخدمة لالتقاط التكوينات الجديدة.

sudo systemctl daemon-reload

أعد تشغيل خدمات نظام IoT Edge لتصبح التغييرات التي تطرأ على كلا الخفيفين سارية المفعول.

sudo iotedge system restart

تحقق من إنشاء متغيرات البيئة، وتم تحميل التكوين الجديد.

systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd

Windows باستخدام IoT Edge لنظام التشغيل Linux على Windows

قم بتسجيل الدخول إلى IoT Edge لنظام التشغيل Linux على الجهاز الظاهري Windows:

Connect-EflowVm

اتبع نفس الخطوات مثل قسم Linux أعلاه لتكوين برنامج IoT Edge الخفي.

Windows باستخدام حاويات Windows

افتح نافذة PowerShell كمسؤول وقم بتشغيل الأمر التالي لتحرير التسجيل باستخدام متغير البيئة الجديد. استبدل عنوان URL الوكيل<> بعنوان الخادم الوكيل والمنفذ.

reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>

أعد تشغيل IoT Edge لتصبح التغييرات سارية المفعول.

Restart-Service iotedge

تكوين عامل IoT Edge

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

تتم هذه الخطوة مرة واحدة على جهاز IoT Edge أثناء الإعداد الأولي للجهاز.

  1. افتح ملف config.yaml على جهاز IoT Edge. على أنظمة لينكس، يوجد هذا الملف في /etc/iotedge/config.yaml. على أنظمة Windows، يوجد هذا الملف في C:\ProgramData\iotedge\config.yaml. ملف التكوين محمي، لذلك تحتاج إلى امتيازات إدارية للوصول إليه. على أنظمة Linux ، استخدم sudo الأمر قبل فتح الملف في محرر النصوص المفضل لديك. على Windows، افتح محرر نصوص مثل المفكرة كمسؤول ثم افتح الملف.

  2. في ملف config.yaml، ابحث عن قسم مواصفات الوحدة النمطية لعامل الحافة . يتضمن تعريف عامل IoT Edge معلمة env حيث يمكنك إضافة متغيرات البيئة.

  3. قم بإزالة الأقواس المتعرجة التي هي عناصر نائبة لمعلمة env، وأضف المتغير الجديد على سطر جديد. تذكر أن المسافات البادئة في YAML عبارة عن مسافتين.

    https_proxy: "<proxy URL>"
    
  4. يستخدم وقت تشغيل IoT Edge AMQP بشكل افتراضي للتحدث إلى IoT Hub. تحظر بعض الخوادم الوكيلة منافذ AMQP. إذا كان الأمر كذلك ، فأنت بحاجة أيضا إلى تكوين edgeAgent لاستخدام AMQP عبر WebSocket. إضافة متغير بيئة ثانية.

    UpstreamProtocol: "AmqpWs"
    

    edgeAgent definition with environment variables

  5. احفظ التغييرات في config.yaml وأغلق المحرر. أعد تشغيل IoT Edge لتصبح التغييرات سارية المفعول.

    • Linux و IoT Edge for Linux على Windows:

      sudo systemctl restart iotedge
      
    • Windows باستخدام حاويات Windows:

      Restart-Service iotedge
      
  1. افتح ملف التكوين على جهاز IoT Edge الخاص بك: /etc/aziot/config.toml. ملف التكوين محمي، لذلك تحتاج إلى امتيازات إدارية للوصول إليه. على أنظمة Linux ، استخدم sudo الأمر قبل فتح الملف في محرر النصوص المفضل لديك.

  2. في ملف التكوين، ابحث عن [agent] المقطع الذي يحتوي على كافة معلومات التكوين الخاصة بالوحدة النمطية edgeAgent لاستخدامها عند بدء التشغيل. تحقق وتأكد من أن [agent]القسم غير معلق أو أضفه إذا لم يكن مضمنا في config.tomlملف . يتضمن تعريف عامل IoT Edge قسما فرعيا [agent.env] حيث يمكنك إضافة متغيرات البيئة.

  3. أضف معلمة https_proxy إلى قسم متغيرات البيئة، وقم بتعيين عنوان URL للوكيل كقيمة له.

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    # "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  4. يستخدم وقت تشغيل IoT Edge AMQP بشكل افتراضي للتحدث إلى IoT Hub. تحظر بعض الخوادم الوكيلة منافذ AMQP. إذا كان الأمر كذلك ، فأنت بحاجة أيضا إلى تكوين edgeAgent لاستخدام AMQP عبر WebSocket. إلغاء التعليق على المعلمة UpstreamProtocol .

    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  5. احفظ التغييرات وأغلق المحرر. تطبيق أحدث التغييرات التي أجريتها.

    sudo iotedge config apply
    

تكوين بيانات النشر

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

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

بالإضافة إلى وحدات edgeAgent و edgeHub ، قد تحتاج الوحدات النمطية الأخرى إلى تكوين الوكيل. يجب أن تحتوي الوحدات النمطية التي تحتاج إلى الوصول إلى موارد Azure إلى جانب IoT Hub، مثل تخزين blob، على متغير HTTPS_PROXY المحدد في ملف بيان النشر.

ينطبق الإجراء التالي طوال عمر جهاز IoT Edge.

مدخل Azure

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

لتكوين وحدة موزع IoT Edge ووحدات موزع IoT Edge، حدد وقت التشغيل الإعدادات في الخطوة الأولى من المعالج.

Configure advanced Edge Runtime settings

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

Set https_proxy environment variable

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

ملفات بيانات نشر JSON

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

استخدم تنسيق JSON التالي:

"env": {
    "https_proxy": {
        "value": "<proxy URL>"
    }
}

مع تضمين متغيرات البيئة، يجب أن يبدو تعريف الوحدة النمطية مثل مثال edgeHub التالي:

"edgeHub": {
    "type": "docker",
    "settings": {
        "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
        "createOptions": "{}"
    },
    "env": {
        "https_proxy": {
            "value": "http://proxy.example.com:3128"
        }
    },
    "status": "running",
    "restartPolicy": "always"
}

إذا قمت بتضمين متغير بيئة UpstreamProtocol في ملف confige.yaml على جهاز IoT Edge الخاص بك، فأضف ذلك إلى تعريف الوحدة النمطية لعامل IoT Edge أيضا.

"env": {
    "https_proxy": {
        "value": "<proxy URL>"
    },
    "UpstreamProtocol": {
        "value": "AmqpWs"
    }
}

العمل مع وكلاء فحص حركة المرور

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

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

أسماء نطاقات مؤهلة بالكامل (FQDNs) للوجهات التي تتواصل معها IoT Edge

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

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

تعرف على المزيد حول أدوار وقت تشغيل IoT Edge.

استكشاف أخطاء التثبيت والتكوين وإصلاحها باستخدام المشكلات والحلول الشائعة ل Azure IoT Edge