Service Fabric:独立集群上的寻址服务
Service Fabric: Addressing Service on Stand-Alone Cluster
我已经设置了一个三节点独立集群。我在包含三个服务的集群上放置了一个应用程序,该应用程序被配置为每个服务的一个实例将驻留在每个节点上。在这三个服务中,其中一个是前端服务,它接收来自外部客户端的请求,然后与另外两个服务(无法从集群外部寻址)通信以获取响应所需的信息。已编写外部客户端程序以通过 http 请求与前端服务进行通信。目前,这个外部客户端必须使用节点 ip 地址和端口将其请求发送到特定的服务实例。我在使用这种方法时遇到的问题是,如果外部客户端正在寻址的节点出现故障,客户端将不再能够寻址该服务,尽管前端服务仍在其他两个节点上 运行 .
我的问题是:有没有办法让外部客户端通过Service Fabric调用前端服务,而不用指定特定的节点进行通信?我希望如果接收请求的原始节点出现故障,这种通信方法将允许将请求路由到备用节点。
您应该在集群前面使用 load balancer 将流量分配给您的前端服务实例。如果节点不响应用户请求,则应将负载均衡器配置为将节点从负载均衡器的轮换中移除。这有助于保护您的服务和用户免受中断。
如果您的用户在受信任的边界内(例如,Intranet 用户),那么负载均衡器的替代方案将要求客户端应用程序首先执行 service address look-up with Service Fabric's naming service,这将为您提供一个端点列表每个可用的无状态服务实例。同样,您真的不想将它暴露给不受信任的用户,因为他们很容易滥用它或使它过载。如果您这样做,您将依赖您的客户端应用程序通过选择一个随机实例进行连接来提供负载平衡。但实际上你应该做的是获得一个负载平衡器。
我已经设置了一个三节点独立集群。我在包含三个服务的集群上放置了一个应用程序,该应用程序被配置为每个服务的一个实例将驻留在每个节点上。在这三个服务中,其中一个是前端服务,它接收来自外部客户端的请求,然后与另外两个服务(无法从集群外部寻址)通信以获取响应所需的信息。已编写外部客户端程序以通过 http 请求与前端服务进行通信。目前,这个外部客户端必须使用节点 ip 地址和端口将其请求发送到特定的服务实例。我在使用这种方法时遇到的问题是,如果外部客户端正在寻址的节点出现故障,客户端将不再能够寻址该服务,尽管前端服务仍在其他两个节点上 运行 .
我的问题是:有没有办法让外部客户端通过Service Fabric调用前端服务,而不用指定特定的节点进行通信?我希望如果接收请求的原始节点出现故障,这种通信方法将允许将请求路由到备用节点。
您应该在集群前面使用 load balancer 将流量分配给您的前端服务实例。如果节点不响应用户请求,则应将负载均衡器配置为将节点从负载均衡器的轮换中移除。这有助于保护您的服务和用户免受中断。
如果您的用户在受信任的边界内(例如,Intranet 用户),那么负载均衡器的替代方案将要求客户端应用程序首先执行 service address look-up with Service Fabric's naming service,这将为您提供一个端点列表每个可用的无状态服务实例。同样,您真的不想将它暴露给不受信任的用户,因为他们很容易滥用它或使它过载。如果您这样做,您将依赖您的客户端应用程序通过选择一个随机实例进行连接来提供负载平衡。但实际上你应该做的是获得一个负载平衡器。