docker consul 集羣

搭建

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

image.png

查看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

相關文章
相關標籤/搜索