从 v0.15 或更早版本升级服务器到 ClearML Server
如果您要将 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
访问。
迁移数据
迁移数据
-
如果 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
-
-
对于 Kubernetes 和 使用 Helm 的 Kubernetes,请连接到 Kubernetes 集群中标记为
app=trains
的节点。 -
下载迁移软件包归档
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。
-
解压归档
unzip trains-server-0.16.0-migration.zip -d /opt/trains
-
迁移数据
-
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
-
克隆
trains-server-k8s
仓库并切换到新的trains-server-k8s/upgrade-elastic
目录git clone https://github.com/clearml/clearml-server-k8s.git && cd clearml-server-k8s/upgrade-elastic
-
创建
upgrade-elastic
命名空间和部署kubectl apply -k overlays/current_version
等待作业完成。要检查作业是否已完成,请运行
kubectl get jobs -n upgrade-elastic
-
-
使用 Helm 的 Kubernetes
-
将
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
。 -
在集群上安装
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 Server v1.2 或更高版本
如果您要将 ClearML Server 升级到版本 1.2 或更高版本,您需要迁移数据库内容以兼容新版本。请参阅此处的说明。否则,请继续执行下面的说明。
完成安装
验证数据迁移成功完成后,继续升级您的服务器