Skip to content

部署指南(使用 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.deb

RHEL/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-packageFDB client 安装包路径必填
server-packageFDB server 安装包路径必填
processes-per-machine每台机器启动的 fdbserver 进程数1
base-portfdbserver 起始端口4500
replication-mode复制模式:single / double / tripledouble
storage-engine存储引擎:ssd-2 / ssd-redwood-1 / memoryssd-redwood-1

[fdb.config]

配置项说明
datadir数据目录($ID 表示进程 ID)
logdir日志目录
memory内存限制(例如:8GiB

[flowmq.deploy]

配置项说明默认值
on目标节点范围(如 all 或指定节点集合)-
packageFlowMQ 安装包路径(.deb.rpm/root/flowmq.deb
num每台机器的 FlowMQ 实例数(与 mqtt-num/kafka-num 二选一)1
mqtt-num每台机器的 FlowMQ 实例数(class = mqtt-
kafka-num每台机器的 FlowMQ 实例数(class = kafka-

注意:nummqtt-num/kafka-num 不可同时使用。

混合角色示例:

toml
[flowmq.deploy]
on = "all"
package = "/root/flowmq.deb"
mqtt-num = 2
kafka-num = 1

[flowmq.config]

配置项说明
cluster-idFlowMQ 集群标识符
cluster-fileFoundationDB fdb.cluster 文件路径
class节点角色(如 mqttkafka 等)
memory内存限制(例如:8GiB

FlowMQ Enterprise(企业版)