Azure ReservedIPAddress&没有端点的Cloud Service

时间:2016-12-17 01:59:29

标签: azure azure-cloud-services

我有一个云服务,可以在外部打开套接字并需要列入白名单的IP地址。外部任何东西都不会启动与我的服务的连接。

当我尝试使用关联的ReservedIP地址发布时,我收到以下错误:Validation Errors: Error validating the .cscfg file against the .csdef file. Severity:Error, message:ReservedIP 'xxxx' was not mapped to an endpoint. The service definition must contain atleast one endpoint that maps to the ReservedIP..

.cscfg

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="Gateway" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="5" osVersion="*" schemaVersion="2015-04.2.6">
  <Role name="WorkerRole1">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="yyyyy" />
      <Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" />
      <Setting name="ASPNETCORE_ENVIRONMENT" value="dev" />
    </ConfigurationSettings>
  </Role>
  <NetworkConfiguration>
    <AddressAssignments>
      <ReservedIPs>
       <ReservedIP name="xxxxx"/>
      </ReservedIPs>
    </AddressAssignments>
  </NetworkConfiguration>
</ServiceConfiguration>
  1. 有没有办法在不指定端点的情况下部署它? (我正在使用VS2017RC进行部署)
  2. 如果没有,那么xml对于一个虚拟的“端点”会是什么样子,我会冒什么风险呢?
  3. 我有更好的方法来接近这个吗?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,我的工作解决方案是从here获取“输入端点”并将其放在WorkerRole标记内的.csdef文件中。

<Endpoints>
  <InputEndpoint name="StandardWeb" protocol="http" port="80" localPort="80" />
</Endpoints> 

答案 1 :(得分:3)

看起来只有包含外部端点的服务支持ReservedIP。您可以做的是添加一个外部端点,但使用NSG(Network Security Group)将其防火墙。

在定义端点的帮助中,请参阅

https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-enable-communication-role-instances

此外,如果您使用的机器实际上未绑定到该机器,则它不应该是一个漏洞;但在NSG中添加拒绝规则也将涵盖未来的任何变化。

[Aside]如果您的服务没有任何传入连接,则应考虑使用辅助角色而不是Web角色。长时间运行的线程可以在Web角色实例中终止。