启动
- agent可以运行在server或者client模式
consul agent -dev -server -bootstrap-expect 1 -data-dir /Users/mengfanxiao/Documents/third_software/spring-cloud/consul/data -node=node1
- 查看成员
consul members
- 创建服务
mkdir -p /Users/mengfanxiao/Documents/third_software/spring-cloud/consul/bin/consul.d
1⃣️ 创建一个web服务
echo '{"service": {"name": "web", "tags": ["rails"], "port": 801}}' >/Users/mengfanxiao/Documents/third_software/spring-cloud/consul/bin/consul.d/web.json
2⃣️ 创建一个service2服务
echo '{"service": {"name": "service2", "tags": ["rails"], "port": 802}}' >/Users/mengfanxiao/Documents/third_software/spring-cloud/consul/bin/consul.d/service2.json
- 先关闭之前的代理
- 启动代理
consul agent -dev -config-dir /Users/mengfanxiao/Documents/third_software/spring-cloud/consul/bin/consul.d/
- 通过DNS查询服务
服务的DNS名称是 NAME.service.consul 服务名称为service2、web
1⃣️ Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具
2⃣️
dig @127.0.0.1 -p 8600 service2.service.consul
- Http查询
curl http://localhost:8500/v1/catalog/service/service2
- 查询健康
curl 'http://localhost:8500/v1/health/service/service2?passing'
Consul Web界面
- 加入 -ui 参数, 启动自有主机的界面
consul agent -dev -ui -config-dir /Users/mengfanxiao/Documents/third_software/spring-cloud/consul/bin/consul.d/
- 在浏览器访问 http://localhost:8500/ui
Docker consul安装
consul 服务发现 集群 docker 版
下载镜像
docker pull consul
consul 服务端
- 服务端node1
docker run -d --name node1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -node=node1 -bootstrap-expect=2
- 查看node1的ip
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
- 服务端node2
docker run -d --name node2 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -node=node2 -join $JOIN_IP
- 服务端node3
docker run -d --name node3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -node=node3 -join $JOIN_IP
consul客户端
- 客户端node4
docker run -d --name node4 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -node=node4 -join $JOIN_IP
- 客户端node11 带ui
docker run -d --name node11 -p 8400:8400 -p 8500:8500 -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -ui -node=node11 -client=0.0.0.0 -join $JOIN_IP
- 上述操作的执行情况
- 把节点加入集群
在创建docker容器时忘记加入-join $JOIN_IP这个参数了,那么就可以用以下方法加入集群
1⃣️
docker exec node20 consul join $JOIN_IPnode20 要改为 你需要加的那个容器节点名字
2⃣️ 或者进入该容器内部执行
consul join $JOIN_IP
- 查看节点
docker exec node1 consul members
参考文献
https://blog.csdn.net/fenglailea/article/details/79093848
https://blog.csdn.net/fenglailea/article/details/79098246
https://www.consul.io/docs/internals/architecture.html
原理介绍的比较详细的一篇文章













