Skip to content

集群部署

本文介绍如何使用 FlowMQ 的集群部署工具 fmqdm,在多台 Linux 节点上自动化部署 FlowMQ 集群。本文提供启用 rlog 与全协议(mqtt,kafka,amqp,nats,rlog)的部署示例,并说明 Dashboard 访问方式与默认登录信息。

说明

本文示例以 3 台节点为例(node1~node3),实际请按你的拓扑进行调整。

前置条件

  • 目标节点为 Linux(Debian/Ubuntu 或 RHEL/CentOS 系)。
  • 节点之间网络互通。
  • 已准备好 FlowMQ 的安装包(需要与节点的操作系统、CPU 架构相匹配)并分发到了各节点上。
  • 已准备企业版 License 文件,放在控制节点本地可读路径(部署时由 fmqdm 分发)。

步骤 1:安装 fmqdm 与 fmqdm-agent

解压 FlowMQ 的安装包并安装 fmqdm(在所有目标节点均需要安装)。

Debian/Ubuntu

bash
sudo dpkg -i fmqdm-<version>-amd64.deb

RHEL/CentOS

bash
sudo rpm -i fmqdm-<version>-amd64.rpm

在目标节点启动 fmqdm-agent

在每台目标节点安装完成后,启动 fmqdm-agent

bash
sudo systemctl enable --now fmqdm-agent

验证 fmqdm-agent 状态:

bash
systemctl status fmqdm-agent

步骤 2:创建部署配置文件

选定任一目标节点为控制节点,创建部署配置文件 deploy.toml

示例:

toml
[agents]
node1 = "192.168.1.10:14159"
node2 = "192.168.1.11:14159"
node3 = "192.168.1.12:14159"

[flowmq.deploy]
on = "all"
package = "flowmq-enterprise-<version>-ubuntu-amd64.deb"
num = 2
dashboard-port = 5177

[flowmq.config]
cluster-id = "flowmq-cluster"
cluster-file = "/etc/foundationdb/fdb.cluster"
loglevel = "info"

license-file = "/etc/flowmq/flowmq.lic"
license-source = "/root/flowmq.lic"

class = "mqtt,kafka,amqp,nats,rlog"
knob-kafka-store-impl-type = "rlog"

[meta.deploy]
on = "all"
package = "flowmq-meta_<version>-1_amd64.deb"
processes-per-machine = 2
replication-mode = "single"
storage-engine = "ssd-redwood-1"

[meta.config]

配置说明:

  • [agents]:填写目标节点 fmqdm-agent 的监听地址(IP:PORT),fmqdm-agent 默认监听 14159 端口。
  • [meta.deploy]:指定 Meta 的部署配置。
  • [meta.config]:指定 Meta 的启动和运行配置;留空时使用默认数据/日志目录。
  • [flowmq.deploy]:指定 FlowMQ 部署配置。package 需为各目标节点本机已存在的安装包路径。
  • [flowmq.config]:指定 FlowMQ 的启动和运行配置。license-source 为控制节点本地 License 路径;license-file 为部署后各节点上的目标路径。

步骤 3:部署并启动 Meta

在控制节点执行:

bash
fmqdm -c deploy.toml meta install
fmqdm -c deploy.toml meta start

验证 Meta 集群状态:

bash
fdbcli --exec "status"

当输出显示集群可用后,再进行下一步部署 FlowMQ。

步骤 4:部署并启动 FlowMQ

在控制节点执行:

bash
fmqdm -c deploy.toml flowmq install
fmqdm -c deploy.toml flowmq start

flowmq start 成功后,fmqdm 会在日志中打印 Dashboard / Prometheus 所在节点,例如:

text
[fmqdm] FlowMQ started successfully (dashboard and Prometheus on node2)

其中 node2 对应 [agents] 里配置的节点名,请使用该节点 IP 访问 Dashboard。Dashboard 仅在该节点启动,不会在所有节点启动。

验证 FlowMQ 集群成员(在任意已安装 FlowMQ 的节点执行):

bash
fmqcli cluster list-cluster-members

若返回成员列表且节点状态正常,则部署完成。

Dashboard 访问

根据上一步 fmqdm 输出确认 Dashboard 所在节点后访问:

  • Dashboard 地址:http://<Dashboard 所在节点 IP>:5177
  • HTTP API 地址:http://<任一 FlowMQ 节点 IP>:18083
  • 默认登录用户名:admin
  • 默认登录密码:public

安装卸载

停止服务:

bash
fmqdm -c deploy.toml flowmq stop
fmqdm -c deploy.toml meta stop

卸载/移除服务:

WARNING

注意该操作会清除数据,请勿在生产环境直接操作。

bash
fmqdm -c deploy.toml flowmq remove
fmqdm -c deploy.toml meta remove

配置参考

[meta.deploy]

配置项说明默认值
on目标节点范围(如 all 或指定节点集合)-
packageflowmq-meta 安装包路径(.deb.rpm必填
processes-per-machine每台机器启动的 fdbserver 进程数1
replication-mode复制模式:single / double / tripledouble
storage-engine存储引擎:ssd-2 / ssd-redwood-1 / memoryssd-redwood-1
grv-proxiesGRV proxy 进程数1
commit-proxiesCommit proxy 进程数1
resolversResolver 进程数1
clean-data设为 true 在停止时清除数据目录false

[meta.config]

配置项说明默认值
datadir数据目录($ID 表示进程 ID)/var/lib/foundationdb/data/$ID
logdir日志目录/var/log/foundationdb
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-
dashboard-portDashboard 监听端口5177

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

[flowmq.config]

配置项说明默认值
cluster-idFlowMQ 集群标识符必填
cluster-fileFDB fdb.cluster 文件路径/etc/foundationdb/fdb.cluster
class节点角色(可配 mqttkafkaamqpnatsrlog,支持逗号组合)-
license-source控制节点本地 License 路径,由 fmqdm 分发到各节点-
license-file目标节点上的 License 路径/etc/flowmq/license.lic
loglevel日志级别(如 info-
memory内存限制(例如:8GiB-
knob-kafka-store-impl-typeKafka 存储实现;本示例使用 rlogs3