我有一个windows azure web角色(web api)云服务,到目前为止,端点80和443暴露给外部负载均衡器。我有一个团队城市配置,用于构建项目并将生成的包部署到特定云服务的登台环境。然后我使用临时环境来预热和测试部署,如果一切正常,我就可以在没有停机的情况下交换云服务环境。典型的azure云服务部署方案。
我现在想要实现的是使用内部负载均衡器从互联网隐藏web api的两个端点,并使用反向代理(nginx)公开它们,该代理将在将要公开的单独云服务中运行端口80和443.问题是,如果在我的配置中,我定义端点将在内部负载平衡,如下所示:
<Endpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" loadBalancer="apiILB" />
</Endpoints>
和
<LoadBalancers>
<LoadBalancer name="apiILB">
<FrontendIPConfiguration type="private" subnet="Subnet-1" staticVirtualNetworkIPAddress="10.0.1.111" />
</LoadBalancer>
</LoadBalancers>
我只能部署一次,因为它会创建一个内部负载均衡器来保存指定的ip。因此,我使用staging进行测试,预热和交换的整个工作流程将不再起作用。因此,如果我将此部署到cloudservice1生产环境,然后尝试在暂存环境中部署后一版本,则会收到ILB ip被采用(非常合理)并且无法部署的错误。
解决方法1: 不要将静态IP分配给负载均衡器,让它获得下一个可用的IP。
问题:
如果我没有静态分配ip,我不确定它是否会起作用,但它不会有帮助,因为我需要有一个静态ip来分配给nginx反向代理来转发请求。
解决方法2: 部署升级部署,从而覆盖以前的部署
问题:
升级部署将具有已知的缺点,例如在上线之前无法预热,可能出现问题并且没有撤消等,因此它不是一个选项。
解决方法3: 通过在teamcity构建过程中更改csfcg文件来更改每个部署的静态IP。
问题:
更改每个部署的静态IP也听起来像一个复杂的过程,将隐藏在teamcity配置中,并且需要在每次新部署后手动更新nginx代理配置。
我认为我想要完成的场景非常普遍,应该有一种使用反向代理和内部负载平衡云服务的连续部署的简洁方法,但我找不到任何关于此的文档/示例。 / p>