景观:
我们有一个带有两个微服务的应用程序。
微服务 A 用于将应用程序暴露在集群之外(我们的 Web 服务器)
微服务 B 是我们的业务功能。
我们在微服务 A 前面有一个 F5 来处理硬编码端口(onPrem)上的负载平衡。
- 在微服务 A 中,我们为清单中的 http 端点硬编码特定端口。
问题: 我们看到有时微服务 B(业务功能)可能会窃取微服务 A 硬编码使用的端口。然后它将永远无法正确启动服务。
我们还看到 SF 似乎按顺序使用可用端口。因此,如果我们硬编码微服务 A 使用端口 001,而微服务 B 是随机的。当 A 重新启动时,有时 B 会抓取 001。
可能的解决方案:
- 我们可以对所有微服务进行硬编码——不喜欢它。
- 我们可以为这些硬编码端口保留更高的范围。例如,如果 Service Fabric 使用 1000 个端口,我们可以为服务 A 保留 501-1000,让服务 B 获取 001-499。这只会延迟问题,直到您拥有超过 500 个实例。- 也不是这个的忠实粉丝。
- 将端口硬编码为集群范围之外的端口?例如,如果我们在设置集群时使用 20001-20500 作为 ApplicationEndpoints 范围,如果我们将 MicroService A 硬编码到用户 21000 似乎可以工作?我不确定这会产生什么意想不到的后果?
请给我一个很好的选择4 :)
谢谢,
格雷格