docker-compose搭建consul集群环境
docker-compose.yaml
version: '2'
networks:
byfn:
services:
consul1:
image: consul
container_name: node1
command: agent -server -bootstrap-expect=3 -node=node1 -bind=0.0.0.0 - client=0.0.0.0 -datacenter=dc1
networks:
- byfn
consul2:
image: consul
container_name: node2
command: agent -server -retry-join=node1 -node=node2 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
depends_on:
- consul1
networks:
- byfn
consul3:
image: consul
container_name: node3
command: agent -server -retry-join=node1 -node=node3 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
depends_on:
- consul1
networks:
- byfn
consul4:
image: consul
container_name: node4
command: agent -retry-join=node1 -node=ndoe4 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1 -ui
ports:
- 8500:8500
depends_on:
- consul2
- consul3
networks:
- byfn
参数解析
-server : 定义agent运行在server模式
-bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直 等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 -node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-ui: 启动web界面
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-config-dir::配置文件目录,里面所有以.json结尾的文件都会被加载
-client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服 务,如果你要对外提供服务改成0.0.0.0
-join 192.168.110.121 : 启动时加入这个集群
-datacenter:数据中心名称,缺省值为dc1。
-enable-script-checks: 检查服务是否处于活动状态,类似开启心跳。
启动服务
docker-compose up
查看节点
docker exec -t node1 consul members
UI界面地址
http://localhost:8500
使用集群
//添加
docker exec -t node4 consul kv put foo "Hello foo"
docker exec -t node4 consul kv put foo/foo1 "Hello foo1"
docker exec -t node4 consul kv put foo/foo2 "Hello foo2"
docker exec -t node4 consul kv put foo/foo21 "Hello foo21"
//获取
docker exec -t node4 consul kv get foo
Hello foo
docker exec -t node4 consul kv get -detailed foo/foo1
CreateIndex 124
Flags 0
Key foo/foo1
LockIndex 0
ModifyIndex 124
Session -
Value Hello foo1
docker exec -t node4 consul kv get -keys -separator="" foo
foo
foo/foo1
foo/foo2
foo/foo2/foo21
docker exec -t node4 consul kv get not-a-real-key
Error! No key exists at: not-a-real-key