كيفية ترحيل مركز Azure IoT يدويا باستخدام قالب Azure Resource Manager

استخدم مدخل Microsoft Azure وقوالب Azure Resource Manager ومجموعات SDK لخدمة Azure IoT Hub لترحيل مركز IoT إلى منطقة جديدة أو طبقة جديدة أو تكوين جديد.

الخطوات الواردة في هذه المقالة مفيدة إذا كنت تريد:

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

مقارنة خطوات الترحيل التلقائية واليدوية

تشبه نتيجة هذه المقالة كيفية ترحيل مركز IoT تلقائيا باستخدام Azure CLI، ولكن مع عملية مختلفة. قبل البدء، حدد العملية المناسبة للسيناريو الخاص بك.

  • العملية اليدوية (هذه المقالة):

    • ترحيل سجل جهازك ومعلومات التوجيه ونقطة النهاية. يجب عليك إعادة إنشاء تفاصيل التكوين الأخرى يدويا في مركز IoT الجديد.
    • أسرع لترحيل أعداد كبيرة من الأجهزة (على سبيل المثال، أكثر من 100,000).
    • يستخدم حساب تخزين Azure لنقل سجل الجهاز.
    • ينظف سلاسل الاتصال للتوجيه ونقاط نهاية تحميل الملفات من إخراج قالب ARM، وتحتاج إلى إضافتها مرة أخرى يدويا.
  • عملية Azure CLI:

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

النقاط الواجب مراعاتها

هناك العديد من الأشياء التي يجب مراعاتها قبل ترحيل مركز IoT.

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

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

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

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

  • يمكنك نسخ الأجهزة إلى المركز الجديد دون إيقاف تشغيل الأجهزة أو تغييرها.

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

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

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

المنهجية

هذه هي الطريقة العامة التي نوصي بها لترحيل مركز IoT.

  1. تصدير المركز وإعداداته إلى قالب Resource Manager.

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

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

  4. قم بتتبع الأخطاء حسب الحاجة.

  5. أضف أي شيء لم يتم تصديره إلى القالب.

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

  6. انسخ الأجهزة من المركز الأصلي إلى المركز الجديد. تتم تغطية هذه العملية في القسم إدارة الأجهزة المسجلة في مركز IoT.

كيفية التعامل مع توجيه الرسالة

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

إذا كان المركز يستخدم توجيه الرسالة، فلديك خياران.

  • انقل الموارد المستخدمة لنقاط نهاية التوجيه إلى الموقع الجديد.

    1. أنشئ الموارد الجديدة بنفسك إما يدويا في مدخل Microsoft Azure أو باستخدام قوالب Resource Manager.

    2. أعد تسمية جميع الموارد عند إنشائها في الموقع الجديد، لأنها تتطلب أسماء فريدة عالميا.

    3. قم بتحديث أسماء الموارد ومفاتيح الموارد في قالب المركز الجديد قبل إنشاء المركز الجديد. يجب أن تكون الموارد موجودة عند إنشاء المركز الجديد.

  • لا تنقل الموارد المستخدمة لنقاط نهاية التوجيه. استخدمها «في مكانها».

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

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

الاستعداد لترحيل المركز إلى منطقة أخرى

يوفر هذا القسم إرشادات محددة لترحيل المركز.

تصدير المركز الأصلي إلى قالب مورد

  1. تسجيل الدخول إلى ⁧⁩مدخل Microsoft Azure⁧⁩.

  2. انتقل إلى مركز IoT الذي تريد نقله.

  3. حدد قالب التصدير من قائمة الخصائص والإعدادات للمركز.

    لقطة شاشة تعرض الأمر لتصدير القالب لمركز IoT.

  4. حدد تنزيل لتنزيل القالب. احفظ الملف في مكان يمكنك العثور عليه فيه مرة أخرى.

    لقطة شاشة تعرض الأمر لتنزيل القالب لمركز IoT.

عرض القالب

انتقل إلى القالب الذي تم تنزيله، والمضمن في ملف مضغوط. استخرج الملف المضغوط وابحث عن الملف المسمى template.json.

المثال التالي هو لمركز عام بدون تكوين التوجيه. إنه مركز من الفئة S1 (بوحدة واحدة) يسمى ContosoHub في المنطقة westus:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "IotHubs_ContosoHub_connectionString": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_name": {
            "defaultValue": "ContosoHub",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2021-07-01",
            "name": "[parameters('IotHubs_ContosoHub_name')]",
            "location": "westus",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "capacity": 1
            },
            "identity": {
                "type": "None"
            },
            "properties": {
                "ipFilterRules": [],
                "eventHubEndpoints": {
                    "events": {
                        "retentionTimeInDays": 1,
                        "partitionCount": 4
                    }
                },
                "routing": {
                    "endpoints": {
                        "serviceBusQueues": [],
                        "serviceBusTopics": [],
                        "eventHubs": [],
                        "storageContainers": []
                    },
                    "routes": [],
                    "fallbackRoute": {
                        "name": "$fallback",
                        "source": "DeviceMessages",
                        "condition": "true",
                        "endpointNames": [
                            "events"
                        ],
                        "isEnabled": true
                    }
                },
                "storageEndpoints": {
                    "$default": {
                        "sasTtlAsIso8601": "PT1H",
                        "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
                        "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
                    }
                },
                "messagingEndpoints": {
                    "fileNotifications": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "enableFileUploadNotifications": false,
                "cloudToDevice": {
                    "maxDeliveryCount": 10,
                    "defaultTtlAsIso8601": "PT1H",
                    "feedback": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "features": "None",
                "disableLocalAuth": false,
                "allowedFqdnList": []
            }
        }
    ]
}

تحرير القالب

يجب عليك إجراء بعض التغييرات قبل أن تتمكن من استخدام القالب لإنشاء المركز الجديد في المنطقة الجديدة. استخدم Visual Studio Code أو محرر نص لتحرير القالب.

تعديل اسم المركز والموقع

  1. قم بإزالة قسم معلمة اسم الحاوية في الأعلى. ContosoHub لا يحتوي على حاوية مرتبطة.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. قم بإزالة خاصية storageEndpoints.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. إذا كنت تنقل المركز إلى منطقة جديدة، فقم بتغيير خاصية الموقع ضمن الموارد.

    "location": "westus",
    

تحديث موارد نقطة نهاية التوجيه

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

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

  1. استرجع المفاتيح المطلوبة لأي من موارد التوجيه وضعها في القالب. يمكنك استرداد المفتاح (المفاتيح) من المورد في مدخل Microsoft Azure.

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

      "connectionString": "DefaultEndpointsProtocol=https;
      AccountName=fabrikamstorage1234;AccountKey=****",
      "containerName": "fabrikamresults",
      

      بعد استرداد مفتاح الحساب لحساب التخزين، ضعه في القالب في AccountKey=**** عبارة بدلا من النقط النجمية.

    • بالنسبة لقوائم انتظار ناقل الخدمة، احصل على مفتاح الوصول المشترك الذي يطابق اسم مفتاح الوصول المشترك. إليك المفتاح وSharedAccessKeyName في json:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • وينطبق الشيء نفسه على مواضيع ناقل الخدمة واتصالات مراكز الأحداث.

إنشاء المركز الجديد عن طريق تحميل القالب

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

  1. سجل الدخول إلى مدخل Azure.

  2. حدد Create a resource.

  3. في مربع البحث، ابحث عن توزيع القالب وحدده (نشر باستخدام قوالب مخصصة) . على شاشة نشر القالب، حدد إنشاء.

  4. في صفحة Custom deployment ، حدد Build your own template in the editor، والذي يمكنك من تحميل القالب الخاص بك من ملف.

    لقطة شاشة تعرض الأمر لإنشاء القالب الخاص بك.

  5. حدد تحميل الملف.

    لقطة شاشة تعرض الأمر لتحميل ملف قالب.

  6. تصفح القالب الجديد الذي قمت بتحريره وحدده، ثم حدد فتح. يقوم بتحميل القالب الخاص بك في نافذة التحرير. حدد حفظ.

    لقطة شاشة تعرض تحميل القالب.

  7. املأ الحقول التالية في صفحة النشر المخصصة.

    الاشتراك: حدد الاشتراك المراد استخدامه.

    مجموعة الموارد: حدد مجموعة موارد موجودة أو أنشئ مجموعة جديدة.

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

    سلسلة الاتصال: املأ سلسلة الاتصال للمركز الخاص بك.

    اسم المركز: امنح المركز الجديد اسما.

    لقطة شاشة تعرض صفحة النشر المخصصة

  8. حدد زر مراجعة + إنشاء.

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

    لقطة شاشة تعرض صفحة النشر المخصصة النهائية

إدارة الأجهزة المسجلة في مركز IoT

الآن بعد أن أصبح لديك المركز الجديد قيد التشغيل، تحتاج إلى نسخ جميع الأجهزة من المركز الأصلي إلى المركز الجديد.

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

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

استخدام DPS لإعادة توفير الأجهزة في المركز الجديد

لاستخدام DPS لنقل الأجهزة إلى الموقع الجديد، راجع كيفية إعادة توفير الأجهزة. عند الانتهاء، يمكنك عرض الأجهزة في مدخل Microsoft Azure والتحقق من وجودها في الموقع الجديد.

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

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

التراجع عن التغييرات بعد استخدام DPS

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

لقد انتهيت الآن من ترحيل المركز وأجهزته. يمكنك الانتقال إلى التنظيف.

استخدام import-export لنقل الأجهزة إلى المركز الجديد

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

تنزيل العينة

  1. استخدم نماذج IoT C# هنا: Azure IoT SDK ل C#‎. قم بتنزيل الملف المضغوط وفك ضغطه على جهاز الكمبيوتر الخاص بك.

  2. التعليمات البرمجية ذات الصلة في ./iothub/service/samples/how to guides/ImportExportDevicesSample. لست بحاجة إلى عرض التعليمات البرمجية أو تعديلها من أجل تشغيل التطبيق.

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

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

الخيارات

فيما يلي الخيارات الخمسة التي تحددها عند تشغيل التطبيق:

  • addDevices (الوسيطة 1) - قم بتعيين هذا الخيار إلى True إذا كنت تريد إضافة أجهزة ظاهرية تم إنشاؤها لك. تتم إضافة هذه الأجهزة إلى مركز المصدر. أيضًا، قم بتعيين numTo add (الوسيطة 2) لتحديد عدد الأجهزة التي تريد إضافتها. الحد الأقصى لعدد الأجهزة التي يمكنك تسجيلها في المركز هو مليون جهاز. الغرض من هذا الخيار هو الاختبار. يمكنك إنشاء عدد محدد من الأجهزة، ثم نسخها إلى مركز آخر.

  • copyDevices (الوسيطة 3) - قم بتعيين هذا الخيار لنسخ True الأجهزة من مركز إلى آخر.

  • deleteSourceDevices (الوسيطة 4) - قم بتعيين هذا الخيار لحذف True جميع الأجهزة المسجلة في مركز المصدر. نوصي بالانتظار حتى تتأكد من نقل جميع الأجهزة قبل تشغيلها. بمجرد حذف الأجهزة، لا يمكنك استعادتها.

  • deleteDestDevices (الوسيطة 5) - قم بتعيين هذا الخيار لحذف True جميع الأجهزة المسجلة في مركز الوجهة. قد ترغب في القيام بذلك إذا كنت تريد نسخ الأجهزة أكثر من مرة.

الأمر الأساسي هو تشغيل dotnet، والذي يخبر .NET بإنشاء ملف csproj المحلي ثم تشغيله. يمكنك إضافة وسيطات سطر الأوامر إلى النهاية قبل تشغيلها.

سيبدو سطر الأوامر الخاص بك مثل هذه الأمثلة:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices

    // Add 1000 devices, don't copy them to the other hub, or delete them. 
    // The first argument is true, numToAdd is 50, and the other arguments are false.
    dotnet run true 1000 false false false 

    // Copy the devices you just added to the other hub; don't delete anything.
    // The first argument is false, numToAdd is 0, copy-devices is true, and the delete arguments are both false
    dotnet run false 0 true false false 

استخدام متغيرات البيئة لسلاسل الاتصال

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

  2. للحصول على قيم سلسلة الاتصال، سجل الدخول إلى مدخل Microsoft Azure.

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

    تعيين متغيرات البيئة في Windows:

    SET IOTHUB_CONN_STRING=<put connection string to original IoT hub here>
    SET DEST_IOTHUB_CONN_STRING=<put connection string to destination IoT hub here>
    SET STORAGE_ACCT_CONN_STRING=<put connection string to the storage account here>
    

    تعيين متغيرات البيئة في Linux:

    export IOTHUB_CONN_STRING="<put connection string to original IoT hub here>"
    export DEST_IOTHUB_CONN_STRING="<put connection string to destination IoT hub here>"
    export STORAGE_ACCT_CONN_STRING="<put connection string to the storage account here>"
    
  4. بالنسبة لسلاسل اتصال مركز IoT، انتقل إلى كل مركز في المدخل. يمكنك البحث في الموارد للمركز. إذا كنت تعرف مجموعة الموارد، يمكنك الانتقال إلى مجموعات الموارد، وتحديد مجموعة الموارد الخاصة بك، ثم تحديد المركز من قائمة الأصول في مجموعة الموارد هذه.

  5. حدد سياسات الوصول المشترك من الإعدادات للمركز، ثم حدد iothubowner وانسخ إحدى سلاسل الاتصال. افعل الشيء نفسه للمركز الوجهة. أضفها إلى أوامر SET المناسبة.

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

  7. ضمن قسم الإعدادات، حدد مفاتيح الوصول وانسخ أحد سلاسل الاتصال. ضع سلسلة الاتصال في ملفك النصي لأمر SET المناسب.

الآن لديك متغيرات البيئة في ملف مع أوامر SET، وأنت تعرف ما هي وسيطات سطر الأوامر الخاصة بك. لنفحص العينة.

تشغيل نموذج التطبيق واستخدام وسيطات سطر الأوامر

  1. افتح نافذة موجه الأوامر. حدد Windows واكتب command prompt للحصول على نافذة موجه الأوامر.

  2. انسخ الأوامر التي تقوم بتعيين متغيرات البيئة، واحدًا تلو الآخر، والصقها في نافذة موجه الأوامر وحدد Enter. عند الانتهاء، اكتب SET في نافذة موجه الأوامر لرؤية متغيرات بيئتك وقيمها. بمجرد نسخها في نافذة موجه الأوامر، لن تضطر إلى نسخها مرة أخرى، ما لم تفتح نافذة موجه أوامر جديدة.

  3. في نافذة موجه الأوامر، قم بتغيير الأدلة حتى تدخل إلى ./ImportExportDevicesSample (حيث يوجد ملف ImportExportDevicesSample.csproj). ثم اكتب ما يلي، وقم بتضمين وسيطات سطر الأوامر.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    dotnet run arg1 arg2 arg3 arg4 arg5
    

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

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    
    // Add 1000 devices, don't copy them to the other hub or delete them. 
    dotnet run true 1000 false false false 
    
    // Do not add any devices. Copy the ones you just created to the other hub; don't delete anything.
    dotnet run false 0 true false false 
    

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

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    // Delete the devices from the source hub.
    dotnet run false 0 false true false 
    

تشغيل نموذج التطبيق باستخدام Visual Studio

  1. إذا كنت تريد تشغيل التطبيق في Visual Studio، فقم بتغيير الدليل الحالي إلى المجلد حيث يوجد ملف azureiot.sln. ثم قم بتشغيل هذا الأمر في نافذة موجه الأوامر لفتح الحل في Visual Studio. يجب عليك القيام بذلك في نفس نافذة الأوامر حيث تقوم بتعيين متغيرات البيئة، بحيث تكون هذه المتغيرات معروفة.

    azureiot.sln
    
  2. انقر بزر الماوس الأيمن فوق المشروع ImportExportDevicesSample وحدد Set as startup project.

  3. قم بتعيين المتغيرات في الجزء العلوي من Program.cs في المجلد ImportExportDevicesSample للخيارات الخمسة.

    // Add randomly created devices to the source hub.
    private static bool addDevices = true;
    //If you ask to add devices, this will be the number added.
    private static int numToAdd = 0; 
    // Copy the devices from the source hub to the destination hub.
    private static bool copyDevices = false;
    // Delete all of the devices from the source hub. (It uses the IoTHubConnectionString).
    private static bool deleteSourceDevices = false;
    // Delete all of the devices from the destination hub. (Uses the DestIotHubConnectionString).
    private static bool deleteDestDevices = false;
    
  4. حدد F5 لتشغيل التطبيق. بعد الانتهاء من التشغيل، يمكنك عرض النتائج.

عرض النتائج

يكنك عرض الأجهزة في مدخل Microsoft Azure والتحقق من وجودها في الموقع الجديد.

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

  2. تحقق من أخطاء الاستيراد/التصدير بالانتقال إلى حساب تخزين Azure في مدخل Microsoft Azure والبحث في الحاوية devicefiles عن ImportErrors.log. إذا كان هذا الملف فارغًا (الحجم هو 0 )، فلا توجد أخطاء. إذا حاولت استيراد نفس الجهاز أكثر من مرة، فإنه يرفض الجهاز في المرة الثانية ويضيف رسالة خطأ إلى ملف السجل.

تطبيق التغييرات

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

لتطبيق بالتغييرات، إليك الخطوات التي تحتاج إلى تنفيذها:

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

  • قم بتغيير أي تطبيقات لديك تشير إلى المركز القديم للإشارة إلى المركز الجديد.

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

التراجع عن التغييرات

إذا قررت التراجع عن التغييرات، فإليك الخطوات الواجب اتباعها:

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

  • قم بتغيير أي تطبيقات لديك تشير إلى المركز الجديد للإشارة إلى المركز القديم. على سبيل المثال، إذا كنت تستخدم Azure Analytics، فقد تحتاج إلى إعادة تكوين إدخال Azure Stream Analytics.

  • احذف المركز الجديد.

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

تحقق من النتائج

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

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

التنظيف

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

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

  • إذا كانت لديك موارد التوجيه التي نقلتها إلى الموقع الجديد، يمكنك حذف موارد التوجيه القديمة.

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

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