集群部署
本文介绍如何使用 FlowMQ 的集群部署工具 dm 在多台 Linux 节点上自动化部署 FlowMQ 集群。
说明
本文示例以 3 台节点为例(node1~node3),实际请按你的拓扑进行调整。
前置条件
- 目标节点为 Linux(Debian/Ubuntu 或 RHEL/CentOS 系)。
- 节点之间的网络互通。
- 已准备好 FlowMQ 的安装包(需要与节点的操作系统,CPU 架构相匹配)并分发到了各节点上。
步骤 1:安装 dm 与 dm-agent
解压 FlowMQ 的安装包并安装 dm (在所有目标节点均需要安装)。
Debian/Ubuntu
bash
sudo dpkg -i dm-<version>-amd64.debRHEL/CentOS
bash
sudo rpm -i dm-<version>-amd64.rpm在目标节点启动 dm-agent
在每台目标节点安装完成后,启动 dm-agent :
bash
sudo systemctl enable --now dm-agent验证 dm-agent 状态:
bash
systemctl status dm-agent步骤 2:创建部署配置文件
选定任一目标节点为控制节点,创建部署配置文件 deploy.toml。
示例:
toml
[agents]
node1 = "192.168.1.10:14159"
node2 = "192.168.1.11:14159"
node3 = "192.168.1.12:14159"
[meta.deploy]
on = "all"
package = "flowmq-meta_7.4.5-1_amd64.deb"
processes-per-machine = 1
replication-mode = "double"
storage-engine = "ssd-redwood-1"
[meta.config]
datadir = "/var/lib/foundationdb/data/$ID"
logdir = "/var/log/foundationdb"
[flowmq.deploy]
on = "all"
package = "flowmq.deb"
num = 4
[flowmq.config]
cluster-id = "flowmq-cluster-1"
cluster-file = "/etc/foundationdb/fdb.cluster"
class = "mqtt"配置说明:
[agents]:填写目标节点 dm-agent 的监听地址(IP:PORT), dm-agent 默认监听14159端口。[meta.deploy]:指定 Meta 的部署配置。[meta.config]:指定 Meta 的启动和运行配置。[flowmq.deploy]:指定 FlowMQ 部署配置。[flowmq.config]:指定 FlowMQ 的启动和运行配置。
步骤 3:部署并启动 Meta
在控制机执行:
bash
dm -c deploy.toml meta install
dm -c deploy.toml meta start验证 Meta 集群状态:
bash
fdbcli --exec "status"当输出显示集群可用后,再进行下一步部署 FlowMQ 。
步骤 4:部署并启动 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 meta stop卸载/移除服务
WARNING
注意该操作会清除数据,请勿在生产环境直接操作
bash
dm -c deploy.toml flowmq remove
dm -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 不可同时使用。
混合角色示例:
toml
[flowmq.deploy]
on = "all"
package = "/root/flowmq.deb"
mqtt-num = 2
kafka-num = 1[flowmq.config]
| 配置项 | 说明 | 默认值 |
|---|---|---|
cluster-id | FlowMQ 集群标识符 | 必填 |
cluster-file | FDB fdb.cluster 文件路径 | /etc/foundationdb/fdb.cluster |
class | 节点角色(如 mqtt、kafka 等), 如果在 [flowmq.deploy] 里配置了 mqtt-num 或 kafka-num 会自动设置对应角色,无需填写 | - |
memory | 内存限制(例如:8GiB) | - |
以下配置项在开启 Kafka 功能时需要配置:
提示
可以使用 fmqs3 init 根据命令行提示填写信息生成如下参数。
| 配置项 | 说明 | 默认值 |
|---|---|---|
knob-kafka-s3-host | S3 端点地址。path 风格填纯端点(如 s3.us-east-1.amazonaws.com);virtualhost 风格需带 bucket 前缀(如 mybucket.s3.us-east-1.amazonaws.com) | 必填 |
knob-kafka-s3-port | S3 服务端口 | HTTPS 时通常为 443,HTTP 时如 MinIO 常用 9000 |
knob-kafka-s3-region | S3 存储区域(如 us-east-1、cn-hangzhou) | - |
knob-kafka-s3-bucket | S3 存储桶名称 | 必填 |
knob-kafka-s3-bucket-prefix | 存储桶内的对象前缀 | 默认为 cluster-id |
knob-kafka-s3-host-url-style | URL 风格:path(endpoint/bucket/key)或 virtualhost(bucket.endpoint/key) | path |
knob-kafka-s3-disable-https | 设为 true 禁用 HTTPS,使用 HTTP 明文传输 | false |
tls-ca-file | 使用 HTTPS 访问 S3 时必须设置,指向系统 CA 证书包路径 | - |
knob-kafka-s3-auth-type | 认证方式:aksk(静态 Access Key / Secret Key) | aksk |
knob-kafka-s3-access-key | S3 Access Key(aksk 认证时必填) | - |
knob-kafka-s3-secret-key | S3 Secret Key(aksk 认证时必填) | - |
常见 CA 证书包路径:
- Debian / Ubuntu:
/etc/ssl/certs/ca-certificates.crt - RHEL / CentOS:
/etc/pki/tls/certs/ca-bundle.crt
各存储服务对 URL 风格的支持情况:
| 存储服务 | path | virtualhost |
|---|---|---|
| AWS S3 | 支持 | 支持 |
| 阿里云 OSS | 不支持 | 支持(唯一方式) |
| MinIO / 自建存储 | 支持 | 需 DNS 支持 |
注意
knob-kafka-s3-bucket 始终为必填项。使用 virtualhost 风格时,knob-kafka-s3-host 必须以 <bucket>. 为前缀;使用 path 风格时则不能包含 bucket 前缀。