领事:有多少服务代理商

时间:2015-03-20 14:27:51

标签: consul

我正在与Docker和Consul玩一点,我有一些关于代理服务映射的问题,特别是在docker环境中。假设我有一个服务名称“myGreatService”是简单的web nodejs helloworld应用程序,封装了名为“myGreatServiceImage”的docker镜像。从Consul文档中我了解到,当您注册服务(通过HTTP或服务定义文件)时,服务即将“连接”到代理/ consul节点(可以通过/ v1 / catalog / service /检索有线节点) 。因此,如果consul节点关闭(或节点运行状况检查确定它已关闭),那么“连接​​”到该消耗节点的所有服务将自动标记为关闭。我对吗 ?

如果我通过docker在一个主机上多次运行我的GreatServiceImage映像(由于“myGreatService”服务的多个实例而产生) 我应该经营多少代理商? 每个主机管理该主机上的所有容器(所有服务实例)?或者可能是每个容器(服务实例)的单独代理?

1 个答案:

答案 0 :(得分:5)

如果服务的运行状况检查失败,那么该服务将被标记为关闭,如果您对该服务执行DNS查询,则不会显示该服务

dig @localhost -p 8500 apache.service.consul

如果你打电话给api,你会看到该服务仍然列出。这是因为服务未被删除,只是标记为关闭。如果您要进行api调用以检查该服务的运行状况,它将显示为已关闭。

curl localhost/v1/catalog/service/apache
curl localhost/v1/health/service/apache 

您可以将?传递标记添加到最后一次调用以仅接收健康服务。 (就像dns查询一样)

curl localhost/v1/health/service/apache?passing

如果主机上的consul代理失败,那么如果您向consul查询服务,则该主机上运行的所有服务都不会显示。 (通过dns查询或通过api)。

至于您应该运行的代理数量:每个主机运行一个consul代理。让您的服务通过当地领事代理的api进行注册。 (或者在配置文件中预配置所有服务,但我建议您将其设置为自动注册的动态过程)