⁩ترحيل موارد IaaS من النموذج الكلاسيكي إلى Azure Resource Manager⁧ باستخدام PowerShell

ينطبق على: ✔️ أجهزة ظاهرية تعمل بنظام التشغيل Linux ✔️ أجهزة ظاهرية تعمل بنظام التشغيل Windows

هام

في وقتنا الحالي، تستخدم حوالي 90% من أجهزة IaaS الظاهرية ⁧⁩Azure Resource Manager⁧⁩. اعتبارا من 28 فبراير 2020، تم إهمال الأجهزة الظاهرية الكلاسيكية وسيتم إيقافها بالكامل في 6 سبتمبر 2023. ⁧⁩تعرف على المزيد⁧⁩ حول هذا الإهمال ⁧⁩ومدى تأثيره عليك⁧⁩.

توضح لك هذه الخطوات كيفية استخدام أوامر Azure PowerShell لترحيل موارد خدمة تأجير البنية التحتية (IaaS) من نموذج التوزيع الكلاسيكي إلى نموذج توزيع Azure Resource Manager.

إذا أردت، يمكنك أيضًا ترحيل الموارد باستخدام Azure CLI.


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

لقطة شاشة تعرض خطوات الترحيل

الخطوة 1: خطة الترحيل

فيما يلي بعض أفضل الممارسات التي نوصي بها أثناء تقييمك لترحيل موارد IaaS من النموذج الكلاسيكي إلى Resource Manager:

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

هام

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

لا يمكن ترحيل بوابات Azure ExpressRoute التي تتصل بدوائر ExpressRoute في اشتراك آخر تلقائياً. في هذه الحالات، قم بإزالة البوابة ExpressRoute ثم قم بترحيل الشبكة الظاهرية ثم قم بإعادة إنشاء البوابة. لمزيد من المعلومات، راجع ترحيل دوائر ExpressRoute والشبكات الظاهرية المقترنة من نموذج التوزيع الكلاسيكي إلى نموذج توزيع Resource Manager.

الخطوة 2: تثبيت أحدث إصدار من PowerShell

هناك خياران رئيسيان لتثبيت Azure PowerShell: PowerShell Gallery أو مثبت النظام الأساسي للويب (WebPI). يتلقى مثبت النظام الأساسي للويب تحديثات شهرية. يتلقى PowerShell Gallery التحديثات بشكل مستمر. تستند هذه المقالة إلى الإصدار 2.1.0 من Azure PowerShell.

اتبع إرشادات التثبيت، راجع كيفية تثبيت وتكوين Azure PowerShell.

الخطوة 3: تأكد من أنك مسؤول الاشتراك

لإجراء هذا الترحيل، يجب إضافتك كمسؤول مساعد للاشتراك في مدخل Azure.

  1. تسجيل الدخول إلى ⁧⁩مدخل Azure⁧⁩.
  2. في القائمة المركز، حدد الاشتراك. إذا كنت لا تراه، فحدد جميع الخدمات.
  3. ابحث عن إدخال الاشتراك المناسب، ثم انظر إلى الحقل دوري. بالنسبة إلى المسؤول المساعد، يجب أن تكون القيمة هي مسؤول الحساب.

إذا لم تتمكن من إضافة مسؤول مساعد، فاتصل بمسؤول خدمة أو مسؤول مساعد للاشتراك لإضافة نفسك.

الخطوة 4: تعيين اشتراكك، والتسجيل للترحيل

أولاً، بدء تشغيل مطالبة PowerShell. بالنسبة للترحيل، أعّد بيئتك لكل من النموذج الكلاسيكي وResource Manager.

سجل الدخول إلى حسابك لنموذج Resource Manager.

    Connect-AzAccount

احصل على الاشتراكات المتوفرة باستخدام الأمر التالي:

    Get-AzSubscription | Sort Name | Select Name

عيّن اشتراك Azure الخاص بك لجلسة العمل الحالية. يعين هذا المثال اسم الاشتراك الافتراضي إلى اشتراك Azure الخاص بي. استبدل اسم الاشتراك المثال باسم الاشتراك الخاص بك.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

ملاحظة

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

BadRequest : لم يتم تسجيل الاشتراك للترحيل.

سجل لدى موفر موارد الترحيل باستخدام الأمر التالي:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

انتظر خمس دقائق حتى ينتهي التسجيل. تحقق من حالة الموافقة باستخدام الأمر التالي:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

تأكد من أن RegistrationState هو Registered قبل المتابعة.

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

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

    Get-AzVMUsage -Location "West US"

الآن، سجل الدخول إلى حسابك لنموذج التوزيع الكلاسيكي.

    Add-AzureAccount

احصل على الاشتراكات المتوفرة باستخدام الأمر التالي:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

عيّن اشتراك Azure الخاص بك لجلسة العمل الحالية. يعين هذا المثال الاشتراك الافتراضي إلى اشتراك Azure الخاص بي. استبدل اسم الاشتراك المثال باسم الاشتراك الخاص بك.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

الخطوة 5: تشغيل الأوامر لترحيل موارد IaaS الخاصة بك

ملاحظة

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

الخطوة 5a: الخيار 1 - ترحيل الأجهزة الظاهرية في خدمة سحابية (وليس في شبكة ظاهرية)

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

    Get-AzureService | ft Servicename

احصل على اسم التوزيع للخدمة السحابية. في هذا المثال، اسم الخدمة هو خدمتي. استبدل مثال اسم الخدمة باسم الخدمة الخاص بك.

    $serviceName = "My Service"
    $deployment = Get-AzureDeployment -ServiceName $serviceName
    $deploymentName = $deployment.DeploymentName

حضّر الأجهزة الظاهرية في الخدمة السحابية للترحيل. لديك خياران للاختيار من بينها.

  • الخيار 1: ترحيل الأجهزة الظاهرية إلى شبكة ظاهرية تم إنشاؤها بواسطة النظام الأساسي.

    أولاً، تحقق من صحة إذا كان يمكنك ترحيل الخدمة السحابية باستخدام الأوامر التالية:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    $validate.ValidationMessages
    

    يعرض الأمر التالي أي تحذيرات وأخطاء تمنع الترحيل. إذا كانت رسائل التحقق من الصحة لا تحتوي على رسالة من نوع الخطأ، يمكنك الانتقال إلى الخطوة إعداد.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • الخيار 2: الترحيل إلى شبكة ظاهرية موجودة في نموذج توزيع Resource Manager.

    يقوم هذا المثال بتعيين اسم مجموعة الموارد إلى myResourceGroup واسم الشبكة الظاهرية إلى myVirtualNetwork واسم الشبكة الفرعية إلى mySubNet. استبدل الأسماء في المثال بأسماء الموارد الخاصة بك.

    $existingVnetRGName = "myResourceGroup"
    $vnetName = "myVirtualNetwork"
    $subnetName = "mySubNet"
    

    أولاً، تحقق من صحة إذا كان يمكنك ترحيل الشبكة الظاهرية باستخدام الأمر التالي:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName
    $validate.ValidationMessages
    

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

        Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName `
        -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName `
        -VirtualNetworkName $vnetName -SubnetName $subnetName
    

بعد نجاح عملية الإعداد مع أي من الخيارات السابقة، قم بالاستعلام عن حالة ترحيل الأجهزة الظاهرية. تأكد من أنهم في حالة Prepared.

يقوم هذا المثال بتعيين اسم الجهاز الظاهري إلى myVM. استبدل الاسم المثال باسم الجهاز الظاهري الخاص بك.

    $vmName = "myVM"
    $vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
    $vm.VM.MigrationState

تحقق من تكوين الموارد المعدة باستخدام PowerShell أو مدخل Azure. إذا لم تكن مستعداً للهجرة وتريد العودة إلى الحالة القديمة، فاستخدم الأمر التالي:

    Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName

إذا كان التكوين المعد يبدو جيدًا، يمكنك المضي قدمًا والالتزام بالموارد باستخدام الأمر التالي:

    Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName

الخطوة 5أ: الخيار 2 - ترحيل الأجهزة الظاهرية في شبكة ظاهرية

لترحيل الأجهزة الظاهرية في شبكة ظاهرية، يجب عليك ترحيل الشبكة الظاهرية. يتم ترحيل الأجهزة الظاهرية تلقائيًا مع الشبكة الظاهرية. اختر الشبكة الظاهرية التي تريد ترحيلها.

ملاحظة

ترحيل جهاز ظاهري واحد تم إنشاؤه باستخدام نموذج التوزيع الكلاسيكي عن طريق إنشاء جهاز ظاهري لـ Resource Manager جديد باستخدام الأقراص المُدارة باستخدام ملفات VHD (نظام التشغيل والبيانات) الخاصة بالجهاز الظاهري.

ملاحظة

قد يختلف اسم الشبكة الظاهرية عما يظهر في المدخل الجديد. يعرض مدخل Azure الجديد الاسم كـ [vnet-name]، ولكن اسم الشبكة الظاهرية الفعلي من النوع Group [resource-group-name] [vnet-name]. قبل بدء الترحيل، ابحث عن اسم الشبكة الظاهرية الفعلي باستخدام الأمر Get-AzureVnetSite | Select -Property Name أو قم بعرضه في مدخل Azure القديم.

يعين هذا المثال التالي اسم الشبكة الظاهرية إلى Group [resource-group-name][vnet-name]. استبدل اسم الشبكة الظاهرية المثال باسم تم إرجاعه من تشغيل الأمر في قسم ملاحظة أعلاه.

    $vnetName = "Group [resource-group-name] [vnet-name]"

ملاحظة

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

أولاً، تحقق من صحة إذا كان يمكنك ترحيل الشبكة الظاهرية باستخدام الأمر التالي:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

يعرض الأمر التالي أي تحذيرات وأخطاء تمنع الترحيل. إذا كان التحقق من الصحة ناجحًا، يمكنك المتابعة باستخدام خطوة الإعداد التالية:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

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

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

إذا كان التكوين المعد يبدو جيدًا، يمكنك المضي قدمًا والالتزام بالموارد باستخدام الأمر التالي:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

الخطوة 5 ب: ترحيل حساب تخزين

بعد الانتهاء من ترحيل الأجهزة الظاهرية، قم بإجراء عمليات التحقق من المتطلبات الأساسية التالية قبل ترحيل حسابات التخزين.

ملاحظة

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

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

    • رحّل الأجهزة الظاهرية التي يتم تخزين أقراصها في حساب التخزين.

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

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • احذف أقراص الجهاز الظاهري غير المرفقة المخزنة في حساب التخزين.

      ابحث عن أقراص جهاز ظاهري غير مرفقة في حساب التخزين باستخدام الأمر التالي:

          $storageAccountName = 'yourStorageAccountName'
          Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName  
      
      

      إذا قام الأمر السابق بإرجاع الأقراص، احذف هذه الأقراص باستخدام الأمر التالي:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • احذف صور الجهاز الظاهري المخزنة في حساب التخزين.

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

         Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)`
                                 } | Select-Object -Property ImageName, ImageLabel
      

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

      
         Get-AzureVmImage | Where-Object {$_.DataDiskConfigurations -ne $null `
                                          -and ($_.DataDiskConfigurations | Where-Object {$_.MediaLink -ne $null -and $_.MediaLink.Host.Contains($storageAccountName)}).Count -gt 0 `
                                         } | Select-Object -Property ImageName, ImageLabel
      

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

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • تحقق من صحة حسابات التخزين وابدأ الترحيل.

    تحقق من صحة كافة حسابات التخزين للترحيل باستخدام الأمر التالي. في هذا المثال، اسم حساب التخزين هو myStorageAccount. استبدل ⁧⁩اسم حساب التخزين المثال⁧⁩ باسم حساب التخزين الخاص بك.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
    

    الخطوة التالية هي إعداد حساب التخزين للترحيل.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
    

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

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    إذا كان التكوين المعد يبدو جيدًا، يمكنك المضي قدمًا والالتزام بالموارد باستخدام الأمر التالي:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

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