搜索

第 4 章 创建环境范围内的备份

download PDF

创建环境范围内的备份涉及复制重要数据,以便在崩溃实例或损坏数据时帮助恢复数据。创建备份后,可以恢复到相关组件的新安装的版本。

在 OpenShift Container Platform 中,您可以在集群级别进行备份,并将状态保存到独立的存储中。环境备份的完整状态包括:

  • 集群数据文件
  • 每个 master 上的 etcd 数据
  • API 对象
  • registry 存储
  • 卷存储

定期执行备份以防止数据丢失。

重要

以下流程描述了备份应用程序和 OpenShift Container Platform 集群的通用方法。它不能考虑自定义要求。使用以下步骤作为集群的完整备份和恢复流程的基础。您必须采取所有必要的措施以防止数据丢失。

无法保证备份和恢复。您负责备份自己的数据。

4.1. 创建 master 主机备份

在对 OpenShift Container Platform 基础架构进行任何更改之前执行此备份过程,如系统更新、升级或其他显著修改。定期备份数据,以确保在出错时有最新的数据可用。

OpenShift Container Platform 文件

主(master)实例运行重要的服务,如 API 和控制器。/etc/origin/master 目录存储很多重要文件:

  • 配置、API、控制器、服务等
  • 安装生成的证书
  • 所有与云供应商相关的配置
  • 密钥及其他身份验证文件,例如,如果使用 htpasswd 时为 htpasswd
  • 更多

您可以自定义 OpenShift Container Platform 服务,如增加日志级别或使用代理。配置文件存储在 /etc/sysconfig 目录中。

因为 master 也是节点,所以备份整个 /etc/origin 目录。

流程

重要

您必须在每个 master 节点上执行以下步骤。

  1. 创建 pod 定义备份(在)。.
  2. 创建 master 主机配置文件的备份:

    $ 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/ ${MYBACKUPDIR}/etc/sysconfig/
    注意

    master 配置文件为/etc/origin/master/master-config.yaml。

    警告

    /etc/origin/master/ca.serial.txt 文件仅对 Ansible 主机清单中列出的第一个 master 生成。如果您弃用了第一个 master 主机,请在进程前将 /etc/origin/master/ca.serial.txt 文件复制到其余 master 主机中。

    重要

    在运行多个 master 的 OpenShift Container Platform 3.11 集群中,其中一个 master 节点在 /etc/origin/master/etc/etcd/ca/etc/etcd/generated_certs 中包括额外的 CA 证书。这些是应用程序节点和 etcd 节点扩展操作所必需的,且需要在另一个 master 节点上恢复,它应该永久不可用。这些目录默认包含在此处的备份过程中。

  3. 在规划备份时需要考虑的其他重要文件包括:

    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/
  4. 如果软件包被意外删除,或者您需要重新整合 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
  5. 如果您使用前面的步骤,则备份目录中存在以下文件:

    $ MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d)
    $ sudo find ${MYBACKUPDIR} -mindepth 1 -type f -printf '%P\n'
    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/master/ca.crt
    etc/origin/master/ca.key
    etc/origin/master/ca.serial.txt
    etc/origin/master/ca-bundle.crt
    etc/origin/master/master.proxy-client.crt
    etc/origin/master/master.proxy-client.key
    etc/origin/master/service-signer.crt
    etc/origin/master/service-signer.key
    etc/origin/master/serviceaccounts.private.key
    etc/origin/master/serviceaccounts.public.key
    etc/origin/master/openshift-master.crt
    etc/origin/master/openshift-master.key
    etc/origin/master/openshift-master.kubeconfig
    etc/origin/master/master.server.crt
    etc/origin/master/master.server.key
    etc/origin/master/master.kubelet-client.crt
    etc/origin/master/master.kubelet-client.key
    etc/origin/master/admin.crt
    etc/origin/master/admin.key
    etc/origin/master/admin.kubeconfig
    etc/origin/master/etcd.server.crt
    etc/origin/master/etcd.server.key
    etc/origin/master/master.etcd-client.key
    etc/origin/master/master.etcd-client.csr
    etc/origin/master/master.etcd-client.crt
    etc/origin/master/master.etcd-ca.crt
    etc/origin/master/policy.json
    etc/origin/master/scheduler.json
    etc/origin/master/htpasswd
    etc/origin/master/session-secrets.yaml
    etc/origin/master/openshift-router.crt
    etc/origin/master/openshift-router.key
    etc/origin/master/registry.crt
    etc/origin/master/registry.key
    etc/origin/master/master-config.yaml
    etc/origin/generated-configs/master-master-1.example.com/master.server.crt
    ...[OUTPUT OMITTED]...
    etc/origin/cloudprovider/openstack.conf
    etc/origin/node/system:node:master-0.example.com.crt
    etc/origin/node/system:node:master-0.example.com.key
    etc/origin/node/ca.crt
    etc/origin/node/system:node:master-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/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.