Docker在多台服务器部署consul集群

Docker在多台服务器部署consul集群

  • 规划与准备

    • 本次计划部署的consul集群有6个节点,3个server类型,3个client类型

       

       

节点IP
类型
端口
172.18.69.40
server1、client1
8500/8600、58500/58600
172.18.69.41
server2、client2
8500/8600、58500/58600
172.18.69.42
server3、client3
8500/8600、58500/58600
 
在第一台服务器中运行server作为leader
docker run -d --name consul-1 -h=172.18.69.40 --net=host -e CONSUL_BIND_INTERFACE=eth0 -v /data/consul/config:/config/file consul:1.9.5 agent -config-dir=/config/file -server=true -client=0.0.0.0 -bind=172.18.69.40 -ui -bootstrap-expect=2
 
接下来一台台加入集群
docker run -d -v /data/consul/config:/config/file --name consul-2 -h=172.18.69.41 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul:1.9.5 agent -config-dir=/config/file -server=true -client=0.0.0.0 -join=172.18.69.40 -ui
  接下来第二台加入集群
docker run -d -v /data/consul/config:/config/file --name consul-3 -h=172.18.69.42 --net=host -e CONSUL_BIND_INTERFACE=eth0 consul:1.9.5 agent -config-dir=/config/file -server=true -client=0.0.0.0 -join=172.18.69.40 -ui
 
  • 接下来三个client加入集群
docker run -d -v /data/consu-client-1/config:/config/file --name consul-client1 -h=client1 -p 58500:8500 -p 58600:8600 -p 58300:8300 -p 58301:8301 -p 58302:8302  -e CONSUL_BIND_INTERFACE=eth0 consul:1.9.5 agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=172.18.69.40 -ui

 

docker run -d -v /data/consu-client-2/config:/config/file --name consul-client2 -h=client2 -p 58500:8500 -p 58600:8600 -p 58300:8300 -p 58301:8301 -p 58302:8302  -e CONSUL_BIND_INTERFACE=eth0 consul:1.9.5 agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=172.18.69.40 -ui
 
docker run -d -v /data/consu-client-3/config:/config/file --name consul-client3 -h=client3 -p 58500:8500 -p 58600:8600 -p 58300:8300 -p 58301:8301 -p 58302:8302  -e CONSUL_BIND_INTERFACE=eth0 consul:1.9.5 agent -config-dir=/config/file -server=false -client=0.0.0.0 -join=172.18.69.40 -ui

 

查看状态

  • 查看投票状态
docker exec -t consul-1 consul operator raft list-peers
  • 查看集群成员
docker exec -t consul-1 consul members

 

KV存储的导入导出

 consul直接提供命令对KV里存储的数据进行导入导出,如下

$ ts=$(date +%Y%m%d%H%M%S)
# 导出所有kv键值对,注意最后一个参数是导出键值对的前缀,为空字符串说明要导出所有 $
docker exec -t consul-1 consul kv export --http-addr=http://127.0.0.1:8500 -token=“xxxx-xxxx-xxxx-xxxx-xxxxxx” > /config/file/consul_kv_$ts.json
# 查看下导出的json文件格式 
$
cat /config/file/consul_kv_$ts.json

发现是每个键值对都是json数值中一项,其中key为键值对Key的名称,value为键值对Value的base64编码,使用base64 -d命令编码就可以看到原始的value值,如:

$ echo 'eyJ2ZXJzaW9uX3RpbWVzdGFtcCI6IC0xfQ==' | base64 -d
{"version_timestamp": -1}

导入就更简单了:

docker exec -t consul-1 consul kv import --http-addr=http://ip:8500 -token="xxxx-xxxx-xxxx-xxxx-xxxxxx" @./consul_kv_20180521150322.json
cat consul-kv.json |
docker exec -t consul-1 consul kv import -http-addr=http://ip:8500 -token="xxxx-xxxx-xxxx-xxxx-xxxxxx" -

 

 

http://t.zoukankan.com/gudanshiyigerendekuanghuan-p-10603516.html

posted @ 2021-04-08 09:38  梦里花落知多少sl  阅读(926)  评论(0编辑  收藏  举报