部署指南(使用 dm 部署 FlowMQ 集群)
本指南介绍如何使用 dm(Deployment Manager)在多台 Linux 节点上自动化部署 FoundationDB(FDB) 与 FlowMQ,并完成集群启动与验证。
说明:
- 本文示例以 3 台节点为例(node1~node3),实际请按你的拓扑调整。
- 部署流程为:安装 dm/dm-agent → 编写
deploy.toml→ 分发安装包 → 部署并启动 FDB → 部署并启动 FlowMQ。
前置条件
- 目标节点为 Linux(Debian/Ubuntu 或 RHEL/CentOS/Fedora 系)。
- 已规划好节点 IP,并确保控制机可以通过网络访问目标节点(通常需要 root/SSH 能力用于分发文件与远程执行)。
- 目标节点间网络互通。
- 已准备好以下安装包(与你的系统架构、发行版匹配):
- FoundationDB Client 包
- FoundationDB Server 包
- FlowMQ 安装包(
.deb或.rpm)
步骤 1:安装 dm 与 dm-agent
从 GitHub 下载 dm 最新版本并安装(在控制机与所有目标节点均需要安装)。
Debian/Ubuntu
bash
wget https://github.com/emqx/dm/releases/latest/download/dm-<version>-amd64.deb
sudo dpkg -i dm-<version>-amd64.debRHEL/CentOS/Fedora
bash
wget https://github.com/emqx/dm/releases/latest/download/dm-<version>-amd64.rpm
sudo rpm -i dm-<version>-amd64.rpm在目标节点启动 dm-agent
在每台目标节点安装完成后,启动并设置开机自启:
bash
sudo systemctl enable --now dm-agent验证 dm-agent 状态:
bash
systemctl status dm-agent提示:
deploy.toml中的 agent 地址默认使用14159端口(见下文[agents]配置)。请确保控制机能够访问目标节点的该端口。
步骤 2:创建部署配置文件 deploy.toml
在控制机创建 deploy.toml,用于描述目标节点(agents)、FoundationDB 与 FlowMQ 的部署参数。
示例:
toml
[agents]
node1 = "192.168.1.10:14159"
node2 = "192.168.1.11:14159"
node3 = "192.168.1.12:14159"
# FoundationDB
[fdb.deploy]
on = "all"
client-package = "/root/foundationdb-clients_7.4.5-1_amd64.deb"
server-package = "/root/foundationdb-server_7.4.5-1_amd64.deb"
processes-per-machine = 1
replication-mode = "single"
storage-engine = "ssd-redwood-1"
[fdb.config]
datadir = "/var/lib/foundationdb/data/$ID"
logdir = "/var/log/foundationdb"
# FlowMQ
[flowmq.deploy]
on = "all"
package = "/root/flowmq.deb"
num = 4
[flowmq.config]
cluster-id = "flowmq-cluster-1"
cluster-file = "/etc/foundationdb/fdb.cluster"
class = "mqtt"配置说明:
[agents]:填写目标节点 dm-agent 的监听地址(IP:PORT)。[fdb.deploy]:指定 FDB 的安装包路径、部署节点范围、进程数与复制模式等。[fdb.config]:指定 FDB 数据与日志目录等运行参数。[flowmq.deploy]:指定 FlowMQ 安装包路径、部署节点范围以及每台机器实例数量。[flowmq.config]:指定 FlowMQ 集群 ID、FDB cluster file 路径与节点角色(class)等。
步骤 3:准备并分发安装包
将 FoundationDB 与 FlowMQ 的安装包复制到所有目标节点(示例复制到 /root/ 目录,与 deploy.toml 中路径保持一致)。
bash
# FoundationDB packages
scp foundationdb-clients_7.4.5-1_amd64.deb root@192.168.1.10:/root/
scp foundationdb-server_7.4.5-1_amd64.deb root@192.168.1.10:/root/
# 其他节点重复上述操作...
# FlowMQ package
scp flowmq.deb root@192.168.1.10:/root/
# 其他节点重复上述操作...建议:如果你的集群节点较多,可使用自动化工具(如 Ansible)或脚本批量分发,避免手工重复操作。
步骤 4:部署并启动 FoundationDB
在控制机执行:
bash
dm -c deploy.toml fdb install
dm -c deploy.toml fdb start验证 FDB 集群状态(在任意已安装 FDB client 的节点执行):
bash
fdbcli --exec "status"当 status 输出显示集群可用(available/healthy)后,再进行下一步部署 FlowMQ。
步骤 5:部署并启动 FlowMQ
在控制机执行:
bash
dm -c deploy.toml flowmq install
dm -c deploy.toml flowmq start验证 FlowMQ 集群成员(在任意已安装 FlowMQ 的节点执行):
bash
fmqcli cluster list-cluster-members若返回成员列表且节点状态正常,则部署完成。
常用运维命令
停止服务:
bash
# Stop services
dm -c deploy.toml flowmq stop
dm -c deploy.toml fdb stop卸载/移除服务:
bash
# Remove services
dm -c deploy.toml flowmq remove
dm -c deploy.toml fdb remove配置参考
[fdb.deploy]
| 配置项 | 说明 | 默认值 |
|---|---|---|
on | 目标节点范围(如 all 或指定节点集合) | - |
client-package | FDB client 安装包路径 | 必填 |
server-package | FDB server 安装包路径 | 必填 |
processes-per-machine | 每台机器启动的 fdbserver 进程数 | 1 |
base-port | fdbserver 起始端口 | 4500 |
replication-mode | 复制模式:single / double / triple | double |
storage-engine | 存储引擎:ssd-2 / ssd-redwood-1 / memory | ssd-redwood-1 |
[fdb.config]
| 配置项 | 说明 |
|---|---|
datadir | 数据目录($ID 表示进程 ID) |
logdir | 日志目录 |
memory | 内存限制(例如:8GiB) |
[flowmq.deploy]
| 配置项 | 说明 | 默认值 |
|---|---|---|
on | 目标节点范围(如 all 或指定节点集合) | - |
package | FlowMQ 安装包路径(.deb 或 .rpm) | /root/flowmq.deb |
num | 每台机器的 FlowMQ 实例数(与 mqtt-num/kafka-num 二选一) | 1 |
mqtt-num | 每台机器的 FlowMQ 实例数(class = mqtt) | - |
kafka-num | 每台机器的 FlowMQ 实例数(class = kafka) | - |
注意:num 与 mqtt-num/kafka-num 不可同时使用。
混合角色示例:
toml
[flowmq.deploy]
on = "all"
package = "/root/flowmq.deb"
mqtt-num = 2
kafka-num = 1[flowmq.config]
| 配置项 | 说明 |
|---|---|
cluster-id | FlowMQ 集群标识符 |
cluster-file | FoundationDB fdb.cluster 文件路径 |
class | 节点角色(如 mqtt、kafka 等) |
memory | 内存限制(例如:8GiB) |