Поделиться через


Перемещение экземпляра роли виртуальной машины (классической) или облачной службы в другую подсеть с помощью PowerShell

PowerShell можно использовать для перемещения виртуальных машин (классической) из одной подсети в другую в той же виртуальной сети. Экземпляры ролей можно переместить, изменив CSCFG-файл, а не с помощью PowerShell.

Примечание.

В этой статье объясняется, как перемещать виртуальные машины, развернутые только с помощью классической модели развертывания.

Зачем перемещать виртуальные машины в другую подсеть? Миграция подсети полезна, если старая подсеть слишком мала и не может быть развернута из-за существующих запущенных виртуальных машин в этой подсети. В этом случае можно создать новую, большую подсеть и перенести виртуальные машины в новую подсеть, а затем после завершения миграции можно удалить старую пустую подсеть.

Перемещение виртуальной машины в другую подсеть

Чтобы переместить виртуальную машину, запустите командлет PowerShell Set-AzureSubnet, используя приведенный ниже пример в качестве шаблона. В приведенном ниже примере мы перемещаем TestVM из текущей подсети в подсеть-2. Обязательно измените пример, чтобы он соответствовал вашей среде. Обратите внимание, что при запуске командлета Update-AzureVM в рамках процедуры он перезагрузит виртуальную машину в рамках процесса обновления.

Get-AzureVM –ServiceName TestVMCloud –Name TestVM `
| Set-AzureSubnet –SubnetNames Subnet-2 `
| Update-AzureVM

Если вы указали статический внутренний частный IP-адрес для виртуальной машины, необходимо очистить этот параметр, прежде чем переместить виртуальную машину в новую подсеть. В этом случае используйте следующее:

Get-AzureVM -ServiceName TestVMCloud -Name TestVM `
| Remove-AzureStaticVNetIP `
| Update-AzureVM
Get-AzureVM -ServiceName TestVMCloud -Name TestVM `
| Set-AzureSubnet -SubnetNames Subnet-2 `
| Update-AzureVM

Переместить экземпляр роли в другую подсеть

Чтобы переместить экземпляр роли, измените CSCFG-файл. В приведенном ниже примере мы перемещаем "Role0" из текущей подсети в Подсеть-2в виртуальной сети VNETName. Так как экземпляр роли уже развернут, вы просто измените имя подсети = подсеть-2. Обязательно измените пример, чтобы отразить вашу среду.

<NetworkConfiguration>
    <VirtualNetworkSite name="VNETName" />
    <AddressAssignments>
       <InstanceAddress roleName="Role0">
            <Subnets><Subnet name="Subnet-2" /></Subnets>
       </InstanceAddress>
    </AddressAssignments>
</NetworkConfiguration>