Cara memigrasikan hub Azure IoT secara manual menggunakan templat Azure Resource Manager

Gunakan portal Azure, templat Azure Resource Manager, dan SDK layanan Azure IoT Hub untuk memigrasikan hub IoT ke wilayah baru, tingkat baru, atau konfigurasi baru.

Langkah-langkah dalam artikel ini berguna jika Anda ingin:

Untuk memigrasikan hub, Anda memerlukan langganan dengan akses administratif ke hub asli. Anda dapat meletakkan hub baru di grup dan wilayah sumber daya baru, dalam langganan yang sama dengan hub asli, atau bahkan di langganan baru. Anda tidak dapat menggunakan nama yang sama karena nama hub harus unik secara global.

Membandingkan langkah-langkah migrasi otomatis dan manual

Hasil artikel ini mirip dengan Cara memigrasikan hub IoT secara otomatis menggunakan Azure CLI, tetapi dengan proses yang berbeda. Sebelum memulai, putuskan proses mana yang tepat untuk skenario Anda.

  • Proses manual (artikel ini):

    • Memigrasikan registri perangkat Anda serta informasi perutean dan titik akhir Anda. Anda harus membuat ulang detail konfigurasi lain secara manual di hub IoT baru.
    • Lebih cepat untuk memigrasikan sejumlah besar perangkat (misalnya, lebih dari 100.000).
    • Menggunakan akun Azure Storage untuk mentransfer registri perangkat.
    • String koneksi scrubs untuk perutean dan titik akhir pengunggahan file dari output templat ARM, dan Anda perlu menambahkannya kembali secara manual.
  • Proses Azure CLI:

    • Migrasikan registri perangkat Anda, informasi perutean dan titik akhir Anda, dan detail konfigurasi lainnya seperti penyebaran IoT Edge atau konfigurasi manajemen perangkat otomatis.
    • Lebih mudah untuk memigrasikan sejumlah kecil perangkat (misalnya, hingga 10.000).
    • Tidak memerlukan akun Azure Storage.
    • Mengumpulkan string koneksi untuk perutean dan titik akhir pengunggahan file dan menyertakannya dalam output templat ARM.

Hal-hal yang perlu dipertimbangkan

Ada beberapa hal yang perlu dipertimbangkan sebelum memigrasikan hub IoT.

  • Pastikan bahwa semua fitur yang tersedia di lokasi asli juga tersedia di lokasi baru. Beberapa layanan ada dalam pratinjau dan tidak semua fitur tersedia di mana saja.

  • Jangan hapus sumber daya asli sebelum membuat dan memverifikasi versi yang dimigrasikan. Setelah Anda menghapus hub, hub hilang selamanya, dan tidak ada cara untuk memulihkannya untuk memeriksa pengaturan atau data untuk memastikan hub direplikasi dengan benar.

  • Data untuk IoT hub asli tidak dimigrasikan. Data ini mencakup pesan perangkat, perintah cloud-to-device (C2D), dan informasi terkait pekerjaan seperti jadwal dan riwayat. Metrik dan hasil pencatatan juga tidak dimigrasikan.

  • Anda perlu menjadwalkan waktu henti untuk migrasi. Mengkloning perangkat ke hub baru membutuhkan waktu. Jika Anda menggunakan metode Impor/Ekspor, pengujian tolok ukur menunjukkan bahwa diperlukan waktu sekitar dua jam untuk memindahkan 500.000 perangkat, dan empat jam untuk memindahkan satu juta perangkat.

  • Anda dapat menyalin perangkat ke hub baru tanpa mematikan atau mengubah perangkat.

    • Jika perangkat awalnya disediakan menggunakan DPS, perbarui pendaftarannya untuk menunjuk ke hub IoT baru. Kemudian, provisi ulang perangkat untuk memperbarui informasi koneksi yang disimpan di setiap perangkat.

    • Jika tidak, Anda harus menggunakan metode impor/ekspor untuk memindahkan perangkat, lalu perangkat harus dimodifikasi untuk menggunakan hub baru. Misalnya, Anda dapat mengatur perangkat untuk menggunakan nama host IoT Hub dari properti kembar yang diinginkan. Perangkat mengambil nama host IoT Hub tersebut, memutuskan sambungan perangkat dari hub lama, dan menyambungkannya kembali ke yang baru.

  • Anda perlu memperbarui sertifikat apa pun sehingga Anda dapat menggunakannya dengan sumber daya baru. Selain itu, Anda mungkin memiliki hub yang ditentukan dalam tabel DNS di suatu tempat dan perlu memperbarui informasi DNS tersebut.

Metodologi

Ini adalah metode umum yang kami rekomendasikan untuk memigrasikan hub IoT.

  1. Ekspor hub dan pengaturannya ke templat Resource Manager.

  2. Buat perubahan yang diperlukan pada templat, seperti memperbarui semua kemunculan nama dan lokasi untuk hub yang dimigrasikan. Untuk semua sumber daya dalam templat yang digunakan untuk titik akhir perutean pesan, perbarui kunci dalam templat untuk sumber daya tersebut.

  3. Impor templat ke grup sumber daya baru di lokasi baru. Langkah ini membuat hub IoT baru.

  4. Debug sesuai kebutuhan.

  5. Tambahkan semua yang tidak diekspor ke templat.

    Misalnya, grup konsumen tidak diekspor ke template. Anda perlu menambahkan grup konsumen ke templat secara manual atau menggunakan portal Microsoft Azure setelah hub dibuat.

  6. Salin perangkat dari hub asli ke hub baru. Proses ini tercakup dalam bagian Kelola perangkat yang terdaftar ke hub IoT.

Cara menangani perutean pesan

Jika hub Anda menggunakan perutean pesan, mengekspor templat untuk hub menyertakan konfigurasi perutean, tetapi tidak menyertakan sumber daya itu sendiri. Jika Anda memigrasikan hub IoT ke wilayah baru, Anda harus memilih apakah akan memindahkan sumber daya perutean ke lokasi baru juga atau meninggalkannya di tempat dan terus menggunakannya "apa adanya". Mungkin ada hit performa kecil dari pesan perutean ke titik akhir sumber daya di wilayah yang berbeda.

Jika hub menggunakan perutean pesan, Anda memiliki dua pilihan.

  • Pindahkan sumber daya yang digunakan untuk perutean titik akhir ke lokasi baru.

    1. Buat sendiri sumber daya baru baik secara manual di portal Azure atau dengan menggunakan templat Resource Manager.

    2. Ganti nama semua sumber daya saat Anda membuatnya di lokasi baru, karena sumber daya memerlukan nama yang unik secara global.

    3. Perbarui nama sumber daya dan kunci sumber daya di templat hub baru sebelum membuat hub baru. Sumber daya harus ada saat hub baru dibuat.

  • Jangan pindahkan sumber daya yang digunakan untuk titik akhir perutean. Gunakan "di tempat".

    1. Pada langkah saat Anda mengedit template, Anda perlu mengambil kunci untuk setiap sumber perutean dan meletakkannya di template sebelum Anda membuat hub baru.

    2. Hub masih mereferensikan sumber daya perutean asli dan merutekan pesan kepada mereka sebagai dikonfigurasi. Anda akan mendapatkan sedikit penurunan performa karena hub dan sumber daya titik akhir perutean tidak berada di lokasi yang sama.

Bersiap untuk memigrasikan hub ke wilayah lain

Bagian ini menyediakan petunjuk khusus untuk memigrasikan hub.

Mengekspor hub asli ke templat sumber daya

  1. Masuk ke portal Microsoft Azure.

  2. Navigasikan ke hub IoT yang ingin Anda pindahkan.

  3. Pilih Ekspor templat dari daftar properti dan pengaturan untuk hub.

    Cuplikan layar memperlihatkan perintah untuk mengekspor templat untuk hub IoT.

  4. Pilih Unduh untuk mengunduh templat. Simpan file di lokasi yang dapat Anda temukan lagi.

    Cuplikan layar memperlihatkan perintah untuk mengunduh templat untuk hub IoT.

Menampilkan templat

Buka templat yang diunduh, yang terkandung dalam file zip. Buka file zip dan temukan file yang disebut template.json.

Contoh berikut adalah untuk hub generik tanpa konfigurasi perutean. Ini merupakan hub tingkat S1 (dengan 1 unit) yang disebut ContosoHub di wilayah 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": []
            }
        }
    ]
}

Mengedit templat

Anda harus membuat beberapa perubahan sebelum Anda dapat menggunakan templat untuk membuat hub baru di wilayah baru. Gunakan Visual Studio Code atau editor teks untuk mengedit templat.

Mengedit nama dan lokasi hub

  1. Hapus bagian parameter nama kontainer di bagian atas. ContosoHub tidak memiliki kontainer terkait.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. Hapus properti storageEndpoints.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. Jika Anda memindahkan hub ke wilayah baru, ubah properti lokasi di bawah sumber daya.

    "location": "westus",
    

Memperbarui sumber daya titik akhir perutean

Saat Anda mengekspor templat Resource Manager untuk hub yang peruteannya telah dikonfigurasi, Anda melihat bahwa kunci untuk sumber daya tersebut tidak disediakan dalam templat yang diekspor. Penempatan kunci dilambangkan dengan tanda bintang. Anda harus mengisinya dengan masuk ke sumber daya tersebut di portal dan mengambil kunci sebelum Anda mengimpor templat hub baru dan membuat hub.

Jika Anda memindahkan sumber daya perutean juga, perbarui nama, ID, dan grup sumber daya dari setiap titik akhir juga.

  1. Ambil kunci yang diperlukan untuk salah satu sumber daya perutean dan masukkan ke dalam templat. Anda dapat mengambil kunci dari sumber daya di portal Microsoft Azure.

    • Misalnya, jika Anda merutekan pesan ke kontainer penyimpanan, temukan akun penyimpanan di portal. Di bawah bagian Pengaturan, pilih Tombol akses, lalu salin salah satu tombol. Berikut adalah tampilan kunci saat Anda mengekspor templat untuk pertama kalinya:

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

      Setelah Anda mengambil kunci akun untuk akun penyimpanan, letakkan di templat di AccountKey=**** klausa di tempat tanda bintang.

    • Untuk antrean bus layanan, dapatkan Kunci Akses Bersama yang cocok dengan SharedAccessKeyName. Berikut ini merupakan kunci dan SharedAccessKeyName di json:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • Hal yang sama berlaku untuk koneksi Topik Azure Service Bus dan Azure Event Hubs.

Membuat hub baru dengan memuat templat

Buat hub baru menggunakan templat yang diedit. Jika Anda memiliki sumber daya perutean yang akan bergerak, sumber daya harus disiapkan di lokasi baru dan referensi dalam templat diperbarui agar cocok. Jika Anda tidak memindahkan sumber daya perutean, sumber daya tersebut harus berada di templat dengan kunci yang diperbarui.

  1. Masuk ke portal Azure.

  2. Pilih Buat sumber daya.

  3. Dalam kotak pencarian, cari dan pilih penyebaran templat (sebarkan menggunakan templat kustom). Pada layar untuk penyebaran templat, pilih Buat.

  4. Pada halaman Penyebaran kustom , pilih Bangun templat Anda sendiri di editor, yang memungkinkan Anda mengunggah templat dari file.

    Cuplikan layar memperlihatkan perintah untuk membangun templat Anda sendiri.

  5. Pilih Muat file.

    Cuplikan layar memperlihatkan perintah untuk mengunggah file templat.

  6. Telusuri templat baru yang Anda edit dan pilih templat tersebut, lalu pilih Buka. Tindakan ini akan memuat templat di jendela edit. Pilih Simpan.

    Cuplikan layar memperlihatkan pemuatan templat.

  7. Isi bidang berikut pada halaman penyebaran kustom.

    Langganan: pilih langganan yang akan digunakan.

    Grup sumber daya: Pilih grup sumber daya yang sudah ada atau buat yang baru.

    Wilayah: Jika Anda memilih grup sumber daya yang ada, wilayah diisi agar Anda dapat mencocokkan lokasinya ke grup sumber daya. Jika Anda membuat grup sumber daya baru, ini adalah lokasinya.

    String koneksi: Isi string koneksi untuk hub Anda.

    Nama hub: Beri nama hub baru.

    Cuplikan layar menunjukkan halaman Penyebaran kustom

  8. Pilih tombol Tinjau + buat.

  9. Pilih tombol Buat. Portal memvalidasi templat Anda dan menyebarkan hub baru Anda. Jika Anda memiliki data konfigurasi perutean, data tersebut disertakan di hub baru, tetapi menunjuk pada sumber daya di lokasi sebelumnya.

    Cuplikan layar menunjukkan halaman akhir penyebaran kustom

Mengelola perangkat yang terdaftar ke hub IoT

Sekarang setelah hub baru Anda aktif dan berjalan, Anda perlu menyalin semua perangkat dari hub asli ke yang baru.

Ada beberapa cara untuk menyalin perangkat. Anda awalnya menggunakan Device Provisioning Service (DPS) untuk menyediakan perangkat, atau tidak. Jika Anda melakukannya, proses ini tidak akan menjadi sulit. Jika tidak, proses ini dapat menjadi rumit.

Jika Anda tidak menggunakan DPS untuk memprovisikan perangkat, Anda dapat melewati bagian berikutnya dan mulai menggunakan Gunakan Impor/Ekspor untuk memindahkan perangkat ke hub baru.

Menggunakan DPS untuk memprovisikan ulang perangkat di hub baru

Untuk menggunakan DPS untuk memindahkan perangkat ke lokasi baru, lihat Cara menyediakan ulang perangkat. Setelah selesai, Anda dapat melihat perangkat di portal Microsoft Azure dan memverifikasi bahwa perangkat berada di lokasi baru.

Buka hub baru menggunakan portal Microsoft Azure. Pilih hub Anda, lalu pilih Perangkat IoT. Anda melihat perangkat yang diprovisikan ulang ke hub baru. Anda juga dapat melihat properti untuk hub baru.

Jika Anda telah menerapkan perutean, uji dan pastikan pesan dirutekan ke sumber daya dengan benar.

Mengembalikan perubahan setelah menggunakan DPS

Jika Anda ingin mengembalikan perubahan, provisi ulang perangkat dari hub baru ke hub lama.

Anda sekarang selesai memigrasikan hub dan perangkatnya. Anda dapat melompat ke Pembersihan.

Menggunakan impor-ekspor untuk memindahkan perangkat ke hub baru

Aplikasi ini menargetkan .NET Core, sehingga Anda dapat menjalankannya di Windows atau Linux. Anda dapat mengunduh sampel, mengambil string koneksi, mengatur bendera yang bitnya ingin Anda jalankan, dan menjalankannya. Anda dapat melakukan hal ini tanpa pernah membuka kode.

Unduh sampel

  1. Gunakan sampel IoT C# di sini: Azure IoT SDK untuk C#. Unduh file zip dan buka zip di komputer Anda.

  2. Kode yang bersangkutan ada di ./iothub/service/samples/how to guides/ImportExportDevicesSample. Anda tidak perlu melihat atau mengedit kode untuk menjalankan aplikasi.

  3. Untuk menjalankan aplikasi, tentukan tiga string koneksi dan lima opsi. Anda meneruskan data ini sebagai argumen baris perintah, menggunakan variabel lingkungan, atau menggunakan kombinasi keduanya. Kita akan meneruskan opsi sebagai argumen baris perintah dan string koneksi sebagai variabel lingkungan.

    Alasan tindakan ini adalah karena string koneksi panjang dan tidak terganggu, serta kemungkinan kecil akan berubah, tetapi Anda mungkin ingin mengubah opsi dan menjalankan aplikasi lebih dari sekali. Untuk mengubah nilai variabel lingkungan, Anda harus menutup jendela perintah dan Visual Studio atau Visual Studio Code, mana pun yang Anda gunakan.

Opsi

Berikut adalah lima opsi yang Anda tentukan saat menjalankan aplikasi:

  • addDevices (argumen 1) - atur opsi ini ke True jika Anda ingin menambahkan perangkat virtual yang dihasilkan untuk Anda. Perangkat ini ditambahkan ke hub sumber. Selain itu, atur numToAdd (argumen 2) untuk menentukan berapa banyak perangkat yang ingin Anda tambahkan. Jumlah maksimum perangkat yang dapat Anda daftarkan ke hub adalah satu juta. Tujuan dari opsi ini adalah untuk pengujian. Anda dapat membuat sejumlah perangkat tertentu, lalu menyalinnya ke hub lain.

  • copyDevices (argumen 3) - atur opsi ini ke True untuk menyalin perangkat dari satu hub ke hub lainnya.

  • deleteSourceDevices (argumen 4) - atur opsi ini ke True untuk menghapus semua perangkat yang terdaftar ke hub sumber. Sebaiknya Anda menunggu hingga Anda yakin semua perangkat telah ditransfer sebelum Anda menjalankan ini. Setelah menghapus perangkat, Anda tidak dapat mengembalikannya.

  • deleteDestDevices (argumen 5) - atur opsi ini ke untuk True menghapus semua perangkat yang terdaftar ke hub tujuan. Anda mungkin ingin melakukan ini jika Anda ingin menyalin perangkat lebih dari sekali.

Perintah dasarnya adalah dotnet run, yang memberi tahu .NET untuk membuat file csproj lokal dan kemudian menjalankannya. Anda menambahkan argumen baris perintah hingga akhir sebelum menjalankannya.

Baris perintah Anda akan terlihat seperti contoh-contoh ini:

    // 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 

Menggunakan variabel lingkungan untuk string koneksi

  1. Untuk menjalankan sampel, Anda memerlukan string koneksi ke hub IoT lama dan baru, serta ke akun penyimpanan yang dapat Anda gunakan untuk file kerja sementara. Kita akan menyimpan nilai untuk keduanya dalam variabel lingkungan.

  2. Untuk mendapatkan nilai string koneksi, masuk ke portal Microsoft Azure.

  3. Letakkan string koneksi di lokasi yang dapat Anda jangkau, seperti NotePad. Jika Anda menyalin berikut ini, Anda dapat menempelkan string koneksi langsung di tempatnya. Jangan tambahkan spasi di sekitar tanda sama dengan atau mengubah nama variabel. Selain itu, Anda tidak perlu tanda kutip ganda di sekitar string koneksi. Jika Anda meletakkan tanda kutip di sekitar string koneksi akun penyimpanan, skrip gagal.

    Atur variabel lingkungan di 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>
    

    Atur variabel lingkungan di 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. Untuk string koneksi hub IoT, buka setiap hub di portal. Anda dapat mencari di Sumber Daya untuk hub. Jika Anda mengetahui Grup Sumber Daya, Anda dapat membuka Grup Sumber Daya, pilih grup sumber daya Anda, lalu pilih hub dari daftar aset dalam grup sumber daya tersebut.

  5. Pilih Kebijakan akses bersama dari Pengaturan untuk hub, lalu pilih iothubowner dan salin salah satu string koneksi. Lakukan hal yang sama untuk hub tujuan. Tambahkan ke perintah SET yang sesuai.

  6. Untuk string koneksi akun penyimpanan, temukan akun penyimpanan di Sumber Daya atau di Grup Sumber Daya lalu buka.

  7. Di bagian Pengaturan, pilih Tombol akses dan salin salah satu string koneksi. Letakkan string koneksi dalam file teks Anda untuk perintah SET yang sesuai.

Kini Anda memiliki variabel lingkungan dalam file dengan perintah SET dan Anda tahu argumen baris perintah Anda. Mari kita jalankan sampelnya.

Jalankan aplikasi sampel dan gunakan argumen baris perintah

  1. Buka jendela wantian perintah. Pilih Windows dan ketik command prompt untuk mendapatkan jendela wantian perintah.

  2. Salin perintah yang mengatur variabel lingkungan, satu per satu, dan tempelkan ke jendela wantian perintah, kemudian pilih Enter. Setelah selesai, ketik SET di jendela wantian perintah untuk melihat variabel lingkungan dan nilainya. Setelah menyalinnya ke jendela wantian perintah, Anda tidak perlu menyalinnya lagi, kecuali Anda membuka jendela wantian perintah baru.

  3. Di jendela wantian perintah, ubah direktori hingga Anda berada di ./ImportExportDevicesSample (lokasi file ImportExportDevicesSample.csproj). Kemudian ketik yang berikut ini dan sertakan argumen baris perintah Anda.

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

    Perintah dotnet membangun dan menjalankan aplikasi. Karena Anda meneruskan opsi saat menjalankan aplikasi, Anda dapat mengubah nilainya setiap kali menjalankan aplikasi. Misalnya, Anda mungkin ingin menjalankannya satu kali dan membuat perangkat baru, lalu menjalankannya lagi dan menyalin perangkat tersebut ke hub baru, dan sebagainya. Anda juga dapat melakukan semua langkah dalam eksekusi yang sama, meskipun kami sarankan untuk tidak menghapus perangkat apa pun sampai Anda yakin telah selesai dengan migrasi. Berikut adalah contoh yang membuat 1000 perangkat lalu menyalinnya ke hub lain.

    // 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 
    

    Setelah Anda memverifikasi bahwa perangkat berhasil disalin, Anda dapat menghapus perangkat dari hub sumber seperti ini:

    // 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 
    

Menjalankan aplikasi sampel menggunakan Visual Studio

  1. Jika Anda ingin menjalankan aplikasi di Visual Studio, ubah direktori Anda saat ini ke folder tempat file azureiot.sln berada. Kemudian, jalankan perintah ini di jendela wantian perintah untuk membuka solusi di Visual Studio. Anda harus melakukan ini di jendela perintah yang sama tempat Anda mengatur variabel lingkungan, sehingga variabel tersebut diketahui.

    azureiot.sln
    
  2. Klik kanan pada proyek ImportExportDevicesSample dan pilih Atur sebagai proyek startup.

  3. Atur variabel di bagian atas Program.cs folder ImportExportDevicesSample untuk lima opsi.

    // 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. Pilih F5 untuk menjalankan aplikasi. Setelah selesai berjalan, Anda dapat melihat hasilnya.

Menampilkan hasil

Anda dapat melihat perangkat di portal Microsoft Azure dan memverifikasi bahwa perangkat berada di lokasi baru.

  1. Buka hub baru menggunakan portal Microsoft Azure. Pilih hub Anda, lalu pilih Perangkat IoT. Anda melihat perangkat yang Anda salin dari hub lama ke hub baru. Anda juga dapat melihat properti untuk hub baru.

  2. Periksa kesalahan impor/ekspor dengan masuk ke akun penyimpanan Azure di portal Microsoft Azure dan cari di kontainer devicefiles untuk ImportErrors.log. Jika file ini kosong (ukurannya 0), maka tidak ada kesalahan. Jika Anda mencoba mengimpor perangkat yang sama lebih dari sekali, perangkat akan menolak perangkat untuk kedua kalinya dan menambahkan pesan kesalahan ke file log.

Menerapkan perubahan

Pada titik ini, Anda telah menyalin hub Anda ke lokasi baru dan memigrasikan perangkat ke hub baru. Sekarang Anda perlu membuat perubahan sehingga perangkat berfungsi dengan hub baru.

Untuk menerapkan perubahan, berikut adalah langkah-langkah yang perlu Anda lakukan:

  • Perbarui setiap perangkat untuk mengubah nama host IoT Hub untuk mengarahkan nama host IoT Hub ke hub baru. Anda harus melakukan ini menggunakan metode yang sama dengan yang Anda gunakan saat pertama kali memprovisikan perangkat.

  • Ubah aplikasi apa pun yang Anda miliki, yang merujuk ke hub lama untuk mengarahkan ke hub baru.

  • Setelah selesai, hub baru harus aktif dan berjalan. Hub lama seharusnya tidak memiliki perangkat aktif dan berada dalam keadaan terputus sambungannya.

Gulung balik perubahan

Jika Anda memutuskan untuk mengembalikan perubahan, berikut adalah langkah-langkah untuk melakukannya:

  • Perbarui setiap perangkat guna mengubah Nama Host IoT Hub untuk mengarah ke Nama Host IoT Hub untuk hub lama. Anda harus melakukan ini menggunakan metode yang sama dengan yang Anda gunakan saat pertama kali memprovisikan perangkat.

  • Ubah aplikasi apa pun yang Anda miliki, yang merujuk ke hub baru untuk mengarahkan ke hub lama. Misalnya, jika Anda menggunakan Azure Analytics, Anda mungkin perlu mengonfigurasi ulang input Azure Stream Analytics Anda.

  • Hapus hub baru.

  • Jika Anda memiliki sumber daya perutean, konfigurasi pada hub lama tetap harus menunjuk ke konfigurasi perutean yang benar, dan harus berfungsi dengan sumber daya tersebut setelah hub dimulai ulang.

Periksa hasilnya

Untuk memeriksa hasilnya, ubah solusi IoT Anda untuk mengarahkan ke hub di lokasi baru dan menjalankannya. Dengan kata lain, lakukan tindakan yang sama dengan hub baru yang Anda lakukan dengan hub sebelumnya, dan pastikan tindakan tersebut berfungsi dengan benar.

Jika Anda telah menerapkan perutean, uji dan pastikan pesan dirutekan ke sumber daya dengan benar.

Membersihkan

Jangan bersihkan hingga Anda yakin hub baru aktif dan berjalan dan perangkat berfungsi dengan benar. Pastikan juga untuk menguji perutean jika Anda menggunakan fitur tersebut. Saat Anda siap, bersihkan sumber daya lama dengan melakukan langkah-langkah berikut:

  • Jika Anda belum melakukannya, hapus hub lama. Tindakan ini akan menghapus semua perangkat aktif dari hub.

  • Jika Anda memiliki sumber daya perutean yang dipindahkan ke lokasi baru, Anda dapat menghapus sumber daya perutean lama.

Langkah berikutnya

Anda telah memigrasikan hub IoT ke hub baru di wilayah baru, lengkap dengan perangkat. Untuk informasi selengkapnya tentang melakukan operasi massal terhadap registri identitas di hub IoT, lihat Mengimpor dan mengekspor identitas perangkat IoT Hub secara massal.