Skip to content

FreeMQTT plus 配置

FreeMQTT Plus 集群配置位于 ~/freemqtt-swarm-compose/conf.d 路径下。

配置文件 config.toml

配置文件 config.toml secret除外,多数项不需更改,采用默认设置即可。
此文件用于不使用 NGINX 作为前端负责均衡器的情形。

toml
[freemqtt]
# 通用配置
[freemqtt.common]
    # 用于生成客户端的 token 和 MQTT 客户端连接鉴权用的秘钥 
    # 必须为64位十六进制字符串(二进制256位秘钥)
    # 一定要注意保管,避免向外泄漏
    secret = "F593BDE387F7530CF0F35CC2DB763F755AB770E779C0FD0C3AB018E7439E2A3D"
    # 最大topic & topic filter 级别,默认 6
    maximum_topic_level = 6
    # 发布 FreeMQTT 统计信息间隔
    pub_sys_stat_interval = 15 # in seconds

    # HAProxy proxy protocol enable
    proxy_protocol = false

    # docker swarm enable
    docker_swarm = true

    # remote logging enable
    remote_logging_enable = false

    # ssl/tls enable
    # listen port: 8883
    ssl_port_enable = true

    # websocket ws enable
    # listen port: 8083
    ws_port_enable = true

    # weboskcet wss (ssl/tls) enable
    # listen port: 8084
    wss_port_enable = true

    # mqtt port 
    mqtt_port = 1883  

    # mqtt over ssl 
    mqtts_port = 8883

    # mqtt over webosket
    ws_port = 80

    # mqtt over ssl websocket
    wss_port = 443

    # b-node admin port
    bnode_admin_port = 9200

    # ssl/tls, wss  cert & key file
    freemqtt_cert = "./ssl/freemqtt.crt"
    freemqtt_key = "./ssl/freemqtt.key"

#  MQTT 5.0 属性配置
[freemqtt.properties]
    session_expiry_interval = 7200 # in second
    message_expiry_interval = 7200 # in second
    receive_maximum = 64
    maximum_packet_size = 2097152 # 2*1024*1024 = 2M bytes
    maximum_qos = 2
    retain_available = true
    topic_alias_maximum = 64
    wildcard_subscription_available = true
    subscription_identifiers_available = true
    shared_subscription_available = true
    server_keep_alive = 60 # in second
    response_information = "Welcome to FreeMQTT Broker."

# swarm a-node list
[freemqtt.anode]
list = [ 
    { nodeid='A1',  address='freemqtt_anode-1' },
    { nodeid='A2',  address='freemqtt_anode-2' },
    { nodeid='A3',  address='freemqtt_anode-3' },
]

# swarm b-node list
[freemqtt.bnode]
list = [ 
    { nodeid='B1',  address='freemqtt_bnode-1'},
    { nodeid='B2',  address='freemqtt_bnode-2'},
]

# swarm logging
[freemqtt.logging]
address = "freemqtt_logger" # docker swarm freemqtt logger service name
port = 9300
path = "./log/freemqtt.log"
#path = "console" # for out to console

maxim_size = 10485760 # 10M
level = 20 # logging.NOTSET = 0, logging.DEBUG = 10, logging.INFO = 20,  logging.WARNING = 30, logging.ERROR = 40, logging.CRITICAL = 50

配置文件 config-with-nginx.toml

此文件用于使用 NGINX 作为前端负责均衡器的情形。这里省略其内容。

更改 secret

在实际部署到生产环境时,为了安全,不建议使用 config.toml 中 secret 的默认值。

  • secret 是 256 bit, 即长度为64的十六进制的字符串。
  • 可以手动更改,但要保证长度为64个字符,字符是十六进制的字符(0-9 A-F)

亦可以用如下的命令随机生成 secret 值:

bash
$ sudo docker exec -it 91a1eabf896e /freemqttd/gen_secret
# 输出如下:
secret: ECE10149E6F5FC94C1289B4E3C923351B40038E82BE602E917CEA3C9EF79410D

其中 91a1eabf896e 为一个B-Node 容器 ID, 如何查看请参考前面快速部署章节。

更新 secret 后, FreeMQTT Plus 集群需重新启动并且客户端的token也需要重新生成。