5.3.2. 创建节点主机备份


创建节点主机的备份与备份 master 主机的用例不同。由于 master 主机包含许多重要文件,因此强烈建议创建备份。但是,节点的性质是,在故障切换时,任何特殊操作都会在节点上复制,它们通常不包含运行环境所需的数据。如果节点的备份包含运行环境所需的一些内容,则建议使用创建备份。

备份过程会在基础架构进行任何更改之前执行,如系统更新、升级或任何其他显著的修改。备份应定期执行,确保在出现故障时最新的数据可用。

OpenShift Container Platform 文件

节点实例以 pod 的形式运行应用程序,这些 pod 基于容器。/etc/origin//etc/origin/node 目录包括了重要文件,例如:

  • 节点服务的配置
  • 安装生成的证书
  • 与云供应商相关的配置
  • 密钥和其他身份验证文件,如 dnsmasq 配置

可以自定义 OpenShift Container Platform 服务来提高日志级别、使用代理等,并且配置文件存储在 /etc/sysconfig 目录中。

流程
  1. 创建节点配置文件的备份:

    $ 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/
  2. 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/
  3. 如果意外删除软件包,或者应该恢复 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
  4. 备份目录中现在应存在以下文件:

    $ 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.