设为首页 收藏本站
查看: 1096|回复: 0

[经验分享] 如何从Azure ASM迁移VM到ARM架构下

[复制链接]

尚未签到

发表于 2017-6-30 13:21:14 | 显示全部楼层 |阅读模式
  前面的一些文章,已经详细的说过ARM模式的一些特性及好处,也探讨过ASM的一些弊端。当然探讨的角度都是从产品设计,用户体验,市场需求方面,从某种程度上来讲接下来探讨是基于大众化。
  所谓利弊都是在于用途,如果ASM完全够用,完全满足于现在的IT需求,而且IT运营已经能够非常,重要的是现有的IT架构都在ASM模式下部署,那么建议还是用ASM吧,如果有新的业务,完全独立的模块尝尝鲜上ARM也未尝不可,毕竟是趋势,极力推荐。
  如果,对Azure是全新的认识,那么的话,极力推荐上ARM。毕竟任何新事物的产生都是有原因的,这是一个亘古不变的哲学道理,所以呢,以后Azure有什么新的Feature都是基于ARM的,如果以后想用发现部署模式不同,当然咱们不讨论迂回的解决方案哈,那么问题来了,早知现在何必当初,嘿嘿。
  从ASM迁移到ARM的变与不变?
  资源组是管理员可以用来捆绑特定应用程序或项目的Azure资源的逻辑容器。同一个组中的资源应具有相同的部署,更新和停用的生命周期,这意味着如果某个特定资源(例如数据库)被用于多个应用程序,则它应该被分在单独的组中。
  资源模板是Azure服务配置的标准描述。由于模板还可以应用于资源组,因此它们可以定义应用程序所使用的Azure服务之间的依赖和相互关系。模板是描述资源,变量,参数以及(如果需要的话)资源组输出的声明性JSON描述。模板替换了传统门户中使用的临时脚本,让Azure用户能使用相同的安全策略,以相同的配置方式来部署同一组服务。
  基于角色的访问控制(RBAC通过确保用户只能访问那些他们执行任务所需的Azure服务与功能来提高安全性。管理员可以在订阅,资源组或单个资源上应用RBAC。这意味着特定用户有可能有权限访问订阅的所有数据库,但除此之外不再有其他权限,而另一个用户则只能使用资源组定义的特定应用程序所使用的虚拟机。
  标签是管理员可以应用于Azure资源的元数据,目标是在订阅中进行逻辑组织。标签可按照部门,工作组,项目或位置代码对资源进行分组,以及用于汇总资源使用情况和费用。管理员可以使用标签标记超出预算的用户或项目。
  以上都是ARM模式的特点,是新事物的特征,这些都是重要的变化。
  通常不变的是机房的位置,机房的硬件配置,底层的计算方式(云计算技术角度不是部署计算方式)。
  IaaS VM产品角度变化分析。


ASM(VM)



ARM(VM)



操作系统



自定义,官方



自定义,官方



自定义VHD



磁盘



Storage V1



Storage V2



RM VM只能用V2



网络



Vnet V1



Vnet V2



RM VM只能用V2



IP属性



Cloud Service+VM



LB+NetworkInterface



负载均衡



Cloud Service



LB



可用性集



Set V2



Set V3



RM VM只能用V3,RM VM创建没有加入Set,后期如果再加有宕机时限



启动诊断



Diag



Diag



未分离VM属性



镜像捕获



门户,Powershell



Powershell



RM做完镜像,这台VM将不可用,有宕机时限,可恢复



扩展



BGinfo,Agent



BGinfo,Agent



安全



ACL



NSG



RM VM如果没有加入NSG,默认放行端口3389或者22



创建方式



门户,Powershell



门户,Powershell,
Template


FromInmage,Attach,Empty(方法)

  如果对于以上一个表讨论,那么我相信可以写一篇毕业论文了,
  这不是我们的主要工作。
  那么, 我将会Share 如何通过Powershell把ASM模式下的VM迁移到ARM模式下,
  尽管官方也有迁移方案和社区工具:
  请参考:https://docs.microsoft.com/zh-cn/azure/virtual-machines/virtual-machines-windows-ps-migration-classic-resource-manager?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json

  有兴趣的小伙伴可以自行研究,我们的脚步做的事情是把ASM的虚拟机复制到ARM下,就这么简单的一个逻辑,与其说迁移倒不如说是复制。我们不用担心ASM下VM的状态如何。
  只按要求填写参数即可,但是后期需要验证VM Agent千万不要忘了。
  PS脚本:


<#
++++++++++++++++++++++++++++++++++++++++++++++++++++++
This scrips is that how to migration IaaS Service(VM) in Azure.
IaaS Service: Virtual Machine.
.NOTES
Author: Luna-Star
Last Updated: 11/28/2016
Version 1.1   
#>
Param
(
#待迁移虚拟机订阅ID
[string] $SubscriptionId="8b5da570-2b06-4596-9597-c84a1ac863fe",
#待迁移虚拟机云服务名称
[string] $CloudServiceName="ie10",
#待迁移虚拟机名称
[string] $MigrationVM="ie10",
#目标虚拟机存放资源组名称
[string] $VMResourceGroup="ie10",
#目标虚拟机名称
[string] $DestVMName="ie11",
#目标存储账户名称
[string] $DestStorageAccountName="ie12",
#目标存储账户所在资源组
[string] $DestStorageAccountrg="ie11",   
#目标镜像所在Container Name   
[string] $DestStorageContainerName="vhds",
#目标虚拟机设置登录的用户名
[string] $DestUsername="locyu",
#目标虚拟机设置登录的密码
[string] $DestPassword="Apple123",
#目标虚拟机所在数据中心,分别为China North和China East
[string] $DestLocation="China North",
#目标虚拟机所在虚拟网络名称
[string] $DestVNetName="locyu01",
#目标虚拟机所在虚拟网络的资源组名称
[string] $DestVNetNameResourceGroup="locyu01",
#目标虚拟机所在子网数组号,例如:在页面上从上至下顺序第二个子网,那么它的数组号为1
[string] $DestSubNet="1"

)
#登陆待迁移的订阅账号
Add-AzureAccount -Environment AzureChinaCloud
Select-AzureSubscription -SubscriptionId $SubscriptionId -Current
##############################################################################
# This part is the info of migration VM.  
##############################################################################
$InfoVM = Get-AzureVM -ServiceName $CloudServiceName -Name $MigrationVM
$StorVM = Get-AzureOSDisk -VM $InfoVM
$HostCaching = $StorVM.HostCaching
$AvailabilitySetName = $InfoVM.AvailabilitySetName
$InstanceSize = $InfoVM.InstanceSize.ToString()
$OSType = $StorVM.OS.ToString()
$OSMediaLink  = $StorVM.MediaLink.ToString()
$OSStorageAccount = $StorVM.MediaLink.Host.Split(".")[0]
$OSStorageAccountKey = (Get-AzureStorageKey -StorageAccountName $OSStorageAccount).Primary
$Context = New-AzureStorageContext -StorageAccountName $OSStorageAccount -StorageAccountKey $OSStorageAccountKey
#登陆目标的订阅账号
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
##############################################################################
# This part is that how to creat VM.  
##############################################################################
#获取订阅下目标资源组
$Ps = ConvertTo-SecureString -String $DestPassword -AsPlainText -force
$cred = New-Object System.Management.Automation.PSCredential($DestUsername,$Ps)
$rg = Get-AzureRmResourceGroup -Name $VMResourceGroup
IF ($rg -eq $null){ New-AzureRmResourceGroup -Name $VMResourceGroup -Location $DestLocation}
$srg = Get-AzureRmResourceGroup -Name $DestStorageAccountrg
IF ($srg -eq $null){ New-AzureRmResourceGroup -Name $DestStorageAccountrg -Location $DestLocation}
#获取订阅下目标存储
$st = Get-AzureRmStorageAccount -ResourceGroupName $DestStorageAccountrg -Name $DestStorageAccountName
IF ($st -eq $null){
New-AzureRmStorageAccount -ResourceGroupName $DestStorageAccountrg `
-Name $DestStorageAccountName `
-SkuName Standard_GRS `
-Location $DestLocation
}
#为目标存储创建vhds容器
$destStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $DestStorageAccountrg -Name $DestStorageAccountName).Value[0]
$destContext = New-AzureStorageContext -StorageAccountName $DestStorageAccountName -StorageAccountKey $destStorageAccountKey
$rq = New-AzureStorageContainer -Name $DestStorageContainerName -Context $destContext
IF($rq -eq $null){ New-AzureStorageContainer -Name vhds -Context $destContext }
#创建虚拟机pip和网络接口
$net = Get-AzureRmVirtualNetwork -Name $DestVNetName -ResourceGroupName $DestVNetNameResourceGroup
$pip = New-AzureRmPublicIpAddress -Name $DestVMName -ResourceGroupName $VMResourceGroup -Location $DestLocation `
-AllocationMethod Dynamic
$nic = New-AzureRmNetworkInterface -Name $DestVMName -ResourceGroupName $VMResourceGroup -Location $DestLocation `
-SubnetId $net.Subnets[$DestSubNet].Id -PublicIpAddressId $pip.Id
#复制VHD并且配置VHD
$blob = Start-AzureStorageBlobCopy -srcUri $OSMediaLink `
-DestContainer  $DestStorageContainerName `
-DestBlob ($DestVMName +".vhd")`
-DestContext $destContext -Context $Context
$osDiskUri = "https://" + $DestStorageAccountName + ".blob.core.chinacloudapi.cn/"+ $DestStorageContainerName + "/"+ $DestVMName + ".vhd"
#创建可用性集
#如果源机器没有可用性集,那么将会重新赋值,因为RM下的VM创建没有加可用性后期会很麻烦
IF($AvailabilitySetName -eq $null){$AvailabilitySetName = ($DestVMName+"AvailabilitySet")}
$av = Get-AzureRmAvailabilitySet -ResourceGroupName $VMResourceGroup -Name $AvailabilitySetName
IF($av -eq $null){ $av = New-AzureRmAvailabilitySet -ResourceGroupName $VMResourceGroup -Name $AvailabilitySetName -Location $DestLocation }
#创建虚拟机
$vmConfig = New-AzureRmVMConfig -VMName $DestVMName -VMSize $InstanceSize -AvailabilitySetId $av.Id
#$vm = Set-AzureRmVMOperatingSystem -VM $DestVMName  -ComputerName $DestVMName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id
$osDiskName = $DestVMName + "osDisk"
#如果有数据盘可以先copy到vhd在添加,这里就不加了
#$dataDiskName = $DestVMName + "dataDisk"
#$vm = Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName -VhdUri $dataDiskUri -Lun 0 -CreateOption attach
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -Caching $HostCaching  -CreateOption Attach -Windows
#开始创建
New-AzureRmVM -ResourceGroupName $VMResourceGroup -Location $DestLocation -VM $vm

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389670-1-1.html 上篇帖子: Windows Azure HandBook (9) Azure性能测试(2) 下篇帖子: 初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表