在Consul中,分为Server和Client两种节点,Server节点保存数据,Client节点负责健康检查以及转发数据到Server。
这里我们配置一个3个Server节点和1个Client节点的Consul集群。
这里我们如果为了数据的持久化、方便配置文件的修改可以选择volume挂载。这里只是做测试就不挂载文件了。
创建集群docker run -d --name=s1 -p 8500:8500 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui # --server=true server节点否则为client节点 # --bootstrap-expect=3 集群期望节点数,到达这个节点数才会选举leader # --client=0.0.0.0 web ui的监听地址,默认为127.0.0.1 ,现在为所有地址 # -ui 使用自带的ui docker run -d --name=s2 -p 8501:8500 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2 # 加入到172.17.0.2(s1)当中去,可以使用docker inspect s1查看s1的ip docker run -d --name=s3 -p 8502:8500 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2 docker run -d --name=c1 -p 8503:8500 consul agent --server=false --client=0.0.0.0 --join 172.17.0.2 # client节点
进入容器查看Consul是否建立成功
docker exec -it s1 /bin/sh consul members
在 127.0.0.1:8500中可以查看到我们刚刚部署到节点信息
Consul配置服务发现一般采用配置文件的方式:(也可以调用Consul提供的REST API)
我们把我们的配置文件services.json放在 /consul/config 下面即可
{
"services": [{
"id": "test",
"name": "test",
"tags": ["primary"],
"address": "服务的IP",
"port": 服务的端口(int类型),
"checks": [{
"http": "服务的ip+端口+路由 如:http://127.0.0.1:8080/ping",
"method": "GET",
"interval": "10s",
"timeout": "1s"
}]
}]
}
interval:访问的间隔时间
timeout:超时的时间
Consul服务发现更多配置可以查看:Consul服务发现配置详细内容
然后在127.0.0.1:8500就可以查看我们的配置信息了
之后怎么获取我们的服务呢?
直接通过HTTP的方式访问就行了
http://127.0.0.1:8500/v1/health/service/test
如果是POST、DELETE等其他REST的方式访问,对应修改配置文件即可。



