部署指南¶
本文档介绍如何将openYuanrong datasystem通过裸进程或者Kubernetes的方式进行部署worker组件。
裸进程部署worker¶
部署环境准备¶
openYuanrong datasystem进程部署所需的系统环境依赖如下:
软件名称 |
版本 |
作用 |
|---|---|---|
openEuler |
22.03/24.04 |
推荐运行openYuanrong datasystem的操作系统 |
8.5 |
运行异构相关特性的依赖库 |
|
3.9-3.13 |
openYuanrong datasystem dscli的使用依赖Python环境 |
|
- |
用于部署openYuanrong datasystem的命令行工具 |
|
3.5 |
使用 ETCD 集群管理方式时的依赖组件;使用 Coordinator 或 Metastore 时无需部署 |
|
- |
仅多机部署需要,配置SSH互信用于机器间互相访问 |
下面给出以上依赖的安装方法。
安装CANN(非必须)¶
CANN的安装依赖Python环境,请确保您在开始安装CANN之前环境中的Python已经就绪。
在Ascend官网下载CANN run包,安装 run 包:
chmod +x ./Ascend-cann-toolkit_<version>_linux-<arch>.run
./Ascend-cann-toolkit_<version>_linux-<arch>.run --install --quiet
安装完成后,若显示如下信息,则说明软件安装成功:
Toolkit: Ascend-cann-toolkit_<version>_linux-<arch> install success
如果用户未指定安装路径,则软件会安装到默认路径下,默认安装路径如下:
用户身份 |
默认路径 |
|---|---|
root |
|
非 root |
|
加载环境变量(非 root 示例):
source ${HOME}/Ascend/ascend-toolkit/set_env.sh
安装Python¶
Python可通过Conda进行安装。
安装Miniconda:
cd /tmp
curl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py311_23.10.0-1-Linux-$(arch).sh
bash Miniconda3-py311_23.10.0-1-Linux-$(arch).sh -b
cd -
. ~/miniconda3/etc/profile.d/conda.sh
conda init bash
安装完成后,可以为Conda设置清华源加速下载,参考此处。
创建虚拟环境,以Python 3.11.4为例:
conda create -n openYuanrong-datasystem_py311 python=3.11.4 -y
conda activate openYuanrong-datasystem_py311
可以通过以下命令查看Python版本。
python --version
安装dscli¶
dscli命令行工具集成在openYuanrong datasystem的wheel包 openyuanrong_datasystem-<version>-cp311-cp311-manylinux_2_34_<arch>.whl中,安装openYuanrong datasystem请参考安装openYuanrong datasystem。
安装完成后,运行如下命令:
dscli -h
如果输出dscli帮助文档说明安装成功。
安装并部署ETCD¶
1. 下载 ETCD 二进制文件¶
从 ETCD GitHub Releases 下载最新版本的二进制包:
ETCD_VERSION="v3.5.12"
wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz
2. 解压并安装¶
tar -xvf etcd-${ETCD_VERSION}-linux-amd64.tar.gz
cd etcd-${ETCD_VERSION}-linux-amd64
# 复制可执行文件到系统路径
sudo cp etcd etcdctl /usr/local/bin/
3. 验证安装¶
etcd --version
etcdctl version
如果能输出版本号说明安装成功。
4. 部署ETCD¶
注意: 此章节仅给出了最简单的ETCD部署方式,更多ETCD部署方式请参考ETCD官网部署教程
以部署一个端口号为 2379 的单节点ETCD为例,运行命令如下:
etcd \
--name etcd-single \
--data-dir /tmp/etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster etcd-single=http://0.0.0.0:2380 &
参数说明:
–name:节点名称,单机可以随便命名。
–data-dir:数据存储目录。
–listen-client-urls:监听客户端请求的地址(0.0.0.0 允许所有 IP 访问)。
–advertise-client-urls:对外暴露的客户端访问地址。
–listen-peer-urls:监听其他 etcd 节点通信的 URL(集群内部端口)。
–initial-advertise-peer-urls:向其他节点宣告的访问地址(集群内部通信地址)。
–initial-cluster:初始集群成员列表(格式:节点名=节点peerURL)。
部署完成之后通过 etcdctl 命令访问 ETCD 集群验证:
etcdctl --endpoints "127.0.0.1:2379" put key "value"
etcdctl --endpoints "127.0.0.1:2379" get key
命令行操作能正常写入/读取数据说明部署ETCD成功。
安装并部署Coordinator¶
datasystem_coordinator 和 dscli 随 openYuanrong datasystem 完整发行版安装,无需额外安装第三方协调组件。安装 openYuanrong datasystem 和 dscli 的方法参见安装dscli。
Coordinator 支持快速部署和通过配置项部署两种方式。
快速部署¶
指定 Coordinator 服务地址并启动:
dscli start --coordinator_args --coordinator_address "127.0.0.1:31511"
# [INFO] [ OK ] Start coordinator service @ 127.0.0.1:31511 success, PID: 38100
输出 OK 说明 Coordinator 部署成功。
通过服务地址停止 Coordinator:
dscli stop --coordinator_address "127.0.0.1:31511"
通过配置项部署¶
生成配置模板:
dscli generate_config -o ./
# [INFO] Configuration file cluster_config.json has been generated to /home/test/cluster_config.json
# [INFO] Configuration file worker_config.json has been generated to /home/test/worker_config.json
# [INFO] Configuration file coordinator_config.json has been generated to /home/test/coordinator_config.json
# [INFO] Configuration generation completed successfully
按需修改 coordinator_config.json 中的 Coordinator 服务地址:
{
"coordinator_address": {
"value": "127.0.0.1:31511"
}
}
使用配置文件启动 Coordinator:
dscli start --coordinator_config_path ./coordinator_config.json
# [INFO] [ OK ] Start coordinator service @ 127.0.0.1:31511 success, PID: 38100
输出 OK 说明 Coordinator 部署成功。
使用同一配置文件停止 Coordinator:
dscli stop --config_path ./coordinator_config.json
Coordinator 的完整启停方式和配置项说明参见 使用Coordinator部署和 Coordinator配置项。
Coordinator 多节点部署¶
如需部署多个 Coordinator 并启用 Raft 选主,使用 coordinator_raft_initial_peers 配置静态初始成员列表。该参数为空时,Coordinator 按单节点无选主模式启动;配置多个 host:port 成员时,各 Coordinator 节点必须使用相同的 peers 列表、本机唯一的 coordinator_address,并为 coordinator_raft_data_dir 配置节点独占的本地目录。首次启动多个 Coordinator 时,应并发或近同时启动各节点,避免只启动单个节点后长时间等待。详细三节点示例参见 Coordinator 多节点部署。
SSH互信配置¶
SSH互信可以让服务器之间无需密码即可登录,多机集群部署必须配置SSH互信,步骤如下:
1. 安装SSH服务¶
确保所有需要配置互信的服务器上都已经安装并运行了SSH服务:
sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
2. 生成SSH密钥对(在所有节点上执行)¶
ssh-keygen -t rsa -b 4096
按Enter接受默认位置(~/.ssh/id_rsa),然后设置空密码(直接按Enter两次)。
3. 将公钥复制到所有节点¶
在主节点上查看公钥:
cat ~/.ssh/id_rsa.pub
将显示的公钥内容添加到所有节点的~/.ssh/authorized_keys文件中:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
echo "公钥内容" >> ~/.ssh/authorized_keys
4. 测试SSH互信¶
从一个节点尝试SSH到其他节点,不需要输入密码:
ssh username@hostname
当无需密码能够正常跳转到其他节点时说明SSH互信配置成功。
集群部署¶
本节介绍 Worker 对接 ETCD 或 Coordinator 的单机和多机部署方式。部署 Worker 前,需要先准备且仅准备一种集群管理后端:
对接 ETCD 时,先完成安装并部署ETCD。
对接 Coordinator 时,先完成安装并部署Coordinator。
Worker 的 coordinator_address、etcd_address、metastore_address 必须且只能配置一个;本节仅介绍对接 ETCD 和 Coordinator 的部署方式。
单机部署¶
单机部署支持快速部署和通过配置项部署两种方式。
快速部署¶
对接 ETCD
dscli start --worker_args --worker_address "127.0.0.1:31501" --etcd_address "127.0.0.1:2379" # [INFO] [ OK ] Start worker service @ 127.0.0.1:31501 success, PID: 38100
对接 Coordinator
dscli start --worker_args --worker_address "127.0.0.1:31501" --coordinator_address "127.0.0.1:31511" # [INFO] [ OK ] Start worker service @ 127.0.0.1:31501 success, PID: 38100
输出 OK 说明 Worker 部署成功。更多快速部署方式参见 dscli 的 ETCD部署和 Coordinator部署章节。
通过配置项部署¶
生成配置模板:
dscli generate_config -o ./
# [INFO] Configuration file cluster_config.json has been generated to /home/test/cluster_config.json
# [INFO] Configuration file worker_config.json has been generated to /home/test/worker_config.json
# [INFO] Configuration file coordinator_config.json has been generated to /home/test/coordinator_config.json
# [INFO] Configuration generation completed successfully
根据集群管理后端修改 worker_config.json,并确保另外两个后端地址为空。
对接 ETCD
{ "etcd_address": { "value": "127.0.0.1:2379" } }
对接 Coordinator
{ "coordinator_address": { "value": "127.0.0.1:31511" } }
配置完成后,启动 Worker:
dscli start --worker_config_path ./worker_config.json
# [INFO] [ OK ] Start worker service @ 127.0.0.1:31501 success, PID: 38100
输出 OK 说明 Worker 部署成功。更多配置项部署方式参见 dscli 的 ETCD部署和 Coordinator部署章节。
多机部署¶
在当前目录生成 cluster_config.json、worker_config.json 和 coordinator_config.json:
dscli generate_config -o ./
# [INFO] Configuration file cluster_config.json has been generated to /home/test/cluster_config.json
# [INFO] Configuration file worker_config.json has been generated to /home/test/worker_config.json
# [INFO] Configuration file coordinator_config.json has been generated to /home/test/coordinator_config.json
# [INFO] Configuration generation completed successfully
编辑 cluster_config.json:
{
// ssh互信
"ssh_auth": {
"ssh_private_key": "~/.ssh/id_rsa",
"ssh_user_name": "test_user"
},
// Worker配置文件,在第一步生成
"worker_config_path": "./worker_config.json",
"worker_nodes": [
"127.0.0.1",
"127.0.0.2"
],
"worker_port": 31501
}
根据集群管理后端修改 worker_config.json,该配置会应用到所有 Worker。
对接 ETCD
{ "etcd_address": { "value": "127.0.0.1:2379" } }
对接 Coordinator
{ "coordinator_address": { "value": "127.0.0.1:31511" } }
确保另外两个后端地址为空,然后部署 Worker 集群:
dscli up -f ./cluster_config.json
# [INFO] Start worker service @ 127.0.0.1:31501 success.
# [INFO] Start worker service @ 127.0.0.2:31501 success.
当输出如上信息时,说明 Worker 集群部署成功。
注意事项:
对接 Coordinator 时,本节只部署 Worker,不会启动 Coordinator。请提前按照安装并部署Coordinator完成 Coordinator 部署。
多机集群部署依赖节点间的 SSH 互信,具体操作参见SSH互信配置。
所有部署节点都需要安装 dscli,安装方法参见安装dscli。
更多配置项部署方式参见 dscli 的 ETCD部署和 Coordinator部署章节。
快速验证¶
Python 脚本快速验证:
from yr.datasystem.ds_client import DsClient
client = DsClient("127.0.0.1", 31501)
client.init()
当脚本执行未发生异常时说明openYuanrong datasystem的客户端能正常连接上当前节点的ds-worker,部署成功。
集群卸载¶
单机卸载¶
单机集群卸载有两种方式:快速卸载以及通过配置项卸载
卸载快速部署的集群
# 卸载指定ds-worker IP的集群 dscli stop --worker_address "127.0.0.1:31501" # [INFO] [ OK ] Stop worker service @ 127.0.0.1:31501 normally, PID: 38100
当命令输出的日志为OK时说明卸载成功。
卸载配置项部署的集群
# 卸载使用配置项部署的集群 dscli stop --config_path ./worker_config.json # [INFO] [ OK ] Stop worker service @ 127.0.0.1:31501 normally, PID: 38100
输出OK说明卸载成功。
多机卸载¶
dscli down -f ./cluster_config.json
# [INFO] Stop worker service @ 127.0.0.1:31501 success.
# [INFO] Stop worker service @ 127.0.0.2:31501 success.
当输出如上信息时说明集群卸载成功。
Kubernetes部署worker¶
部署环境准备¶
openYuanrong datasystem Kubernetes部署所需的依赖如下:
软件名称 |
推荐版本 |
作用 |
|---|---|---|
openEuler |
22.03 |
支持运行Kubernetes与Docker的操作系统 |
- |
Kubernetes命令行工具,用于与Kubernetes集群交互 |
|
- |
Kubernetes集群,用于编排和管理openYuanrong datasystem的容器 |
|
- |
支持openYuanrong datasystem Kubernetes工程化部署的核心工具 |
|
- |
提供容器化平台,支持openYuanrong datasystem容器化部署和运行 |
|
3.5 |
openYuanrong datasystem集群管理依赖组件 |
|
- |
openYuanrong datasystem服务端组件镜像 |
|
- |
openYuanrong datasystem helm chart包 |
下面给出以上软件的获取及安装方法。
安装kubectl¶
安装详情请参考官方文档:Install and Set Up kubectl on Linux
安装Kubernetes¶
安装详情请参考官方文档:使用部署工具安装 Kubernetes
安装Helm¶
安装详情请参考官方文档:Installing Helm
安装Docker¶
安装详情请参考官方文档:Install Docker Engine
安装并部署ETCD¶
安装详情请参考 安装并部署ETCD 章节。
获取openYuanrong datasystem镜像¶
源码编译构建镜像
如果需要从源码构建镜像,需要先完成 源码编译。源码编译完成之后执行如下命令:
cd yuanrong-datasystem/k8s/docker bash docker_build.sh \ -b <base_image_name>:<base_image_tag> \ -n <image_name> \ -t <image_tag>
参数说明:
base_image_name: 基础镜像名
base_image_tag: 基础镜像Tag
image_name: 生成的镜像名
image_tag: 生成的镜像Tag
执行完成之后会在yuanrong-datasystem/k8s/docker目录下生成一个build目录,build目录中会生成一个
datasystem.tar文件,即为镜像压缩文件;与此同时本地的docker仓库中也会保存<image_name>:<image_tag>的镜像。
获取openYuanrong datasystem helm chart包¶
通过 dscli 命令行工具获取:
dscli generate_helm_chart -o /tmp
请注意命令运行成功后会在”/tmp”目录下生成helm chart目录。
通过源码获取:
git clone -b ${version} https://gitcode.com/openeuler/yuanrong-datasystem.git cp -r yuanrong-datasystem/docker/chart/datasystem /tmp
集群部署¶
openYuanrong datasystem通过 /tmp/datasystem/values.yaml 文件进行集群相关配置,其中必配项如下:
global:
# 其他配置项...
# 镜像仓地址,不涉及可以留空
imageRegistry: ""
# 镜像名字和镜像tag,<VERSION>需要替换为对应的版本号
images:
datasystem: "openyuanrong-datasystem:0.5.0"
# ETCD相关配置
etcd:
etcdAddress: "127.0.0.1:2379"
注意事项:
镜像仓地址与镜像名称获取请参考:[获取openYuanrong datasystem镜像](#获取openYuanrong datasystem镜像)。
ETCD集群的部署与IP地址获取请参考:安装并部署ETCD。
配置完成后,通过 helm 命令即可轻松完成部署,命令如下:
helm install yr_datasystem /tmp/datasystem
# NAME: yr_datasystem
# LAST DEPLOYED: Tue Apr 22 14:31:34 2025
# NAMESPACE: default
# STATUS: deployed
# REVISION: 1
# TEST SUITE: None
部署后可以通过 kubectl 命令查看集群状态:
kubectl get pods -o wide
# NAME READY STATUS RESTARTS AGE IP NODE
# ...
# ds-worker-5cw42 1/1 Running 1 (2s ago) 13s 127.0.0.1 Running
# ds-worker-4wv63 1/1 Running 1 (10s ago) 23s 127.0.0.2 Running
当Pod处于Running状态时说明Pod处于就绪状态,可以正常对外提供服务,部署成功。
更多部署参数配置请参考:Kubernetes配置项
快速验证¶
openYuanrong datasystem会默认以DaemonSet的方式在每个节点都部署一个 ds-worker Pod,默认监听 <主机IP>:31501,可通过如下 Python 脚本快速验证:
from yr.datasystem.ds_client import DsClient
client = DsClient("127.0.0.1", 31501)
client.init()
当脚本执行未发生异常时说明openYuanrong datasystem的客户端能正常连接上当前节点的 ds-worker Pod,部署成功。
集群卸载¶
集群通过 helm 命令即可轻松完成卸载,卸载命令如下:
helm uninstall yr_datasystem
执行完命令后通过 kubectl 命令再次查看集群状态:
kubectl get pods -o wide
# NAME READY STATUS RESTARTS AGE IP NODE
# Pod列表中不存在ds-worker Pod
当openYuanrong datasystem所有的ds-worker Pod都退出时说明集群卸载成功。