consul简介
- 用于实现分布式系统的服务发现与配置。Consul 的使用“一站式”的方式,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案。consul官网
consul的服务注册
- 测试consul连接:当我们安装(网上很多教程随便找一个就行了)好了consul之后,我们可以先在centos中进入consul容器中,然后在容器中ping 通你的本地主机ip。这样就代表你的consul可以连上你的本地服务(反之应该安装配置的时候ip和port配置出错了)。这些没问题的话,我们可以使用官方的API文档中的例子来简单的测试一下功能。
//进入consul容器
docker exec -it 你的consul容器id sh(也有可能是bash看你是那种linux)
//ping 通之后退出容器
exit
- 服务注册:这里我们使用postman来注册一个服务,我们先在浏览器输入ip:8500
(ip是你安装consul的系统的IP地址,centos下安装的就是centos的ip,同理windows),然后你就会进入到consul的页面里面会有一个consul名字的服务已经注册。这时候我们打开postman(直接百度下载就行),然后新建一个请求,把请求方式改为PUT,然后输入http://192.168.0.106:8500/v1/agent/service/register这个URL,这是官方文档提供的可以自行查看,然后配置Headers信息(key=Content-Type,value=application/json),然后配置我们的body信息(下面代码块中),配置完成之后,直接点击send,你再去consul页面,就会发现多了一个你刚刚注册的服务信息。
//配置body中的row信息
{
"Name":"服务名",
"ID":"服务id",
"Tags":["标签信息1","标签信息2","标签信息3"],
"Address":"127.0.0.1",//你想输入什么ip都可以(因为现在没有健康检查)
"Port":8021//随便
}
- 服务删除:直接换个url,加上服务名称然后带点击send(也是PUT方式)就可以了。
http://192.168.0.106:8500/v1/agent/service/deregister/服务Name
服务的健康检查
- 这里我们使用go语言来实现consul的健康检查(consul是用go语言开发的,所以API的支持相对好点)。
- 注册检查:首先我们需要导入go语言内置支持的consul包github.com/hashicorp/consul/api,然后我们就可以对consul进行操作。
func Register(address string, port int, name string, tags [