피어 Azure 가상 네트워크 및 중심/복사 적외선에서 주소 공간 변경

33766 단어 azurepowershelliac
대부분의 Azure 엔터프라이즈 아키텍처에서 중앙/방사선 네트워크 토폴로지를 사용할 수 있습니다.간단히 말하면, 가상 네트워크는 로컬 링크가 있는 중심 연결점을 충당한다.스포크 VNET는 모니터링 센터를 통해 이 점에 액세스합니다.참조 아키텍처here를 볼 수 있습니다.
그러나 분기 VNET의 주소 공간을 업데이트하는 데 관련된 경우 허브 VNET와의 등가를 삭제해야 한다는 제한이 있습니다.다시 말하면, 중심과의 연결을 삭제해야 합니다. 이것은 응용 프로그램의 작업 방식에 영향을 줄 수 있습니다.
최근 마이크로소프트는 이 문제를 처리하는 새로운 방법을 발표했다. 삭제할 필요가 없는 peering 상황에서 주소 공간을 바꾸는 것이다.
그것이 어떻게 일을 하는지 우리에게 보여 주시오.만약 두 개의 vnet이 있다면, 'vnethub' 는 집선기 네트워크이고, 'vnetspoke' 는 복사 네트워크입니다.두 VNET의 주소 공간에는 접두어가 하나만 있습니다."vnet spoke"주소 공간을 업데이트하는 방법은 새 접두사를 추가하십시오.
우선 등록 제공자 기능을 해야 돼요.
if ((Get-AzProviderFeature -ProviderNamespace Microsoft.Network -ListAvailable | Where-Object featureName -eq "AllowUpdateAddressSpaceInPeeredVnets").RegistrationState -eq "NotRegistered") {
    Register-AzProviderFeature -ProviderNamespace Microsoft.Network -FeatureName AllowUpdateAddressSpaceInPeeredVnets
}
그런 다음 피어를 삭제하지 않고 새 네트워크 접두사를 추가할 수 있습니다.
```powershell$newIpRange=“172.24.1.0/24”
$spokeVVnet=Get AzVirtualNetwork-name“vnet Speak”-ResourceGroupName“01 Azure peering”
$Spokevnet.주소 공간.주소 접두어.추가($newIpRange)
가상 네트워크 설정 - 가상 네트워크 $spokeVVnet


Without the provider feature registration, this command would fail.

But if the command works, it doesn’t mean that the configuration is over. If you look at the peering state by using PowerShell.



```powershell
Get-AzVirtualNetworkPeering -VirtualNetworkName "vnet-spoke" -ResourceGroupName "01-Azure-peering" -Name "link-to-hub"
PeeringSyncLevel: RemoteNotInSync
Azure 포털에서는 이러한 메시지가 피어 VNET의 피어 설정에서 표시됩니다.

두 피어를 포털에서 동기화할 수 있지만 최신 버전의 Azure PowerShell을 새 Cmdlet으로 사용하여 동기화를 관리할 수도 있습니다.전화번호Sync-AzVirtualNetworkPeering.
이 cmdlet은 VNET 이름, 리소스 그룹 이름 및 피어 이름만 사용합니다.
AzVirtualNetworkPeering 동기화 - 이름 허브에 링크 - VirtualNetworkName "vnet spoke"- Resource GroupName "01 Azure peering"
AzVirtualNetworkPeering 동기화 - 이름 "spoke에 링크"- VirtualNetworkName "vnethub"- 리소스 그룹 이름 "01 Azure peering"
구성, 접두사 추가, 두 개의 등점이 동기화되는 동안에도 네트워크는 작동하고 패키지가 분실되지 않습니다.
그러나 내부 정책은 코드, ARM 템플릿, Bicep 등 모든 배치가 인프라에 기반을 두고 PowerShell에서 동기화 작업을 수행하는 방법을 요구할 수 있습니다.
ARM 템플릿(또는 Bicep)의 deploymentScripts 자원(Microsoft.Resources/deploymentScripts)을 사용하면 리소스를 생성할 수 있습니다.
첫 번째는 사용자가 관리하는 표지 대상을 만들고 동기화 작업을 수행할 수 있는 충분한 역할을 부여하는 것이다.
$userManagedIdentity = New-AzUserAssignedIdentity -ResourceGroupName "01-Azure-peering" -Name "armdepscript01"

New-AzRoleAssignment -ObjectId $userManagedIdentity.PrincipalId -ResourceGroupName "01-Azure-peering"  -RoleDefinitionName Contributor
주의: 이것은 시범입니다.생산 환경에서, 너는 가능한 한 '인터넷 공헌자' 와 같은 역할을 적게 해야 한다.사용자 관리의 표식도 같은 자원 그룹에서 만들어서는 안 된다.
deploymentScripts 자원에 사용되는 스크립트는 두 개의 대등한 노드 중 하나가 있는지 테스트해야 합니다.Get-AzVirtualNetworkPeering cmdlet은 여러 속성을 반환합니다. 여기서 PeeringSyncLevel은 동기화가 필요한지 여부를 결정하는 데 사용됩니다.값이 LocalNotInSync 또는 RemoteNotInSync인 경우 동기화가 필요합니다.
 $hubPeeringStatus = Get-AzVirtualNetworkPeering -Name 'link-to-spoke01' -VirtualNetworkName 'vnet-hub01'  -ResourceGroupName  '01-Azure-peering'

$spokePeeringStatus = Get-AzVirtualNetworkPeering -Name 'link-to-hub01' -VirtualNetworkName 'vnet-spoke01'  -ResourceGroupName  '01-Azure-peering'

if (($hubPeeringStatus.PeeringSyncLevel -eq 'LocalNotInSync') -OR ($hubPeeringStatus.PeeringSyncLevel -eq 'RemoteNotInSync')) {
    $resultSpoke = Sync-AzVirtualNetworkPeering -Name 'link-to-spoke01' -VirtualNetworkName 'vnet-hub01'  -ResourceGroupName  '01-Azure-peering' 
}

if (($spokePeeringStatus.PeeringSyncLevel -eq 'LocalNotInSync') -OR ($spokePeeringStatus.PeeringSyncLevel -eq 'RemoteNotInSync')) {
    $resultHub = SSync-AzVirtualNetworkPeering -Name 'link-to-hub01' -VirtualNetworkName 'vnet-spoke01'  -ResourceGroupName  '01-Azure-peering'
}
ARM 템플릿을 작성하는 방법우선, 당신은 최신 버전의 마이크로소프트를 사용해야 합니다.네트워크 API는 2021-02-21이어야 합니다.등가 VNET에 접두어를 추가하려고 하면 이전 API 버전을 사용하면 오류가 발생합니다.
두 번째는 Azure PowerShell 버전을 꼼꼼히 선택하는 것입니다.새로운 피어 기능은 6.3 및 6.2 버전에서만 지원되며 피어의 동기화 수준과 동기화 피어를 제공합니다.6.3 또는 6.2 버전의 PowerShell 모듈이 필요합니다.그러나 Azure 컨테이너 인스턴스를 기반으로 하는 deploymentScript 리소스는 6.2 버전만 지원하며 이전 Azure PowerShell 버전에서는 동기화 상태를 테스트하고 동기화를 수행할 수 없습니다.
온전한 템플릿이 여기 있습니다.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vnetHubName": {
            "defaultValue": "vnet-hub01",
            "type": "String"
        },
        "vnetSpokeName": {
            "defaultValue": "vnet-spoke01",
            "type": "String"
        },
        "peeringToHubName": {
            "defaultValue": "link-to-hub01",
            "type": "String"
        },
        "peeringToSpokeName": {
            "defaultValue": "link-to-spoke01",
            "type": "String"
        },
        "forceExecut": {
            "defaultValue": "[newGuid()]",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2021-02-01",
            "name": "[parameters('vnetHubName')]",
            "location": "northeurope",
            "dependsOn": [],
            "properties": {
                "addressSpace": {
                    "addressPrefixes": [
                        "10.0.0.0/24"
                    ]
                },
                "enableDdosProtection": false
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2021-02-01",
            "name": "[parameters('vnetSpokeName')]",
            "location": "northeurope",
            "dependsOn": [],
            "properties": {
                "addressSpace": {
                    "addressPrefixes": [
                        "10.0.1.0/24",
                        "172.24.1.0/24",
                        "172.24.2.0/24",
                        "172.24.3.0/24",
                        "172.24.4.0/24"
                    ]
                },
                "enableDdosProtection": false
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/subnets",
            "apiVersion": "2021-02-01",
            "name": "[concat(parameters('vnetHubName'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetHubName'))]"
            ],
            "properties": {
                "addressPrefix": "10.0.0.0/24",
                "delegations": [],
                "privateEndpointNetworkPolicies": "Enabled",
                "privateLinkServiceNetworkPolicies": "Enabled"
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/subnets",
            "apiVersion": "2021-02-01",
            "name": "[concat(parameters('vnetSpokeName'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetSpokeName'))]"
            ],
            "properties": {
                "addressPrefix": "10.0.1.0/24",
                "delegations": [],
                "privateEndpointNetworkPolicies": "Enabled",
                "privateLinkServiceNetworkPolicies": "Enabled"
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
            "apiVersion": "2021-02-01",
            "name": "[concat(parameters('vnetSpokeName'), '/' ,parameters('peeringToHubName'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetSpokeName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetHubName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetHubName'), 'default')]",
                "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetSpokeName'), 'default')]"
            ],
            "properties": {
                "peeringState": "Connected",
                "remoteVirtualNetwork": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetHubName'))]"
                },
                "allowVirtualNetworkAccess": true,
                "allowForwardedTraffic": false,
                "allowGatewayTransit": false,
                "useRemoteGateways": false,
                "remoteAddressSpace": {
                    "addressPrefixes": [
                        "10.0.0.0/24"
                    ]
                }
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
            "apiVersion": "2021-02-01",
            "name": "[concat(parameters('vnetHubName'), '/' ,parameters('peeringToSpokeName'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetSpokeName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetHubName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetHubName'), 'default')]",
                "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetSpokeName'), 'default')]"
            ],
            "properties": {
                "peeringState": "Connected",
                "remoteVirtualNetwork": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetSpokeName'))]"
                },
                "allowVirtualNetworkAccess": true,
                "allowForwardedTraffic": false,
                "allowGatewayTransit": false,
                "useRemoteGateways": false,
                "remoteAddressSpace": {
                    "addressPrefixes": [
                        "10.0.1.0/24"
                    ]
                }
            }
        },
        {
            "type": "Microsoft.Resources/deploymentScripts",
            "apiVersion": "2020-10-01",
            "name": "resolvePeeringSync",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetSpokeName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetHubName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks/virtualNetworkPeerings',parameters('vnetSpokeName'),parameters('peeringToHubName'))]",
                "[resourceId('Microsoft.Network/virtualNetworks/virtualNetworkPeerings',parameters('vnetHubName'), parameters('peeringToSpokeName'))]"
            ],
            "location": "[resourceGroup().location]",
            "kind": "AzurePowerShell", 
            "identity": {
                "type": "userAssigned",
                "userAssignedIdentities": {
                "/subscriptions/087f441f-6200-4226-bac3-22a1dbe98fae/resourceGroups/01-Azure-peering/providers/Microsoft.ManagedIdentity/userAssignedIdentities/armdepscript01": {}
                }  
            },
            "properties": {
                "azPowerShellVersion": "6.2",
                "forceUpdateTag": "[parameters('forceExecut')]",
                "scriptContent": "

$hubPeeringStatus = Get-AzVirtualNetworkPeering -Name 'link-to-spoke01' -VirtualNetworkName 'vnet-hub01'  -ResourceGroupName  '01-Azure-peering'
$spokePeeringStatus = Get-AzVirtualNetworkPeering -Name 'link-to-hub01' -VirtualNetworkName 'vnet-spoke01'  -ResourceGroupName  '01-Azure-peering'

if (($hubPeeringStatus.PeeringSyncLevel -eq 'LocalNotInSync') -OR ($hubPeeringStatus.PeeringSyncLevel -eq 'RemoteNotInSync')) {
    $resultSpoke = Sync-AzVirtualNetworkPeering -Name 'link-to-spoke01' -VirtualNetworkName 'vnet-hub01'  -ResourceGroupName  '01-Azure-peering' 
}
if (($spokePeeringStatus.PeeringSyncLevel -eq 'LocalNotInSync') -OR ($spokePeeringStatus.PeeringSyncLevel -eq 'RemoteNotInSync')) {
    $resultHub = SSync-AzVirtualNetworkPeering -Name 'link-to-hub01' -VirtualNetworkName 'vnet-spoke01'  -ResourceGroupName  '01-Azure-peering'
}
                ",
            "supportingScriptUris":[],
            "timeout": "PT30M",
            "cleanupPreference": "OnExpiration",
            "retentionInterval": "P1D"

            }
        }
    ],
"outputs": {
    }
} 
Azure에서 중심 복사 모델을 실행하는 사람에게 방사식 VNET에서 주소 접두사를 업데이트할 가능성은 일반적으로 가장 인기 있는 기능 중 하나이다.금방 나을 거예요.

좋은 웹페이지 즐겨찾기