领事基础知识:什么是服务以及如何制作服务?

时间:2016-09-29 18:02:51

标签: consul

我正在研究使用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:感谢回复,他们都帮助我更好地理解了这一点! (所以我接受了第一个出现的那个。)

2 个答案:

答案 0 :(得分:2)

Consul与"启动服务"无关,它只提供有关其他服务的服务的信息。

  

编辑:例如,他们在该页面上显示如何运行两个   多个端口上的redis服务器。服务是如何启动的   以及如何将这些信息传递给他们?

在此示例中,两个Redis服务器都是在Consul之外启动的。例如,我们使用supervisord fot this或通过init.d启动Redis作为服务

那么,它是如何运作的:

  1. 您已经自己启动了两个Redis实例(init.d或supervisord,并不重要)。
  2. 将此实例注册为领事中的服务。你可以通过consul目录中的config json文件来完成。或者,否则您可以通过API注册它(例如,在这种情况下,使用curl从终端注册)。你自己的服务,你可以自己注册,顺便说一句。

答案 1 :(得分:2)

Consul的“服务”是一种架构模式。它允许您构建动态服务发现系统。这个概念不应该与其他服务概念(在init.d或其他任何其他操作系统中)混淆。 Consul的服务只是Consul服务目录中的虚拟实体。

这个想法如下:

  • Something在Consul中注册服务条目,定义为(名称,地址,节点,HealthCheck)
  • 然后,可以通过Consul的DNS中的名称或通过REST API
  • 发现此服务条目
  • 通过运行运行状况检查来控制服务可用性和状态

作为分布式系统的开发人员,您负责注册,取消注册服务并提供有效的健康检查程序。