3個server節點:node一、node二、node3
1個client節點:node4node
拉鏡像docker
docker pull consul
啓動節點shell
docker run -d \ -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ --name=node1 \ consul agent -server \ -bind=172.17.0.3 \ -bootstrap-expect=3 \ -node=node1 docker run -d \ -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ --name=node2 \ consul agent -server \ -bind=172.17.0.4 \ -join=172.17.0.3 \ -node=node2 docker run -d \ -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' \ --name=node3 \ consul agent -server \ -bind=172.17.0.5 \ -join=172.17.0.3 \ -node=node3 \ -client=172.17.0.5 docker run -d \ -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \ --name=node4 \ consul agent \ -bind=172.17.0.6 \ -retry-join=172.17.0.3 \ -node=node4
查看集羣節點狀態json
docker exec -t node1 consul members
模擬節點異常bootstrap
docker stop node1
查看leader節點/節點狀態
須要經過 -client 指定ip ?app
curl http://172.17.0.5:8500/v1/status/leader curl http://172.17.0.5:8500/v1/catalog/nodes
註冊服務
服務名:userService
Address:127.100.0.1:8888,服務發現返回的地址curl
curl http://172.17.0.5:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{ "ID": "userServiceId", "Name": "userService", "Tags": [ "primary", "v1" ], "Address": "127.100.0.1", "Port": 8888, "EnableTagOverride": false, "Check": { "DeregisterCriticalServiceAfter": "90m", "HTTP": "http://www.baidu.com", "Interval": "1s" } }'
發現服務ide
curl http://172.17.0.5:8500/v1/catalog/service/userService
KV存儲url
docker exec -t node1 consul kv put /user/info 1 docker exec -t node4 consul kv get user/info docker exec -t node1 consul kv get --detailed user/info
參考spa