【Azure 云服务】Azure Cloud Service如何来设置固定IP地址(ReservedIP)

问题描述

在云中环境,部署的应用到云服务(Cloud Service)都是动态的IP地址,所以在添加DNS记录的时候,都是使用CNAME,但如果需要在DNS中添加A记录,则需要一个固定IP。 

解决方案

Azure提供了保留IP的服务,可以通过New-AzureReservedIP命令来创建。然后再云服务(Cloud Service)中使用。操作步骤如下:

步骤一:通过powershell 命令进行创建保留IP

New-AzureReservedIP -ReservedIPName $Name -  -Location $Location

 

  • Get-AzureReservedIP 查看创建的保留地址
  • Remove-AzureReservedIPAssociation 解除保留IP地址

 

步骤二:修改Cloud Service配置文件,把ReservedIP与Cloud Service关联,然后重新发布文件

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="AzureCloudService2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="6" osVersion="*" schemaVersion="2015-04.2.6">
  <Role name="WebRole1">
    <Instances count="1" />
    <ConfigurationSettings>
    </ConfigurationSettings>
  </Role> 
<NetworkConfiguration>
   <AddressAssignments>
       <ReservedIPs>
          <ReservedIP name="MyPassIp2"/>
       </ReservedIPs>
    </AddressAssignments>
</NetworkConfiguration>
</ServiceConfiguration>

或通过Powershell命令进行绑定

Set-AzureReservedIPAssociation -ReservedIPName MyPassIp2 -ServiceName <cloud service name>

 

附加因ReservedIP而引发的错误

1) 云服务在更新发布后无法修改RDP的密码,修改时出现错误消息:ReservedIP  was not mapped to an endpoint. The service definition must contain atleast one endpoint that maps to the ReservedIP.

【答】根据错误消息提示,查看到是ReservedIP地址没有绑定endpoint推断是新发布的配置文件中遗漏了该Cloud Service的ReservedIP配置部分。所以需要先解绑ReservedIP,重新绑定。 也可以再解绑后修改RDP密码。修改成功后重新绑定ReservedIP.  解决问题的过程中使用的命令正是:

Remove-AzureReservedIPAssociation -ReservedIPName <ReservedIPName> -ServiceName <ServiceName >

Set-AzureReservedIPAssociation -ReservedIPName <ReservedIPName> -ServiceName <ServiceName >

 

 

参考文档

Azure 云服务的配置 NetworkConfiguration 架构: https://docs.azure.cn/zh-cn/cloud-services/schema-cscfg-networkconfiguration

New-AzureReservedIP: https://docs.microsoft.com/en-us/powershell/module/servicemanagement/azure.service/new-azurereservedip?view=azuresmps-4.0.0

 

 

下表介绍了 NetworkConfiguration 元素的子元素。

NETWORKCONFIGURATION 元素
元素说明
AccessControl 可选。 指定云服务中用于访问终结点的规则。 访问控制名称由 name 属性的字符串定义。 AccessControl 元素包含一个或多个 Rule 元素。 可定义多个 AccessControl 元素。
规则 可选。 指定应对指定的 IP 地址子网范围执行的操作。 规则的顺序由 order 属性的字符串值定义。 规则编号越低,优先级越高。 例如,可使用序号 100、200 和 300 指定规则。 序号为 100 的规则优先于序号为 200 的规则。

规则的操作由 action 属性的字符串定义。 可能的值包括:

permit - 指定只有指定子网范围中的数据包才可以与终结点通信。
deny - 指定拒绝对指定子网范围中终结点的访问。

受规则影响的 IP 地址的子网范围由 remoteSubnet 属性的字符串定义。 对规则的说明由 description 属性的字符串定义。
EndpointAcl 可选。 指定向终结点分配访问控制规则。 包含终结点的角色的名称由 role 属性的字符串定义。 终结点的名称由 endpoint 属性的字符串定义。 对于应该应用到终结点的 AccessControl 规则的集合,其名称在 accessControl 属性的字符串中定义。 可定义多个 EndpointAcl 元素。
DnsServer 可选。 指定 DNS 服务器的设置。 可以指定不使用虚拟网络的 DNS 服务器的设置。 DNS 服务器的名称由 name 属性的字符串定义。 DNS 服务器的 IP 地址由 IPAddress 属性的字符串定义。 该 IP 地址必须是有效的 IPv4 地址。
VirtualNetworkSite 可选。 指定要在其中部署云服务的虚拟网络站点的名称。 此设置不会创建虚拟网络站点。 它引用之前已在虚拟网络的网络文件中定义的站点。 一个云服务只能是一个虚拟网络的成员。 如未指定此设置,则云服务不会部署到虚拟网络。 虚拟网络站点的名称由 name 属性的字符串定义。
InstanceAddress 可选。 指定角色与虚拟网络中的子网或子网集的关联。 将角色名称关联到实例地址时,可以指定要将此角色与之关联的子网。 InstanceAddress 包含 Subnets 元素。 与一个或多个子网相关联的角色的名称由 roleName 属性的字符串定义。
子网 可选。 指定与网络配置文件中的子网名称相对应的子网。 子网的名称由 name 属性的字符串定义。
ReservedIP 可选。 指定应与部署关联的保留 IP 地址。 必须使用“创建保留 IP 地址”创建保留的 IP 地址。 云服务中的每个部署均可与一个保留 IP 地址相关联。 保留 IP 地址的名称由 name 属性的字符串定义。
posted @ 2020-12-17 15:34  路边两盏灯  阅读(628)  评论(0编辑  收藏  举报