张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 店铺 关于

Consul 注册服务和健康检查(http检查) - Part.5

2018-12-27 作者: 张子阳 分类: 分布式系统

在前面两篇文章中,我们对控制台类型的程序进行了服务注册,并以script脚本的方式进行了健康检查。这篇文章将介绍如何对Web类型的服务进行服务注册,并进行健康检查。

本文依然是采用配置文件的方式进行服务注册,以Http API进行注册的方式会在以后的文章中说明。

注册服务

首先要明白的几点是:

比如说,我们现在通过我本机工作电脑(mac_work)注册一个服务,这个服务就是这个tracefact.net站点,显然这个站点所在的服务器没有安装consul,修改config下的services.json文件:

{
    "services":[
        {
            "id": "tracefact.net",
            "name": "tracefact.net",
            "tags": [ "my blog"],
            "port": 80,
            "enable_tag_override": false
        }
    ]
}

执行consul reload重新加载配置后,可以看到mac_work上注册一个tracefact.net服务,而这个tracefact.net本身运行在远程服务器上。

mac_work上注册的服务

编写健康检查

编写http类型的健康检查相对更简单一些,因为不像script检查需要编写shell或者python脚本。在config下添加check_tracefact.json文件:

{
  "check": {
    "id": "check_tracefact",
    "name": "check_tracefact",
    "notes": "检查tracefact.net站点是否可以正常运行",
    "http": "http://www.tracefact.net/about.html",
    "tls_skip_verify": false,
    "method": "GET",
    "header": {"x-foo":["bar", "baz"]},
    "interval": "20s",
    "timeout": "2s"
  }
}

对于http检查来说,根据Http Status来验证健康检查的状态:

接下来再次运行 consul reload 重新加载配置,然后进入Web UI,可以看到类似下面的界面:

tracefact.net 健康检查

Output一栏输出了页面请求的Http Body,显然这个输出太长了,更好的办法是为Web Server加一个专用于健康检查的URL地址,仅返回OK。

至此,我们就完成了Web的服务注册和健康检查。接下来,就是通过Consul提供的Http Api来获取可用服务、查看节点状态。

感谢阅读,希望这篇文章能给你带来帮助!