文章
作業中は、本番環境にデプロイされた consul クラスタが外部サービスを安全かつ安定的に提供できること、およびシステム障害が発生した場合でも迅速に復旧できることを確認する必要があります。ここでは、バックアップとリストアの操作と KV のインポートとエクスポートの操作について説明します。
設定ファイル、サーバーステータスのバックアップと復元
バックアップする必要があるデータには、主に 2 つのタイプがあります: consul 関連の設定ファイルと consul サーバーのステータスです。バックアップするには、次のスクリプトを使用するだけです。
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.gz
最後に、生成されたデータはconsul_state_xxx.snap
適切に保存するために他のサーバーにコピーされます。
復元も比較的簡単で、次のスクリプトを使用するだけです。
# 还原配置文件
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 に保存されているデータをインポートおよびエクスポートするコマンドを直接提供します。
$ 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 値の 1 つであることがわかります。ここで、キーはキーと値のペアの名前、値はキーと値のペアの Value の Base64 エンコードです。元の値はコマンドを使用して確認できますbase64 -d
。エンコーディング:
$ echo 'eyJ2ZXJzaW9uX3RpbWVzdGFtcCI6IC0xfQ==' | base64 -d
{"version_timestamp": -1}
インポートはさらに簡単です。
consul kv import --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 @consul_kv_20180521150322.json
以上................................................. ...................................................................... ……終わりに花を散らす