跳到主要内容

从 v0.15 或更早版本升级服务器到 ClearML Server

更新到 ClearML Server v1.2+

如果您要将 ClearML Server 升级到版本 1.2 或更高版本,您需要在执行下面的迁移说明后,迁移数据库内容以兼容新版本。

在 v0.16 中,Trains Server 的 Elasticsearch 子系统从版本 5.6 升级到版本 7.6。此更改需要迁移数据库内容,以适应不同版本之间索引结构的变化。

本页提供执行迁移过程的说明。如果您使用的是 Trains Server 0.15 或更早版本并正在升级到 ClearML Server,请遵循此过程。

迁移过程使用一个脚本,该脚本自动执行以下操作

  • 备份现有的 Trains Server Elasticsearch 数据。
  • 启动一对 Elasticsearch 5 和 Elasticsearch 7 迁移容器。
  • 使用迁移容器复制 Elasticsearch 索引。
  • 终止迁移容器。
  • 重命名原始数据目录以避免意外重复使用。
警告

迁移过程成功完成后,旧版本的 Trains Server 将无法访问数据,并且需要安装 ClearML Server。

前提条件

  • 默认的 Trains Server 数据目录 /opt/clearml/data 及其子目录的读/写权限,或者如果未使用此默认目录,则使用正在使用的目录及其子目录的权限。
  • 至少 8 GB 系统 RAM。
  • 最少可用磁盘空间为数据大小的 30% 加上两倍的数据大小。
  • Python 版本 >=2.7 或 >=3.6,并且可以从命令行通过 python 访问。

迁移数据

迁移数据

  1. 如果 Trains Server 正在运行,请将其关闭

    • Linux 和 macOS

      docker-compose -f /opt/trains/docker-compose.yml down
    • Windows

      docker-compose -f c:\opt\trains\docker-compose-win10.yml down
    • Kubernetes

      kubectl delete -k overlays/current_version
    • 使用 Helm 的 Kubernetes

      helm del --purge trains-server
      kubectl delete namespace trains
  2. 对于 Kubernetes使用 Helm 的 Kubernetes,请连接到 Kubernetes 集群中标记为 app=trains 的节点。

  3. 下载迁移软件包归档

    curl -L -O  https://github.com/clearml/clearml-server/releases/download/0.16.0/trains-server-0.16.0-migration.zip

    如果需要手动下载文件,请使用此直接链接:trains-server-0.16.0-migration.zip

  4. 解压归档

    unzip trains-server-0.16.0-migration.zip  -d /opt/trains
  5. 迁移数据

    • Linux、macOS 和 Windows - 如果自行管理容器。

      运行迁移脚本。如果使用提升的权限(Linux 中的 sudo 或 Windows 中的管理员权限)运行 Docker,则使用提升的权限运行迁移脚本。

      python elastic_upgrade.py [-s|--source <source_path>] [-t|--target <target_path>] [-n|--no-backup] [-p|--parallel]

      以下可选命令行参数可用于控制迁移脚本的执行

      • <source_path> - 当前 Trains Server 部署中 Elasticsearch 数据目录的路径。
        如果未指定,则使用默认值 /opt/trains/data/elastic(Windows 中为 c:\opt\trains\data\elastic
      • <target_path> - 当前 Trains Server 部署中 Elasticsearch 数据目录的路径。
        如果未指定,则使用默认值 /opt/trains/data/elastic_7(Windows 中为 c:\opt\trains\data\elastic_7
      • no-backup - 在执行迁移之前跳过创建现有 Elasticsearch 数据目录的备份。
        如果未指定,则采用默认值 False(执行备份)
      • parallel - 并行复制多个索引以利用更多 CPU 内核。如果未指定,则关闭并行索引。
    • Kubernetes

      1. 克隆 trains-server-k8s 仓库并切换到新的 trains-server-k8s/upgrade-elastic 目录

        git clone https://github.com/clearml/clearml-server-k8s.git && cd clearml-server-k8s/upgrade-elastic
      2. 创建 upgrade-elastic 命名空间和部署

        kubectl apply -k overlays/current_version

        等待作业完成。要检查作业是否已完成,请运行

        kubectl get jobs -n upgrade-elastic
    • 使用 Helm 的 Kubernetes

      1. clearml-server 仓库添加到 Helm 客户端。

        helm repo add clearml https://clearml.github.io/clearml-server-helm/

        确认 clearml-server 仓库现已位于 Helm 客户端中。

        helm search clearml

        helm search 结果必须包含 allegroai/upgrade-elastic-helm

      2. 在集群上安装 upgrade-elastic-helm

        helm install allegroai/upgrade-elastic-helm --namespace=upgrade-elastic --name upgrade

        集群中会创建一个 upgrade-elastic 命名空间,并且升级部署在该命名空间中。

        等待作业完成。要检查作业是否已完成,请执行以下命令

        kubectl get jobs -n upgrade-elastic

验证数据迁移

成功完成后,迁移脚本会重命名包含已迁移数据的原始 Trains Server 目录,并打印完成消息

Renaming the source directory /opt/trains/data/elastic to /opt/trains/data/elastic_migrated_<date_time>.
Upgrade completed.

迁移脚本执行期间的所有控制台输出都保存在迁移脚本执行所在目录下的日志文件中

<path_to_script>/upgrade_to_7_<date_time>.log

如果迁移脚本未成功完成,迁移脚本会打印错误信息。

重要

如需解决迁移问题,请查看 ClearML Slack 频道GitHub 问题 以及 常见问题ClearML Server 部分。

升级到 ClearML Server v1.2 或更高版本

如果您要将 ClearML Server 升级到版本 1.2 或更高版本,您需要迁移数据库内容以兼容新版本。请参阅此处的说明。否则,请继续执行下面的说明。

完成安装

验证数据迁移成功完成后,继续升级您的服务器