集群部署
本文介绍如何使用 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.debRHEL/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 startflowmq 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 或指定节点集合) | - |
package | flowmq-meta 安装包路径(.deb 或 .rpm) | 必填 |
processes-per-machine | 每台机器启动的 fdbserver 进程数 | 1 |
replication-mode | 复制模式:single / double / triple | double |
storage-engine | 存储引擎:ssd-2 / ssd-redwood-1 / memory | ssd-redwood-1 |
grv-proxies | GRV proxy 进程数 | 1 |
commit-proxies | Commit proxy 进程数 | 1 |
resolvers | Resolver 进程数 | 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 或指定节点集合) | - |
package | FlowMQ 安装包路径(.deb 或 .rpm) | /root/flowmq.deb |
num | 每台机器的 FlowMQ 实例数(与 mqtt-num/kafka-num 二选一) | 1 |
mqtt-num | 每台机器的 FlowMQ 实例数(class = mqtt) | - |
kafka-num | 每台机器的 FlowMQ 实例数(class = kafka) | - |
dashboard-port | Dashboard 监听端口 | 5177 |
注意:num 与 mqtt-num/kafka-num 不可同时使用。
[flowmq.config]
| 配置项 | 说明 | 默认值 |
|---|---|---|
cluster-id | FlowMQ 集群标识符 | 必填 |
cluster-file | FDB fdb.cluster 文件路径 | /etc/foundationdb/fdb.cluster |
class | 节点角色(可配 mqtt、kafka、amqp、nats、rlog,支持逗号组合) | - |
license-source | 控制节点本地 License 路径,由 fmqdm 分发到各节点 | - |
license-file | 目标节点上的 License 路径 | /etc/flowmq/license.lic |
loglevel | 日志级别(如 info) | - |
memory | 内存限制(例如:8GiB) | - |
knob-kafka-store-impl-type | Kafka 存储实现;本示例使用 rlog | s3 |