【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
属性的字符串定义。
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!