参考文献: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
02-14 02:39