首页 > 其他分享 >consul 备份还原导入导出

consul 备份还原导入导出

时间:2023-10-03 10:05:00浏览次数:36  
标签:http -- consul token 导入 kv 备份 dir


正文


工作中要保证生产环境部署的consul的集群能够安全稳定地对外提供服务,即使出现系统故障也能快速恢复,这里将讲述部分的备份还原操作及KV的导入导出操作。

备份与还原  配置文件、服务器状态


需要备份的主要有两类数据: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.gzconsul_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数值中一项,其中key为键值对Key的名称,value为键值对Value的base64编码,使用base64 -d命令编码就可以看到原始的value值,如:

$ 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

OVER..................................................................................................完结撒花

如常备份恢复更新脚本


consul_backup.sh 

[root@bastion back_consul]# cat consul_backup.sh 
#!/bin/bash
# Author:laujian


ts=$(date +"%Y_%m_%d_%H_%M")

# 通过运行脚本添加参数 加consul 地址 token传进来
#consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
#http_addr='consul.hrfax.local'
http_addr='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
processName="consul_backup.sh"
processNum=`ps -ef | grep $processName | grep -v grep | wc -l`
#if [ $processName gt "3" ];then
#echo " $processName already existed!"
#exit 1
#fi

#status_dir=`pwd`/status_dir
kv_dir=`pwd`/kv_dir

#[ -d $status_dir ] || mkdir $status_dir
[ -d $kv_dir ] || mkdir $kv_dir


status_backup() {

`pwd`/consul snapshot save -token=${consul_token} -http-addr=${http_addr} $status_dir/consul_state_${ts}.snap

}

kv_backup() {

 `pwd`/consul kv export  -token=${consul_token} -http-addr=${http_addr} >  $kv_dir/consul_kv_${ts}_${http_addr}.json

}

kv_restore() {
 date=$1
 tar xPf $kv_dir/consul_kv_${date}.tar.gz -C /
 ls $kv_dir/consul_kv_${date}.json > /dev/null
 if [ $? == 0 ];then

`pwd`/consul kv import  -token=${consul_token} -http-addr=${http_addr} @$kv_dir/consul_kv_${date}.json

 fi

}

kv_backup

 update_consul.sh

#!/bin/bash
cd /data/deployment_mediums;git pull
sleep 5
consul_address='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
cd /data/deployment_mediums/$1
for yaml in `ls consul/*`;do
  consul_key=`cat $yaml  |head -1 |sed 's/#//g' |sed 's/ //g'`
  consul_data=`cat $yaml | grep -v $consul_key`
  curl --location --request PUT "http://${consul_address}/v1/kv/${consul_key}?dc=hrfax" --header "X-Consul-Token: ${consul_token}" --header "Content-Type: text/plain" --data "${consul_data}"
done


if [[ $? -eq 0 ]];then
        echo "更新consul成功"
fi
[root@bastion option-consul]# cat update_consul.sh 
#!/bin/bash
cd /data/deployment_mediums;git pull
sleep 5
consul_address='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
cd /data/deployment_mediums/$1
for yaml in `ls consul/*`;do
  consul_key=`cat $yaml  |head -1 |sed 's/#//g' |sed 's/ //g'`
  consul_data=`cat $yaml | grep -v $consul_key`
  curl --location --request PUT "http://${consul_address}/v1/kv/${consul_key}?dc=hrfax" --header "X-Consul-Token: ${consul_token}" --header "Content-Type: text/plain" --data "${consul_data}"
done


if [[ $? -eq 0 ]];then
        echo "更新consul成功"
fi

标签:http,--,consul,token,导入,kv,备份,dir
From: https://blog.51cto.com/u_14035463/7689626

相关文章

  • consul 概念 键值对操作命令
    传统配置文件的弊端静态化配置,例如env文件配置文件无法区分环境配置文件过于分散历史版本无法查看配置中心如何解决的呢?配置中心的思路是把项目中的配置参数全部放在一个集中的地方来管理,并提供一套标准的接口,当各个服务需要获取配置的时候就来拉取信息,当配置中心有更新的时候,也能......
  • Flutter/Dart第07天:Dart基础语法详解(库、导入和关键字)
    Dart官网文档:https://dart.dev/language/libraries重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。Dart中的库(Library)Dart语言对代码的复用下了不少功夫,如前面讲到的Mixin高级特性实......
  • 使用 Gradle:将项目代码导入 IntelliJ
    1.将项目导入IntelliJ打开IntelliJ,如果还打开了其他程序,请关闭它们,再次进入欢迎屏幕。这次,不选择“创建新项目”,而是选择导入项目(ImportProject)。点击导入项目(ImportProject)后,会弹出一个窗口,提示你从某个文件夹导入项目。转到保存ud282-master的文件......
  • mongodb 导入导出数据
    导入数据C:\mongodb\bin>mongoimport--dbchapterenglish--collectionuserTable--filec:\userTable.jsonC:\mongodb\bin>mongoimport--dbjunxin--collectionproduct--jsonArray/jsit/junxin/junxinData.json 导出数据C:\mongodb\bin>mongoexport-hlo......
  • Harbor的逻辑备份与学习
    Harbor的逻辑备份与学习背景一直想处理一下一个有网络冲突的Harbor镜像服务器但是因为网络层自己水平一直是不是非常自信加上Harbor容器使用的compose的玩法,自己不敢直接处理.所以想着至少能够备份一下Harbor仓库内的镜像.冷备方式不用说了,想着处理一下逻辑备份.......
  • aruba无线控制器配置和license备份
    备份配置备份系统导出备份到FTP导出license到FTP......
  • JAVA导入工程遇见Could not transfer artifact io.rest-assured:rest-assured:pom:4.2
    问题:用idea导入已有的工程,操作File->InvalidateCaches/Restart后,点击右上角的Run,报以下异常:“Couldnottransferartifactio.rest-assured:rest-assured:pom:4.2.0”如下图所示:解决办法:因为Maven目录配置的问题,打开File->NewProjectsSettings->SettingsforNewProjects......
  • 将虚机从vcenter导入到pve
     #改脚本用来将vmware虚机通过ovftool导出到pve宿主机,然后再将其导入pve,可以设置pve虚机名称、OS类型、添加网卡配置mac地址,修改磁盘scsi改为ide,如果虚机之前在vmware中是开机状态,则将其开机vms_path='/data1/scripts/vms.txt'vms_ovf_path='/mnt/pve/dir-116/tmp_ovfbak/'......
  • 备份
    name title details created_datelldxjw P7154&CF1778F&CF1276D&P8863 #P7154&CF1778F&CF1276D&P8863P7154题意有两个长度为\(N\)的数列\(s\)和\(t\)。对于每个\(s_i\)都尝试与\(t\)中的元素进行匹配,\(s_i\)与\(t_j\)能够匹配当且仅当\(s_i\let_i\)......
  • 导入mysql文件报错
    mysql报错:「ERR」1273-Unknowncollation:'utf8mb4_0900_ai_ci'专注数据库知识分享2022-09-2719:05甘肃#MySQL专栏#mysql导入sql文件报错:[ERR]1273-Unknowncollation:'utf8mb4_0900_ai_ci'大致原因:sql对应的mysql版本高于当前要导入的mysql库的版本,引发......