2016-09-29 48 views
3

我期待到使用领事,并不能找出Consul defines as a 'service'(又名它是如何启动/传递什么样的信息给它的开始。)领事基础知识:什么是服务以及如何制作服务?

我有一个工作组,并已自定义编写init.d服务Ubuntu试图对它进行测试,但是当我将它们注册为Consul的服务时,init.d服务从不会被调用,也不会显示在Web UI中。通过

{ 
"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 "[email protected]" > /home/user/file1 
set > /home/user/file2 

我的最终目标是仅仅有领事启动自定义脚本给定节点上(没有Web界面),将Consul的服务定义中的信息传递给它(具体是ID和标签)。

我想我是理解一些错误的东西,并希望得到您提供的任何指导。

感谢您的阅读!

编辑:例如,它们显示lower on that page如何在多个端口上运行两个redis服务器。服务如何开始以及这些信息如何传递给他们?

编辑2:感谢回复,他们都帮助我更好地理解了这一点! (所以我刚刚接受了第一个。)

回答

2

领事与“起步服务”无关,它只提供有关其他服务的服务信息。

编辑:例如,它们表明页面你怎么可以运行在多个端口的两个 Redis的服务器上较低。服务如何开始 以及这些信息如何传递给他们?

在本示例中,两个Redis服务器都是在Consul之外启动的。例如,我们正在使用supervisord FOT这或通过init.d下开始的Redis作为服务

那么,它是如何工作:

  1. 你自己(的init.d或supervisord开始Redis的两个实例,没有按没关系)。
  2. 在领事注册这个实例作为服务。您可以通过consul dir中的配置json文件来完成。或者,否则,您可以通过API注册它(例如,在本例中,使用curl从终端进行注册)。你自己的服务,你可以注册自己,顺便说一句。
2

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

的想法是以下几点:

  • 东西寄存器定义为(名称,地址,节点,健康检查)领事服务条目
  • 那么这个服务项目都可以通过该名称在领事的被发现DNS,或通过REST API
  • 服务可用性和状态通过运行状况检查控制

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