微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 Ocelot 的 Consul 集群不使用所有服务

如何解决带有 Ocelot 的 Consul 集群不使用所有服务

我有两台服务器,都运行 Ocelot API 网关,并且都有 Consul。 2 个 Consul 实例是集群的。我在每台服务器上配置 Ocelot 以引用其本地 Consul 以进行服务发现。在每台服务器上,我还有一些注册到本地 Consul 实例的 API。让我们称它们为 API A、B 和 C。

  1. 似乎每个服务器上的 Ocelot 只将请求路由到本地 Consul 实例中注册的服务。 Consul 是集群的,所以我希望在每个实例中注册的服务基本上是共享的,并且全部返回给 Ocelot 进行负载平衡,这意味着任一服务器上的 Ocelot 应该有 6 个 API(2 个“A”api,2 个“B”api和 2 个“C”) ' api)。当前配置意味着,如果任一 Consul 实例中的注册服务出现故障,我的系统将不会进行故障转移并开始出错。例如,如果第一个服务器上的 API 'A' 出现故障,则第一个 Ocelot 实例在需要向 API 'A' 发送请求时会出错。

  2. 我不明白 Consul 集群的好处。如果我的任何一个 Consul 实例出现故障,那么相应服务器的 API 网关 (Ocelot) 就会出现故障,并且发送到该服务器上的 Ocelot 的任何请求都会出错。通过将 Ocelot 指向作为集群一部分的 Consul 实例,我假设了一些内置的故障转移逻辑,这意味着如果 Consul 实例出现故障,系统将故障转移到集群内的另一个 Consul 实例。

所以我的两个问题是:为什么 Ocelot 不利用在属于集群的两个 Consul 实例中注册的所有 API?当 1 个 Consul 实例出现故障,并且有一个 Consul 集群时,为什么 Ocelot 没有检测到并开始引用同一集群的另一个 Consul 实例部分?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。