云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站空间_sqlite创建数据库_试用

小七 141 0

领事和外部服务

HashiCorp consur是一个服务网格,用于微服务应用程序和基础设施的服务发现、运行时配置和服务分段。consur允许注册和发现基础设施的"内部"服务以及"外部"服务,如第三方SaaS和其他不可能直接运行consur代理的环境提供的服务。这篇博客文章解释了如何在consur中使用外部服务,以及如何使用Consul ESM(外部服务监视器)对这些服务启用运行状况检查。我们将涵盖:本主题关键术语表内部服务登记和健康检查外部服务注册和健康检查拉式与推式健康检查使用consur ESM监控外部服务的运行状况本文中的所有示例都使用consur代理(下载)版本1.2.1,在本地以-dev模式运行并启用consur-ui,并使用-enable脚本检查标志来允许一个简单的基于ping的健康检查。我们还提供了一个web节点名,而不是默认的hostname,以使示例更清楚。$consur agent-dev-enable脚本检查-node=web-ui在consur dev代理运行的情况下,本文中的示例使用curl与consur的httpapi以及consur的webui进行交互:8500。»本主题关键术语表代理:在consur集群的每个成员上运行很长时间的守护进程。代理可以在客户机或服务器模式下运行。节点:节点表示运行代理的"物理"计算机。这可能是裸机设备、虚拟机或容器。服务:服务是注册在consur目录中以供发现的应用程序或进程。服务可以是内部的(在您的数据中心内)或外部的(如RDS集群),并且可以选择与它们相关联的健康检查。Check:Check是本地运行的命令或操作,它返回它所附加到的对象的状态。检查可以附加到节点和服务。目录:目录是所有已注册节点、服务和检查的注册表。»内部服务登记和健康检查首先,我们来看看如何注册内部服务。在consur上下文中,内部服务是由节点(机器)提供的服务,在这些节点(机器)中可以直接运行consur代理。内部服务通过服务定义注册。服务定义可以由consur代理启动时加载的配置文件提供,也可以通过位于/agent/Service/register的本地httpapi端点提供。我们将使用以下配置注册一个内部web示例,web.json文件:{"id":"web1","name":"web","端口":80,"检查":{"check":"ping","args":ping","-c1","www.google.com"],"interval":"30秒","status":"通过"}}这个示例web服务将具有惟一的id web1,逻辑名称web,在端口80上运行,并且有一个运行状况检查。通过使用PUT请求调用HTTP API来注册示例web服务:$curl—请求PUT—数据@web.json文件本地主机:8500/v1/agent/service/register要验证示例web服务是否已注册,请查询/catalog/service/:服务端点:$卷曲本地主机:8500/v1/catalog/service/web[{"ID":"a2ebf70e-f912-54b5-2354-c65e2a2808de","Node":"web","Address":"127.0.0.1","Datacenter":"dc1","taggedaddress":{"lan":"127.0.0.1","wan":"127.0.0.1"},"NodeMeta":{"领事网段":""},"ServiceID":"web1","ServiceName":"web","服务地址":"","servicemata":{},"服务端口":80,"ServiceEnableTagOverride":错误,"CreateIndex":7,"修改索引":7}]向代理/服务/注册端点注册服务定义将本地节点注册为服务提供程序。节点上的本地consur代理负责运行为服务注册的任何运行状况检查,并相应地更新目录。在我们的示例web服务中,我们使用以下配置定义了一个运行状况检查:"检查":{"name":"ping检查","args":ping","-c1","www.google.com"],"interval":"30秒","status":"通过"}此健康检查验证我们的web服务是否可以通过ping连接到公共internet谷歌每隔30秒。对于实际的web服务,应该配置一个更有用的健康检查。consur提供几种健康检查,包括:脚本、HTTP、TCP、生存时间(TTL)、Docker和gPRC。要检查为向给定本地节点注册的服务配置的所有运行状况检查,请使用/agent/checks/endpoint:$卷曲本地主机:8500/v1/agent/checks{"服务:web1": {"Node":"web","CheckID":服务:web1","Name":"ping检查","Status":"通过","注释":"","输出":"PING"www.google.com(172.217.3.164):56个数据字节\n172.217.3.164中的64个字节:icmp_seq=0 ttl=52时间=21.902毫秒\n\n----统计---\n1个数据包已发送,1个数据包已接收,0.0%数据包丢失\n返回行程最小值/平均值/最大值/标准偏差=21.902/21.902/21.902/0.000毫秒\n","ServiceID":"web1","ServiceName":"web","服务标签":["轨道"],"定义":{},"CreateIndex":0,"修改索引":0}}可以使用/health/service/:service查询单个服务的运行状况,可以使用/health/node/:node查询节点。健康检查也可以在consur UI中查看:»外部服务注册和健康检查在consur的上下文中,外部服务是由节点提供的那些不能运行consur代理的服务。这些节点可能位于您的基础设施内部(例如大型机、虚拟设备或不受支持的平台)或其外部(例如SaaS平台)。因为根据定义,外部服务运行在没有consur代理运行的节点上,所以它们不能注册到本地代理。相反,它们必须使用/catalog/register端点直接向目录注册。此端点的对象上下文是节点,而不是/agent/service/register端点的服务。使用/catalog/register端点时,将注册整个节点。使用/agent/service/register端点(我们在上面的第一个示例中使用的端点)注册本地节点上下文中的各个服务。直接向目录注册的外部服务的配置与通过代理注册的内部服务的配置略有不同:节点和地址都是必需的,因为它们不能从本地节点管理器代理自动确定。服务和健康检查是分开定义的。如果提供的ServiceID与该节点上服务的ID匹配,则该检查将被视为服务级别的运行状况检查,而不是节点级别的运行状况检查。定义字段可以提供TCP或HTTP运行状况检查的详细信息。有关详细信息,请参阅运行状况检查。为了演示外部服务注册是如何工作的,考虑一下Google提供的一个外部搜索服务。我们使用以下配置注册此服务,外部.json:{"Node":"谷歌","地址":","NodeMeta":{"external node":"true","外部探测器":"true"},"服务":{"ID":"搜索1","Service":"搜索","端口":80},"支票":[{"Name":"http检查","status":"通过","定义":{"http":https://www.google.com","间隔":"30秒"}}]}这个配置定义了一个名为google的节点在搜索端口上提供一个搜索ID为1的搜索。它还定义了每30秒运行一次的HTTP类型的运行状况检查,并设置了通过检查的初始状态。一般来说,外部服务是通过专用的节点注册的,因此我们将继续使用consur dev代理(localhost)来继续我们的示例,就好像它运行在与运行内部web服务的节点(例如"web")不同的节点上(例如"外部服务")。此图显示了内部服务和外部服务如何向consur注册的差异:使用PUT请求注册外部服务:$curl—请求PUT—数据@外部.json本地主机:8500/v1/catalog/register是的与通过代理端点注册的内部服务一样,我们可以通过查询/catalog/service/:service endpoint来验证外部服务的注册:$卷曲本地主机:8500/v1/catalog/service/search[{"ID":"","Node":"谷歌","地址":","Datacenter":"dc1","TaggedAddresses":空,"NodeMeta":{"external node":"true","外部探测器":"true"},"ServiceID":"search1","ServiceName":"搜索","服务标签":[],"服务地址":"","servicemata":{},"服务端口":80,"ServiceEnableTagOverride":错误,"CreateIndex":246,"修改索引":246}]在我们的内部web服务示例中,我们通过查询本地代理端点/代理/检查来验证健康检查是否处于活动状态。如果在添加外部服务后再次查询此项,则不会看到列出的运行状况检查,因为它是向服务目录而不是本地代理注册的。相反,我们需要查询目录级端点,例如/health/service/:service、/health/node/:node、/health/state/:state。我们还可以在consur UI中查看服务及其健康检查:从上面可以看出,目录中有一个用于此健康检查的条目。但是,由于此节点和服务是直接在目录中注册的,因此尚未设置实际的运行状况检查,因此不会监视节点的运行状况。以证明直接在目录中登记的健康检查与通过当地年龄进行的健康检查之间的差异