跳到主要内容

物理机部署 Transfer

本指南在现有 Curvine 集群旁部署一个独立的 Transfer 进程。Master 和 Worker 必须已经 运行,并且使用支持 Transfer task 的版本。

准备服务配置

以已包含 Master 地址的集群配置为基础,创建一份仅供 Transfer 使用的副本。下面的 [transfer] 是单实例 SQLite 部署唯一需要新增的配置段。

# conf/curvine-transfer.toml
[transfer]
enabled = true
store_url = "sqlite:///var/lib/curvine-transfer/transfer.db"
hostname = "transfer-1.example.com"
rpc_port = 9010
web_port = 9011
endpoints = ["transfer-1.example.com:9010"]

使用运行服务的同一个操作系统用户创建 Store 目录。SQLite 数据库必须位于持久化本地盘 或块存储上;不要放在共享文件系统上,也不要再启动第二个进程访问该数据库。

install -d -o curvine -g curvine /var/lib/curvine-transfer

启动与停止

发行包包含 Transfer 启动脚本。它会加载 curvine-env.sh,写入 logs/transfer.out,并维护 transfer.pid

export CURVINE_HOME=/opt/curvine
export CURVINE_CONF_FILE=$CURVINE_HOME/conf/curvine-transfer.toml

$CURVINE_HOME/bin/curvine-transfer.sh start
$CURVINE_HOME/bin/curvine-transfer.sh stop

使用 systemd 运行

使用发行包内置脚本,以便服务拥有正常的 Curvine shell 环境。将下列内容保存为 /etc/systemd/system/curvine-transfer.service

[Unit]
Description=Curvine Transfer Service
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=curvine
Group=curvine
WorkingDirectory=/opt/curvine
Environment=CURVINE_CONF_FILE=/opt/curvine/conf/curvine-transfer.toml
PIDFile=/opt/curvine/transfer.pid
ExecStart=/opt/curvine/bin/curvine-transfer.sh start
ExecStop=/opt/curvine/bin/curvine-transfer.sh stop
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now curvine-transfer
systemctl status curvine-transfer

验证

curl --fail http://transfer-1.example.com:9011/readyz
curl --fail http://transfer-1.example.com:9011/healthz

export CURVINE_CONF_FILE=/opt/curvine/conf/curvine-transfer.toml
/opt/curvine/bin/cv transfer list

客户端地址必须可被所有 CLI 使用者和可能执行 Transfer task 的 Worker 访问。

高可用

运行多个 Transfer 进程时,将 SQLite URL 改为一个共享的 MySQL store_url。每个进程 必须具有唯一且可访问的地址,并通过负载均衡或 DNS 向客户端提供一个稳定地址。不要将 多个彼此独立的 SQLite 数据库作为故障切换目标。