تكوين جهاز IoT Edge للاتصال من خلال خادم وكيل
ينطبق على: IoT Edge 1.5 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 طلبات HTTPS للاتصال ب IoT Hub. إذا قمت بتوصيل جهازك بشبكة تستخدم خادم وكيل، فستحتاج إلى تكوين وقت تشغيل IoT Edge للاتصال من خلال الخادم. يمكن أن تؤثر الخوادم الوكيلة أيضا على وحدات IoT Edge الفردية إذا قامت بإجراء طلبات HTTP أو HTTPS التي لم توجهها من خلال مركز IoT Edge.
تتناول هذه المقالة الخطوات الأربع التالية لتكوين جهاز IoT Edge وإدارته خلف خادم وكيل:
تثبيت وقت تشغيل IoT Edge على جهازك
تسحب البرامج النصية لتثبيت IoT Edge الحزم والملفات من الإنترنت، لذلك يحتاج جهازك إلى الاتصال من خلال الخادم الوكيل لتقديم هذه الطلبات. بالنسبة لأجهزة Windows، يوفر البرنامج النصي للتثبيت أيضا خيار تثبيت دون اتصال.
هذه الخطوة هي عملية لمرة واحدة لتكوين جهاز IoT Edge عند إعداده لأول مرة. تحتاج أيضا إلى نفس هذه الاتصالات عند تحديث وقت تشغيل IoT Edge.
تكوين IoT Edge ووقت تشغيل الحاوية على جهازك
IoT Edge مسؤول عن الاتصالات مع IoT Hub. وقت تشغيل الحاوية مسؤول عن إدارة الحاوية، لذلك يتصل بسجلات الحاويات. يحتاج كلا المكونين إلى إجراء طلبات ويب من خلال الخادم الوكيل.
هذه الخطوة هي عملية لمرة واحدة لتكوين جهاز IoT Edge عند إعداده لأول مرة.
تكوين خصائص عامل IoT Edge في ملف التكوين على جهازك
يبدأ برنامج IoT Edge الخفي وحدة edgeAgent في البداية. بعد ذلك، تسترد الوحدة النمطية edgeAgent بيان النشر من IoT Hub وتبدأ جميع الوحدات النمطية الأخرى. تكوين متغيرات بيئة الوحدة النمطية edgeAgent يدويا على الجهاز نفسه، بحيث يمكن لعامل IoT Edge إجراء الاتصال الأولي ب IoT Hub. بعد الاتصال الأولي، يمكنك تكوين الوحدة النمطية edgeAgent عن بعد.
هذه الخطوة هي عملية لمرة واحدة لتكوين جهاز IoT Edge عند إعداده لأول مرة.
-
بمجرد إعداد جهاز IoT Edge وتوصيله ب IoT Hub من خلال الخادم الوكيل، تحتاج إلى الحفاظ على الاتصال في جميع عمليات نشر الوحدة النمطية المستقبلية.
هذه الخطوة هي عملية مستمرة يتم إجراؤها عن بعد بحيث يحافظ كل وحدة نمطية جديدة أو تحديث نشر على قدرة الجهاز على الاتصال من خلال الخادم الوكيل.
تعرف على عنوان URL للوكيل
قبل أن تبدأ أي من الخطوات الواردة في هذه المقالة، تحتاج إلى معرفة عنوان URL للوكيل.
تأخذ عناوين URL للوكيل التنسيق التالي: protocol://proxy_host:proxy_port.
البروتوكول إما HTTP أو HTTPS. يمكن أن يستخدم Docker daemon أي من البروتوكولين، اعتمادا على إعدادات سجل الحاوية، ولكن يجب أن يستخدم البرنامج الخفي IoT Edge وحاويات وقت التشغيل دائما HTTP للاتصال بالوكيل.
proxy_host هو عنوان للخادم الوكيل. إذا كان الخادم الوكيل يتطلب مصادقة، يمكنك توفير بيانات الاعتماد الخاصة بك كجزء من مضيف الوكيل بالتنسيق التالي: المستخدم:كلمة المرور@proxy_host.
proxy_port هو منفذ الشبكة الذي يستجيب فيه الوكيل لحركة مرور الشبكة.
تثبيت IoT Edge من خلال وكيل
سواء كان جهاز IoT Edge يعمل على Windows أو Linux، فأنت بحاجة إلى الوصول إلى حزم التثبيت من خلال الخادم الوكيل. اعتمادا على نظام التشغيل الخاص بك، اتبع الخطوات لتثبيت وقت تشغيل IoT Edge من خلال خادم وكيل.
أجهزة Linux
إذا كنت تقوم بتثبيت وقت تشغيل IoT Edge على جهاز Linux، فقم بتكوين مدير الحزمة للانتقال عبر الخادم الوكيل للوصول إلى حزمة التثبيت. على سبيل المثال، إعداد apt-get لاستخدام وكيل http. بمجرد تكوين مدير الحزمة، اتبع الإرشادات الواردة في تثبيت وقت تشغيل Azure IoT Edge كالمعتاد.
أجهزة Windows التي تستخدم IoT Edge ل Linux على Windows
إذا كنت تقوم بتثبيت وقت تشغيل IoT Edge باستخدام IoT Edge ل Linux على Windows، يتم تثبيت IoT Edge بشكل افتراضي على جهاز Linux الظاهري. لست مطالبا بتثبيت أي خطوات أخرى أو تحديثها.
أجهزة Windows التي تستخدم حاويات Windows
إذا كنت تقوم بتثبيت وقت تشغيل IoT Edge على جهاز Windows، فستحتاج إلى الانتقال عبر الخادم الوكيل مرتين. يقوم الاتصال الأول بتنزيل ملف البرنامج النصي المثبت، والاتصال الثاني هو أثناء التثبيت لتنزيل المكونات الضرورية. يمكنك تكوين معلومات الوكيل في إعدادات Windows، أو تضمين معلومات الوكيل مباشرة في أوامر PowerShell.
توضح الخطوات التالية مثالا على تثبيت windows باستخدام الوسيطة -proxy
:
يحتاج الأمر Invoke-WebRequest إلى معلومات الوكيل للوصول إلى البرنامج النصي للمثبت. ثم يحتاج الأمر Deploy-IoTEdge إلى معلومات الوكيل لتنزيل ملفات التثبيت.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
لا يحتاج الأمر 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 }
لمزيد من المعلومات حول معلمات الوكيل، راجع Invoke-WebRequest.
تكوين IoT Edge و Moby
يعتمد IoT Edge على برنامجين خفيين يعملان على جهاز IoT Edge. يقدم برنامج Moby الخفي طلبات ويب لسحب صور الحاوية من سجلات الحاويات. يقدم برنامج IoT Edge الخفي طلبات ويب للاتصال ب IoT Hub.
يجب تكوين كل من برامج Moby وIoT Edge الخفية لاستخدام الخادم الوكيل لوظائف الجهاز المستمرة. تحدث هذه الخطوة على جهاز IoT Edge أثناء إعداد الجهاز الأولي.
موبي الخفي
نظرا لأن Moby مبني على Docker، راجع وثائق Docker لتكوين البرنامج الخفي Moby مع متغيرات البيئة. تدعم معظم سجلات الحاويات (بما في ذلك DockerHub وسجلات حاويات Azure) طلبات HTTPS، لذلك المعلمة التي يجب تعيينها هي HTTPS_PROXY. إذا كنت تسحب الصور من سجل لا يدعم أمان طبقة النقل (TLS)، فيجب عليك تعيين المعلمة HTTP_PROXY .
اختر المقالة التي تنطبق على نظام تشغيل جهاز IoT Edge:
- تكوين Docker daemon على Linux يحتفظ برنامج Moby الخفي على أجهزة Linux باسم Docker.
- تكوين Docker daemon على Windows يسمى برنامج Moby الخفي على أجهزة Windows iotedge-moby. تختلف الأسماء لأنه من الممكن تشغيل كل من Docker Desktop و Moby بالتوازي على جهاز Windows.
برنامج IoT Edge الخفي
يشبه برنامج IoT Edge الخفي برنامج Moby الخفي. استخدم الخطوات التالية لتعيين متغير بيئة للخدمة، استنادا إلى نظام التشغيل الخاص بك.
يستخدم برنامج IoT Edge الخفي دائما HTTPS لإرسال الطلبات إلى IoT Hub.
Linux
افتح محررا في المحطة الطرفية لتكوين برنامج IoT Edge الخفي.
sudo systemctl edit aziot-edged
أدخل النص التالي، واستبدل <عنوان URL> الوكيل بعنوان الخادم الوكيل والمنفذ. بعد ذلك، قم بالحفظ والخروج.
[Service]
Environment="https_proxy=<proxy URL>"
بدءا من الإصدار 1.2، يستخدم IoT Edge خدمة هوية IoT للتعامل مع تزويد الجهاز مع IoT Hub أو خدمة توفير جهاز IoT Hub. افتح محررا في المحطة الطرفية لتكوين البرنامج الخفي لخدمة هوية IoT.
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 أثناء إعداد الجهاز الأولي.
افتح ملف التكوين على جهاز IoT Edge:
/etc/aziot/config.toml
. تحتاج إلى امتيازات إدارية للوصول إلى ملف التكوين. على أنظمة Linux، استخدمsudo
الأمر قبل فتح الملف في محرر النص المفضل لديك.في ملف التكوين، ابحث عن
[agent]
القسم الذي يحتوي على جميع معلومات التكوين للوحدة النمطية edgeAgent لاستخدامها عند بدء التشغيل. تحقق للتأكد من أن[agent]
المقطع بدون تعليقات.[agent]
إذا كان المقطع مفقودا، أضفه إلىconfig.toml
. يتضمن تعريف عامل IoT Edge قسما فرعيا[agent.env]
حيث يمكنك إضافة متغيرات البيئة.أضف المعلمة https_proxy إلى قسم متغيرات البيئة، وقم بتعيين عنوان URL للوكيل كقيمة له.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
يستخدم وقت تشغيل IoT Edge AMQP بشكل افتراضي للتحدث إلى IoT Hub. تحظر بعض خوادم الوكيل منافذ AMQP. إذا كان الأمر كذلك، فأنت بحاجة أيضا إلى تكوين edgeAgent لاستخدام AMQP عبر WebSocket. إلغاء تعليق المعلمة
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
أضف المعلمة https_proxy إلى قسم متغيرات البيئة، وقم بتعيين عنوان URL للوكيل كقيمة له.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
يستخدم وقت تشغيل IoT Edge AMQP بشكل افتراضي للتحدث إلى IoT Hub. تحظر بعض خوادم الوكيل منافذ AMQP. إذا كان الأمر كذلك، فأنت بحاجة أيضا إلى تكوين edgeAgent لاستخدام AMQP عبر WebSocket. إلغاء تعليق المعلمة
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
احفظ التغييرات وأغلق المحرر. تطبيق التغييرات الأخيرة.
sudo iotedge config apply
تحقق من نشر إعدادات الوكيل باستخدام
docker inspect edgeAgent
فيEnv
القسم . إذا لم يكن الأمر كما هو، يجب إعادة إنشاء الحاوية.sudo docker rm -f edgeAgent
يجب إعادة إنشاء
edgeAgent
وقت تشغيل IoT Edge في غضون دقيقة. بمجرد تشغيل الحاويةedgeAgent
مرة أخرى، استخدمdocker inspect edgeAgent
الأمر للتحقق من أن إعدادات الوكيل تطابق ملف التكوين.
تكوين بيانات التوزيع
بمجرد تكوين جهاز IoT Edge للعمل مع الخادم الوكيل، قم بتعريف متغير البيئة HTTPS_PROXY في بيانات النشر المستقبلية. يمكنك تحرير بيانات النشر إما باستخدام معالج مدخل Microsoft Azure أو عن طريق تحرير ملف JSON لبيان التوزيع.
قم دائما بتكوين وحدتي وقت التشغيل، edgeAgent وedgeHub، للاتصال من خلال الخادم الوكيل حتى يتمكنوا من الحفاظ على اتصال مع IoT Hub. إذا قمت بإزالة معلومات الوكيل من الوحدة النمطية edgeAgent، فإن الطريقة الوحيدة لإعادة إنشاء الاتصال هي عن طريق تحرير ملف التكوين على الجهاز، كما هو موضح في القسم السابق.
بالإضافة إلى الوحدات النمطية edgeAgent وedgeHub، قد تحتاج الوحدات النمطية الأخرى إلى تكوين الوكيل. يجب أن تحتوي الوحدات النمطية التي تحتاج إلى الوصول إلى موارد Azure إلى جانب IoT Hub، مثل تخزين كائن ثنائي كبير الحجم، على متغير HTTPS_PROXY المحدد في ملف بيان التوزيع.
ينطبق الإجراء التالي طوال عمر جهاز IoT Edge.
مدخل Azure
عند استخدام معالج تعيين الوحدات النمطية لإنشاء عمليات نشر لأجهزة IoT Edge، تحتوي كل وحدة نمطية على قسم متغيرات البيئة حيث يمكنك تكوين اتصالات الخادم الوكيل.
لتكوين عامل IoT Edge ووحدات مركز IoT Edge، حدد إعدادات وقت التشغيل في الخطوة الأولى من المعالج.
أضف متغير البيئة https_proxy إلى كل من عامل IoT Edge وتعريفات إعدادات وقت تشغيل وحدة مركز IoT Edge. إذا قمت بإدراج متغير البيئة UpstreamProtocol في ملف التكوين على جهاز IoT Edge، أضف ذلك إلى تعريف الوحدة النمطية لعامل IoT Edge أيضا.
تتبع جميع الوحدات النمطية الأخرى التي تضيفها إلى بيان التوزيع نفس النمط. حدد تطبيق لحفظ التغييرات الخاصة بك.
ملفات بيان توزيع JSON
إذا قمت بإنشاء عمليات نشر لأجهزة IoT Edge باستخدام القوالب في Visual Studio Code أو عن طريق إنشاء ملفات JSON يدويا، يمكنك إضافة متغيرات البيئة مباشرة إلى كل تعريف وحدة نمطية. إذا لم تقم بإضافتها في مدخل Microsoft Azure، أضفها هنا إلى ملف بيان JSON. استبدل <proxy URL>
بقيمك الخاصة.
استخدم تنسيق JSON التالي:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
مع تضمين متغيرات البيئة، يجب أن يبدو تعريف الوحدة النمطية مثل مثال edgeHub التالي:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"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"
}
}
العمل مع وكلاء فحص حركة المرور
يمكن لبعض وكلاء مثل Zscaler فحص نسبة استخدام الشبكة المشفرة من TLS. أثناء فحص حركة مرور TLS، الشهادة التي تم إرجاعها بواسطة الوكيل ليست الشهادة من الخادم الهدف، ولكن بدلا من ذلك هي الشهادة الموقعة من قبل شهادة الجذر الخاصة بالوكيل. بشكل افتراضي، لا تثق وحدات IoT Edge (بما في ذلك edgeAgent وedgeHub) في شهادة هذا الوكيل ويفشل تأكيد اتصال TLS.
لحل تأكيد الاتصال الفاشل، قم بتكوين كل من نظام التشغيل ووحدات IoT Edge للثقة في شهادة جذر الوكيل بالخطوات التالية.
تكوين شهادة الوكيل في مخزن شهادات الجذر الموثوق به لنظام التشغيل المضيف. لمزيد من المعلومات حول كيفية تثبيت شهادة جذر، راجع تثبيت المرجع المصدق الجذر إلى مخزن شهادات نظام التشغيل.
قم بتكوين جهاز IoT Edge للاتصال من خلال خادم وكيل عن طريق الرجوع إلى الشهادة في حزمة الثقة. لمزيد من المعلومات حول كيفية تكوين مجموعة الثقة، راجع إدارة المرجع المصدق الجذر الموثوق به (حزمة الثقة).
لتكوين دعم وكيل فحص حركة المرور للحاويات التي لا يديرها IoT Edge، اتصل بموفر الوكيل.
أسماء المجالات المؤهلة بالكامل (FQDNs) للوجهات التي يتصل بها IoT Edge
إذا كان جدار حماية الوكيل يتطلب منك إضافة جميع FQDNs إلى قائمة السماح للاتصال بالإنترنت، فراجع القائمة من السماح بالاتصالات من أجهزة IoT Edge لتحديد FQDNs التي يجب إضافتها.
الخطوات التالية
تعرف على المزيد حول أدوار وقت تشغيل IoT Edge.
استكشاف أخطاء التثبيت والتكوين وإصلاحها مع المشكلات الشائعة والحلول ل Azure IoT Edge