我正在研究使用Consul,并且无法弄清楚Consul defines as a 'service'是什么(也就是它如何启动它/在启动时传递给它的信息。)
我有一个工作集群,并在Ubuntu中编写了自定义init.d
服务来尝试测试它,但是当我将它们作为服务注册到Consul时,init.d服务永远不会被调用,并且不会显示在网络用户界面中也是。
本地领事服务器配置:
{
"bootstrap": true,
"server": true,
"log_level": "DEBUG",
"enable_syslog": true,
"datacenter": "dc1",
"data_dir": "data",
"acl_datacenter": "dc1",
"acl_default_policy": "allow",
"encrypt": "secret",
"acl_master_token": "secret",
"ui": true
}
尝试和确定传递信息的超级简单脚本:
echo "$@" > /home/user/file1
set > /home/user/file2
我的最终目标是让Consul在给定节点(没有Web界面)上启动自定义脚本,将Consul服务定义中的信息传递给它(具体是ID和标签)。
我想我理解了一些错误的东西,并希望得到任何指导。
感谢阅读!
编辑:例如,他们会显示lower on that page如何在多个端口上运行两个redis服务器。如何启动服务以及如何将这些信息传递给他们?
编辑2:感谢回复,他们都帮助我更好地理解了这一点! (所以我接受了第一个出现的那个。)
答案 0 :(得分:2)
Consul与"启动服务"无关,它只提供有关其他服务的服务的信息。
编辑:例如,他们在该页面上显示如何运行两个 多个端口上的redis服务器。服务是如何启动的 以及如何将这些信息传递给他们?
在此示例中,两个Redis服务器都是在Consul之外启动的。例如,我们使用supervisord fot this或通过init.d启动Redis作为服务
那么,它是如何运作的:
答案 1 :(得分:2)
Consul的“服务”是一种架构模式。它允许您构建动态服务发现系统。这个概念不应该与其他服务概念(在init.d或其他任何其他操作系统中)混淆。 Consul的服务只是Consul服务目录中的虚拟实体。
这个想法如下:
作为分布式系统的开发人员,您负责注册,取消注册服务并提供有效的健康检查程序。