consul備份還原導入導出


工作中要保證生產環境部署的consul的集群能夠安全穩定地對外提供服務,即使出現系統故障也能快速恢復,這里將講述部分的備份還原操作及KV的導入導出操作。

備份與還原

需要備份的主要有兩類數據:consul相關的配置文件、consul的服務器狀態,采用下面的腳本備份就可以了:

1
2
3
4
5
6
7
8
9
10
ts=$(date +%Y%m%d%H%M%S)
 
# 備份配置文件
tar -czpf consul_config_ $ts.tar.gz /etc/consul/config.json /etc/consul/consul.d
 
# 備份consul的服務器狀態,注意由於該consul開啟了ACL,執行consul snapshot save時必須帶Management Token,關於consul ACL token的說明見上一篇"consul安全加固"
consul snapshot save --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 consul_state_ $ts.snap
 
# 查看一下生成的consul服務器狀態文件
consul snapshot inspect consul_state_ $ts.snap

最后將生成的consul_config_xxx.tar.gzconsul_state_xxx.snap拷貝到其它服務器妥善存儲。

還原也比較簡單,采用下面的腳本就可以了:

1
2
3
4
5
# 還原配置文件
tar -xzpf consul_config_20180521145032.tar.gz -C /
 
# 還原consul服務器狀態
consul snapshot restore --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 consul_state_20180521145032.snap

KV存儲的導入導出

consul直接提供命令對KV里存儲的數據進行導入導出,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ ts=$(date +%Y%m%d%H%M%S)
 
# 導出所有kv鍵值對,注意最后一個參數是導出鍵值對的前綴,為空字符串說明要導出所有
$ consul kv export --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 '' > consul_kv_$ts.json
 
# 查看下導出的json文件格式
$ cat consul_kv_ $ts.json
[
{
"key": "xxxxxx",
"flags": 0,
"value": "yyyyyy"
},
{
"key": "xxxxxx2",
"flags": 0,
"value": "eyJ2ZXJzaW9uX3RpbWVzdGFtcCI6IC0xfQ=="
},
]

發現是每個鍵值對都是json數值中一項,其中key為鍵值對Key的名稱,value為鍵值對Value的base64編碼,使用base64 -d命令編碼就可以看到原始的value值,如:

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

導入就更簡單了:

1
consul kv import --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 @consul_kv_20180521150322.json

OVER

參考

  1. https://www.consul.io/docs/commands/snapshot.html
  2. https://www.consul.io/docs/commands/kv/import.html
  3. https://www.consul.io/docs/commands/kv/export.html


免責聲明!

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



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