2016-11-18 74 views
0

我已经设置了三个节点的独立群集。我在包含三个服务的集群上放置了一个应用程序,应用程序被配置为每个服务的一个实例将驻留在每个节点上。在这三种服务中,其中一种是前端服务,它接收来自外部客户端的请求,然后与另外两种服务(不能从群集外部寻址)通信以获取响应所需的信息。已编写外部客户端程序通过http请求与前端服务进行通信。目前,此外部客户端必须使用节点IP地址和端口将其请求发送到特定服务实例。我使用这种方法遇到的问题是,如果由外部客户端寻址的节点出现故障,客户端不再能够寻址服务,尽管前端服务仍在两个其他节点上运行。服务结构:独立群集上的寻址服务

这是我的问题:有没有办法让外部客户端通过Service Fabric来调用前端服务,而不指定特定的节点进行通信?我的希望是,如果接收请求的原始节点关闭,这种通信方法将允许将请求路由到备用节点。

回答

1

您应该在群集前使用load balancer将流量分配到您的前端服务实例。如果负载均衡器不响应用户请求,则应将负载均衡器配置为使节点脱离负载平衡器的旋转。这有助于保护您的服务和用户的中断。

如果您的用户位于可信边界内(例如,Intranet用户),则负载均衡器的替代方案将要求客户端应用程序首先执行service address look-up with Service Fabric's naming service,这将为您提供每个无状态服务实例的端点列表这是可用的。再一次,你并不是真的想把它暴露给不信任的用户,因为他们很容易滥用或超载它。如果你这样做,你依靠你的客户端应用程序通过挑选一个随机实例来提供负载平衡。但真正你应该做的是获得负载平衡器。