Detail Matter, 虽然简单,但却重要!
议题: 如何备份配置文件
在配置中心盛行的情况下,配置每次修改,都会有历史记录(比如etcd/consul等等)。这种系统维护起来当然是非常轻便了。
大量的系统采用本地的配置文件。如何最记录每次的变更呢?
最简单有效的方式,就是文件名绝对路径+日期,备份到特定的磁盘。
可以参照: 备份命令脚本,Pros: 逻辑绝对的简单清晰,Cons:服务器放上这个脚本,洁癖症有点难受。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| mybackup() { src_file=${1?"What files to backup"}
if [ -n "$BAK_ROOT_DIR" ]; then bak_root_dir="$BAK_ROOT_DIR" else bak_root_dir="/data/backup" fi
parent_dir=$(dirname "$src_file") short_fname=$(basename "$src_file") date="$(date +'%Y%m%d.%H%M%S')" bak_dir="${bak_root_dir}$parent_dir" if [ -f "$src_file" ]; then mkdir -p "$bak_dir" echo "cp $src_file ${bak_dir}/${short_fname}-${date}" cp "$src_file" "${bak_dir}/${short_fname}-${date}" elif [ -d "$src_file" ]; then mkdir -p "$bak_dir-${short_fname}-${date}" echo "cp -r $src_file $bak_dir-${short_fname}-${date}" cp -r "$src_file" "$bak_dir-${short_fname}-${date}" else echo "Error: $src_file doesn't exist" exit 1 fi }
|
更特殊的场景
Q:n台nginx,作为负载节点,使用相同的配置文件。如何做到有效的更改,且保证完全的一致呢?
A: 杜绝手工修改产生差异行等情况。通过ansible playbook,统一修改。或修改一处,推送到所有节点,再reload nginx。
Q: 配置文件之备份
A: 首先先思考,这个问题是不是驳论🤔。针对存在文件上的配置文件,如果生产服务器,本来存储都是高可用,那么剩下的最大的风险就是人为失误。于是基于墨菲定律,磁盘定时快照是必不可少的咯。
2021年1月17日 上午10:26:14 补充,在分布式以及容器化的各种场景下,配置文件的维护,更多应该统一从运维平台进行,统一的修改。毕竟运维,不就是可控以及管理嘛。