Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

备份和还原 Contrail 等

总结 了解如何备份和还原 Contrail 等数据库。

在 22.1 版中,Contrail 将其数据存储在 OpenShift 等主数据库中。在 22.1 版中备份和还原主要 etcd 数据库时,您以隐式方式备份和还原 Contrail 数据。

从 22.2 版开始,Contrail 将其数据存储在自己的 etcd 数据库中。使用本节中的过程备份和还原 Contrail 等数据库。

备份 22.2 版中的 Contrail Etcd 数据库

在 22.2 版中使用此示例过程备份 Contrail 等数据库。在 22.2 版中,您可以在 contrail-etcd Pod 中运行 etcdctl 命令。

  1. 获取 Contrail 等 Pod 列表。
    记下 contrail 等 Pod 名称和 IP 地址。在下一步中,您将参考这些名称和 IP 地址。
  2. 备份 etcd 数据库。
    1. 将 shell 放入 Contrail 等 Pod 之一。
      例如: 您希望进入 shell 的 etcd Pod 在哪里 contrail-etcd-xxx
    2. 备份 etcd 数据库。
      此示例将数据库保存到 /tmp/etcdbackup.db 其中 <etcd-pod-ip> 是 Pod 的 IP 地址等 <etcd-port> 正在侦听的端口(默认为 12379)。
  3. 将数据库复制到安全位置。
    例如: contrail-etcd-xxx备份数据库的 etcd Pod 在哪里。

备份 22.3 版中的 Contrail Etcd 数据库

在 22.3 版中使用此示例过程备份 Contrail 等数据库。在 22.3 版中,您可以在控制平面节点上运行 etcdctl 命令。

  1. 在所有控制平面节点上安装 etcdctl。
    1. 登录其中一个控制平面节点。
      例如:
    2. 下载等。此示例将下载到 /tmp 目录。
    3. 解开并将 etcd 可执行文件移动到路径中的目录中(例如 /usr/local/bin)。
    4. 检查您是否已安装等。
    5. 在所有控制平面节点上重复上述操作。
  2. 获取 Contrail 等 Pod 列表。
    记下 contrail-etcd Pod 名称、IP 地址及其上运行的节点。在接下来的几个步骤中,您需要这些信息。
  3. 将 etcd 证书和密钥文件从 Pod 复制到控制平面节点。
    在这一步中,我们在控制平面节点上运行 kubectl我们假设您在控制平面节点上的默认位置 ( ~/.kube/config) 上设置了 kubeconfig。
    1. 选择 Contrail-etcd Pod(例如,contrail-etcd-0)并登录托管该 Pod 的控制平面节点。
    2. 将证书和密钥文件从该 Contrail 等 Pod 复制到托管控制平面节点。
      在此示例中,我们要将证书和密钥文件从 contrail-etcd-0 Pod 复制到此节点上的本地文件。 这会将证书和密钥文件从 contrail-etcd-0 Pod 复制到此控制平面节点上当前目录中的 ca.crttls.crttls.key
    3. 对每个 Contrail 等 Pod 重复这一操作。
  4. 在一个控制平面节点上备份 etcd 数据库。您只需在一个节点上备份数据库。
    1. 重新登录到其中一个控制平面节点。
    2. 备份 etcd 数据库。
      此示例将数据库保存到此控制平面节点上的 /tmp/etcdbackup.db 其中 <etcd-pod-ip> 是此节点上 Pod 的 IP 地址,也是 <etcd-port> etcd 正在侦听的端口(默认为 12379)。
  5. 将数据库复制到安全位置。

还原 22.2 版中的 Contrail Etcd 数据库

使用 22.2 版中的此示例过程从快照还原 Contrail 等数据库。
  1. 将快照复制到所有 Contrail 等 Pod。
    对其他 Contrail 等 Pod 重复这一操作。
  2. 还原快照。
    1. 将 shell 放入 Contrail 等 Pod 之一。
      例如: 您希望进入 shell 的 etcd Pod 在哪里 contrail-etcd-xxx
    2. 还原 etcd 数据库。
      这会在 Pod 上创建一个 <contrail-etcd-xxx>.etcd 目录。 其中 <contrail-etcd-xxx>是您当前所在的 contrail-etcd Pod 的名称,也是 <contrail-etcd-xxx-ip>该 Pod 的 IP 地址。并 <contrail-etcd-yyy> <contrail-etcd-zzz>请参阅其他 contrail 等 Pod。
    3. 对其他 Contrail-etcd Pod 重复这一操作,用相应的 Contrail-etcd Pod 名称和 IP 地址替换--name --initial-advertise-peer-urls和值。
  3. 将保存的 etcd 数据从 contrail-etcd Pod 复制到各自的控制平面节点。
    1. SSH 到其中一个控制平面节点中。
    2. 将保存的 contrail-etcd-xxx.等从相应的 Contrail-etcd Pod 复制到节点。
      例如: 您登录的控制平面节点上的 contrail-etcd Pod 的名称在哪里 contrail-etcd-xxx
    3. 对其他控制平面节点重复上述操作。
  4. 停止 Contrail 等 Pod。
    这会将复本设置为 0,从而有效地阻止 Pod。
  5. 将 contrail 等数据替换为快照中的数据。
    1. SSH 到其中一个控制平面节点中。
    2. 替换数据。
      其中 contrail-etcd-xxx就是您登录的控制平面节点上 contrail-etcd Pod 的名称。
    3. 对其他控制平面节点重复上述操作。
  6. 启动 Contrail 等 Pod。
    这将副本设置为 3,从而有效地启动 Pod。
  7. 重新启动 Contrail 系统 apiserver 和控制器。
    删除所有 Contrail-k8s-apiserver 和 Contrail-k8s-controller Pod。 这些 Pod 将自动重新启动。
  8. 重新启动 vrouters。
    删除所有 contrail-vrouter-masters 和 contrail-vrouter-nodes Pod。 这些 Pod 将自动重新启动。
  9. 检查所有 Pod 是否都处于运行状态。

还原 22.3 版中的 Contrail Etcd 数据库

使用 22.3 版中的此示例过程从快照还原 Contrail 等数据库。
  1. 将要还原的快照复制到所有控制平面节点。
    以下步骤假定您已将所有控制平面节点上的快照复制到 /tmp/etcdbackup.db
  2. 还原快照。
    1. 登录其中一个控制平面节点。在此示例中,我们要登录托管 contrail-etcd-0 的控制平面节点。
    2. 将 etcd 数据库还原到此控制平面节点上的 contrail-etcd-0 Pod。
      这会在节点上创建一个 contrail-etcd-0.etcd 目录。 其中 --name=contrail-etcd-0 指定此命令将数据库还原到 contrail-etcd-0, --initial-cluster=... 列出群集中的所有 contrail-etcd 成员,并 --initial-advertise-peer-urls=... 引用 contrail-etcd-0 pod 侦听的 IP 地址和端口号。
    3. 对各自控制平面节点上的其他 contrail-etcd Pod 重复这一操作,用相应的 contrail-etcd Pod 名称和 IP 地址替换--name--initial-advertise-peer-urls和值。
  3. 停止 Contrail 等 Pod。
    这会将复本设置为 0,从而有效地阻止 Pod。
  4. 将 contrail 等数据替换为快照中的数据。
    1. SSH 到其中一个控制平面节点中。
    2. 替换数据。回想一下,快照存储在 contrail-etcd-etcd<xxx> 目录中
      其中 contrail-etcd-xxx就是您登录的控制平面节点上 contrail-etcd Pod 的名称。
    3. 对其他控制平面节点重复上述操作。
  5. 启动 Contrail 等 Pod。
    这将副本设置为 3,从而有效地启动 Pod。
  6. 重新启动 Contrail 系统 apiserver 和控制器。
    删除所有 Contrail-k8s-apiserver 和 Contrail-k8s-controller Pod。 这些 Pod 将自动重新启动。
  7. 重新启动 vrouters。
    删除所有 contrail-vrouter-masters 和 contrail-vrouter-nodes Pod。 这些 Pod 将自动重新启动。
  8. 检查所有 Pod 是否都处于运行状态。