【发布时间】:2016-07-14 01:16:15
【问题描述】:
场景 1(工作):这里的场景运行良好:我有 2 个可公开访问的无状态服务 Foo 和 Bar
- Foo: 2 个实例,监听端口
8081 - 栏:1 个实例,监听端口
8082
向http://clusteruri:8081 或http://clusteruri:8082 发送请求可以正常工作,我发现对于 Foo,请求很好地分布在托管两个实例的两个节点之间。
场景 2(不工作):这里是我想要启用的场景:同样是 2 个无状态服务 Foo 和 Bar
- Foo: 2 个实例,监听 URI 前缀
http://+:8080/foo - 栏:1 个实例,监听 URI 前缀
http://+:8080/bar
请注意,这两个服务都侦听相同的端口,但路径不同(通过使用构建在 http.sys 之上的主机,如 WebListener 来实现)。
这里的事情开始变得奇怪了:似乎 ASF/负载均衡器并没有真正理解它,并认为所有 3 个节点都只是在端口 8080 上侦听,导致对 Foo 的一些请求最终在托管 Bar 的节点上结束,反之亦然圆。
似乎 ASF/负载均衡器能够自动处理服务侦听专用端口的情况,但并不真正支持服务侦听同一端口(但路径不同)。
我的问题
- 有没有办法让场景 2 像在场景 1 中一样“开箱即用”地工作(即,不实现执行路由的自定义应用网关服务)?
- 有人可以解释一下 ASF 如何配置/通信以使场景 1 正常工作吗? IE。我在哪里可以“看到” ASF 配置了负载均衡器,即对 Foo 的请求应该发送到 Node0 或 Node1,而对 Bar 的请求应该发送到 Node2,具体取决于请求发送到哪个端口?
【问题讨论】:
-
您能分享一下您的通信监听器的代码吗?以及如何创建代理。
标签: azure azure-service-fabric