繁体   English   中英

使用资源管理器在虚拟机规模集上设置Azure多个公共IP

[英]Azure Multiple Public IPs on a Virtual Machine Scale Set with Resource Manager

我们尝试将平台从传统的IIS托管迁移到服务结构微服务架构。 因此,我们了解到服务结构存在于虚拟机规模集中,并使用负载均衡器与外部世界进行通信。

我们现在面临的问题是我们的应用程序具有不同的访问点。 就像一个用于浏览器,一个用于移动应用。 两者都使用标准的https端口,但它们是不同的应用程序。

在iis中,我们可以使用主机头将流量定向到一个或另一个应用程序。 但是服务面料我们做不到。 对我们来说最简单的方法就是多个公共IP。 有了它,我们可以用dns处理它。 我们考虑了一些没有成功的解决方案。

  1. 带有多个公共IP的负载均衡器。 问题:它看起来只适用于云服务,我们需要使用新的资源管理器世界,似乎不可能有多个公共IP。

  2. 多个公共负载均衡器。 问题:比例集仅接受负载均衡器实例的负载均衡器类型。

  3. 应用网关。 似乎不支持多个公共IP或主机头映射。

  4. 路径映射。 问题:我们在不同的应用程序中具有相同的路径。

我的问题是:

有没有任何解决方案可以使用多个IP并将流量内部映射到不同的端口?

有没有选择使用主机头映射与服务结构?

有什么建议我怎么解决我的问题?

将一些特定于Service Fabric的信息堆积到Eli的答案:是的,您可以执行所有这些并使用基于http.sys的自托管Web服务器在单个VIP上使用不同的主机名托管多个站点,例如Katana或WebListener在ASP.NET Core 1中。

Service Fabric中当前缺少的部分是一种在ServiceManifest.xml中配置端点定义中的主机名的方法。 默认情况下,Windows上的Service Fabric服务在网络服务下运行,这意味着该服务无权为其打开端点的URL创建URL ACL。 为此,当您在ServiceManifest.xml中的端点定义中指定HTTP端点时,Service Fabric会自动为您创建URL ACL。 但是目前,没有地方可以指定主机名,因此Service Fabric使用“+”,这是匹配所有内容的强通配符。

目前,这只是一个不便之处,因为您必须使用在提升权限下运行的服务创建一个设置入口点 ,以便运行netsh以手动设置URL ACL。

我们计划在ServiceManifest.xml中添加主机名字段以使其更容易。

绝对可以使用ARM模板部署具有多个IP的Service Fabric群集。 你只需稍微调整一下模板:

  • 创建多个IP地址资源(例如,使用copy ) - 确保使用IP查看所有资源并进行适当修改
  • 在负载均衡器中:
    • 添加多个frontendIPConfigurations ,每个都绑定到自己的IP
    • 为要从特定前端IP配置重定向到VM的每个端口添加loadBalancingRules
    • 添加探针

对于主机头映射,这由Windows HTTP Server API处理(请参阅此文章 )。 在配置HTTP侦听器URL(在OWIN / ASP.NET Core中)时,您所要做的就是使用特定的主机名(甚至是URL路径)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM