5.3.2. 创建节点主机备份
创建节点主机的备份与备份 master 主机的用例不同。由于 master 主机包含许多重要文件,因此强烈建议创建备份。但是,节点的性质是,在故障切换时,任何特殊操作都会在节点上复制,它们通常不包含运行环境所需的数据。如果节点的备份包含运行环境所需的一些内容,则建议使用创建备份。
备份过程会在基础架构进行任何更改之前执行,如系统更新、升级或任何其他显著的修改。备份应定期执行,确保在出现故障时最新的数据可用。
OpenShift Container Platform 文件
节点实例以 pod 的形式运行应用程序,这些 pod 基于容器。/etc/origin/
和 /etc/origin/node
目录包括了重要文件,例如:
- 节点服务的配置
- 安装生成的证书
- 与云供应商相关的配置
-
密钥和其他身份验证文件,如
dnsmasq
配置
可以自定义 OpenShift Container Platform 服务来提高日志级别、使用代理等,并且配置文件存储在 /etc/sysconfig
目录中。
流程
创建节点配置文件的备份:
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR}/etc/sysconfig $ sudo cp -aR /etc/origin ${MYBACKUPDIR}/etc $ sudo cp -aR /etc/sysconfig/atomic-openshift-node ${MYBACKUPDIR}/etc/sysconfig/
OpenShift Container Platform 使用在规划备份策略时必须考虑的特定文件,包括:
File
描述
/etc/cni/*
容器网络接口配置(如果使用)
/etc/sysconfig/iptables
存储
iptables
规则的地方/etc/sysconfig/docker-storage-setup
container-storage-setup
命令的输入文件/etc/sysconfig/docker
docker
配置文件/etc/sysconfig/docker-network
docker
网络配置(如 MTU)/etc/sysconfig/docker-storage
docker
存储配置(由container-storage-setup
生成)/etc/dnsmasq.conf
dnsmasq
的主要配置文件/etc/dnsmasq.d/*
不同的
dnsmasq
配置文件/etc/sysconfig/flanneld
flannel
配置文件(如果使用)/etc/pki/ca-trust/source/anchors/
添加到系统的证书(例如,外部 registry)
创建这些文件:
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR}/etc/sysconfig $ sudo mkdir -p ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors $ sudo cp -aR /etc/sysconfig/{iptables,docker-*,flanneld} \ ${MYBACKUPDIR}/etc/sysconfig/ $ sudo cp -aR /etc/dnsmasq* /etc/cni ${MYBACKUPDIR}/etc/ $ sudo cp -aR /etc/pki/ca-trust/source/anchors/* \ ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/
如果意外删除软件包,或者应该恢复
rpm
软件包中包含的文件,系统中安装的rhel
软件包列表很有用。注意如果使用 Red Hat Satellite 功能(如内容视图或事实存储),请提供正确机制来重新安装缺少的软件包和系统中安装的软件包的历史数据。
要创建系统中当前
rhel
软件包的列表:$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo mkdir -p ${MYBACKUPDIR} $ rpm -qa | sort | sudo tee $MYBACKUPDIR/packages.txt
备份目录中现在应存在以下文件:
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo find ${MYBACKUPDIR} -mindepth 1 -type f -printf '%P\n' etc/sysconfig/atomic-openshift-node etc/sysconfig/flanneld etc/sysconfig/iptables etc/sysconfig/docker-network etc/sysconfig/docker-storage etc/sysconfig/docker-storage-setup etc/sysconfig/docker-storage-setup.rpmnew etc/origin/node/system:node:app-node-0.example.com.crt etc/origin/node/system:node:app-node-0.example.com.key etc/origin/node/ca.crt etc/origin/node/system:node:app-node-0.example.com.kubeconfig etc/origin/node/server.crt etc/origin/node/server.key etc/origin/node/node-dnsmasq.conf etc/origin/node/resolv.conf etc/origin/node/node-config.yaml etc/origin/node/flannel.etcd-client.key etc/origin/node/flannel.etcd-client.csr etc/origin/node/flannel.etcd-client.crt etc/origin/node/flannel.etcd-ca.crt etc/origin/cloudprovider/openstack.conf etc/pki/ca-trust/source/anchors/openshift-ca.crt etc/pki/ca-trust/source/anchors/registry-ca.crt etc/dnsmasq.conf etc/dnsmasq.d/origin-dns.conf etc/dnsmasq.d/origin-upstream-dns.conf etc/dnsmasq.d/node-dnsmasq.conf packages.txt
如果需要,可以压缩文件以节省空间:
$ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) $ sudo tar -zcvf /backup/$(hostname)-$(date +%Y%m%d).tar.gz $MYBACKUPDIR $ sudo rm -Rf ${MYBACKUPDIR}
要从头开始创建任何这些文件,openshift-ansible-contrib
存储库包含 backup_master_node.sh
脚本,它将执行前面的步骤。该脚本在运行 脚本的主机上创建一个目录,并复制前面提到的所有文件。
红帽不支持 openshift-ansible-contrib
脚本,但可以在架构团队执行测试以确保代码运行正常且安全时作为参考。
可以使用以下方法在每个 master 主机上执行该脚本:
$ mkdir ~/git $ cd ~/git $ git clone https://github.com/openshift/openshift-ansible-contrib.git $ cd openshift-ansible-contrib/reference-architecture/day2ops/scripts $ ./backup_master_node.sh -h