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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM