参考文献:https://www.cnblogs.com/lonelyxmas/p/10880717.html
consul是提供服务发现、简单配置管理、分区部署的服务注册发现解决方案。
主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署
consul的实例叫agent
agent有两种运行模式:server和client
每个数据中心至少要有一个server,一般推荐3-5个server(避免单点故障)
client模式agent是一个轻量级进程,执行健康检查,转发查询请求到server。
服务service是注册到consul的外部应用,比如spring web server
以下为docker-compose.yaml文件
version: "3.0" services: consulserver: image: progrium/consul:latest hostname: consulserver ports: - "8300:8300" - "8400:8400" - "8500:8500" - "53" command: -server -ui-dir /ui -data-dir /tmp/consul --bootstrap-expect=3 consulserver1: image: progrium/consul:latest hostname: consulserver1 depends_on: - "consulserver" ports: - "8301:8300" - "8401:8400" - "8501:8500" - "53" command: -server -data-dir /tmp/consul -join consulserver consulserver2: image: progrium/consul:latest hostname: consulserver2 depends_on: - "consulserver" ports: - "8302:8300" - "8402:8400" - "8502:8500" - "53" command: -server -data-dir /tmp/consul -join consulserver
宿主机浏览器访问:http://localhost:8500 或者 http://localhost:8501 或者 http://localhost:8502
创建test.json文件,以脚本形式注册服务到consul:
test.json文件内容如下:
{ "ID": "test-service1", "Name": "test-service1", "Tags": [ "test", "v1" ], "Address": "127.0.0.1", "Port": 8000, "Meta": { "X-TAG": "testtag" }, "EnableTagOverride": false, "Check": { "DeregisterCriticalServiceAfter": "90m", "HTTP": "http://zhihu.com", "Interval": "10s" } }
通过 http 接口注册服务(端口可以是8500. 8501, 8502等能够正常访问consul的就行):
curl -X PUT --data @test.json http://localhost:8500/v1/agent/service/register