我正在尝试将保留的 IP 地址分配给云服务。我需要此功能来限制对数据库的 IP 访问(不,我不想允许所有 azure 节点进行此访问),并且我还必须访问需要静态 IP 的外部 API。
到目前为止,我已经创建了一个云服务解决方案并向该解决方案添加了一个 MVC Web 角色。使用 Azure Powershell,我获得了 IP 地址(使用 GetAzureReservedIP 验证成功)并更新了配置文件 ServiceConfiguration.cloud.cscfg。
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="TestApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2014-06.2.4">
<Role name="MvcWebRole">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=XYZ;AccountKey=XYZ" />
</ConfigurationSettings>
</Role>
<NetworkConfiguration>
<AddressAssignments>
<ReservedIPs>
<ReservedIP name="MyReservedIP"/>
</ReservedIPs>
</AddressAssignments>
</NetworkConfiguration>
</ServiceConfiguration>
(显然,我已确保 IP 地址的名称与 GetAzureReservedIP 中显示的名称完全相同。)
使用此配置,我已将解决方案部署到新的云服务,但它没有收到预期的 IP 地址。我正在使用 Visual Studio 2012 和 Azure SDK 2.4。我通过选择 Build -> Publish to Azure 从 Visual Studio 部署到 Azure,在其中创建新的云服务并选择“云”服务配置。
编辑 我可以看到 IP 地址不用于传出流量,因为无法访问数据库(仅允许一个 IP 地址)并且我对外部 Web 服务的请求被阻止。管理门户显示使用了另一个 IP 地址。