云服务配置虚拟网络和实例层级公共 IP
用户将应用迁移至 Azure 云服务时,很重要的一点考率是保证服务的安全性,在 Azure 上,保护应用程序资源的最佳实践就是创建虚拟机网络和子网。
用户在创建云服务时会生成一个 Virtual IP Address (VIP),而 VIP 是被云服务后端所有的机器共享, 如果用户想要能够通过特定的IP访问云服务中的某个实例,可以为经典云服务的实例请求实例层级公共 IP (下文简称 ILPIP)。
本文介绍了如何为经典云服务配置虚拟网络、配置 ILPIP 以及在配置过程中的注意事项:
经典云服务配置虚拟网络
经典云服务只可以配置经典虚拟网络,经典云服务需要在云服务的配置文件 .cscfg 中添加 NetworkConfiguration,并且需要重新部署做 full deployment 才能生效。需要注意检查添加相关配置之后的 xml 文件是否为有效文件,可以通过在线工具 XML Beautifier 生成有效 xml 文件。
参考示例如下:
<ServiceConfiguration>
<NetworkConfiguration>
<VirtualNetworkSite name="经典虚拟网络的虚拟网络站点名称"/>
<AddressAssignments>
<InstanceAddress roleName="角色名称">
<Subnets>
<Subnet name="子网名称"/>
</Subnets>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>
</ServiceConfiguration>
备注
经典虚拟网络的站点名称需要您在 Azure 门户 中找到已创建的经典虚拟网络,然后选择概述,其中( .cscfg 文件的)虚拟网络站点名称中的值就是经典虚拟网络的虚拟网络站点名称,如下图所示:
云服务配置虚拟网络请参考:NetworkConfiguration Schema。
创建经典虚拟机网络请参考:使用 Azure 门户创建虚拟网络(经典)。
经典云服务配置 ILPIP
可以通过以下方式配置 ILPIP,上传到云服务后系统会自动创建 ILPIP,只能为每个经典云服务角色实例分配一个 ILPIP,每个订阅最多可使用 5 个 ILPIP。
下载云服务的 .cscfg 文件。
修改云服务的配置文件 .cscfg,添加 InstanceAddress 节点,并且为 webrole 配置 ILPIP。
<?xml version="1.0" encoding="utf-8"?> <ServiceConfiguration serviceName="ILPIPSample" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2014-01.2.3"> <Role name="WebRole1"> <Instances count="1" /> <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> </Role> <NetworkConfiguration> <AddressAssignments> <InstanceAddress roleName="WebRole1"> <PublicIPs> <PublicIP name="MyPublicIP" domainNameLabel="MyPublicIP" /> </PublicIPs> </InstanceAddress> </AddressAssignments> </NetworkConfiguration> </ServiceConfiguration>
上传该 .cscfg 文件到云服务
详细介绍请参考:实例层级公共 IP (经典)概述。
备注
如果在配置了虚拟网络的情况下配置 ILPIP 需要按照顺序填写,先是 Subnets 然后 PublicIPs,参考如下:
<NetworkConfiguration>
<VirtualNetworkSite name="Group testgroup czclassicvnet" />
<AddressAssignments>
<InstanceAddress roleName="ContosoAdsWeb">
<Subnets>
<Subnet name="default" />
</Subnets>
<PublicIPs>
<PublicIP name="mypublicip" domainNameLabel="czpublicip" />
</PublicIPs>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>