cluster 命令
cluster 命令可以管理由多个 EMQ X 节点(进程)组成的集群:
命令 | 描述 |
---|---|
cluster join <Node> | 加入集群 |
cluster leave | 离开集群 |
cluster force-leave <Node> | 从集群删除节点 |
cluster status | 查询集群状态 |
示例:
为更好地展示 cluster 命令,我们先在本机启动两个节点并组成集群,为避免端口冲突,我们对 emqx2 节点的监听端口做出了调整,例如 MQTT/TCP 监听端口由默认的 1883 改为了 2883,详情请参见 配置说明 与 配置项。
启动 emqx1 :
$ cd emqx1 && ./bin/emqx start
启动 emqx2 :
$ cd emqx2 && ./bin/emqx start
使用 cluster join <Node>
将两个节点组成集群:
$ cd emqx2 && ./bin/emqx_ctl cluster join emqx1@127.0.0.1
Join the cluster successfully.
Cluster status: [{running_nodes,['emqx1@127.0.0.1','emqx2@127.0.0.1']}]
任意节点目录下查询集群状态:
$ ./bin/emqx_ctl cluster status
Cluster status: [{running_nodes,['emqx2@127.0.0.1','emqx1@127.0.0.1']}]
集群消息路由测试: MQTT 命令行工具使用由 EMQ X 团队开发的 emqtt 客户端。
# emqx1 节点(1883 端口)订阅主题 x
$ ./bin/emqtt sub -t x -q 1 -p 1883
Client emqtt-a7de8fffbe2fbeb2fadb sent CONNECT
Client emqtt-a7de8fffbe2fbeb2fadb subscribed to x
# 向 emqx2 节点(2883 端口 )发布消息
$ ./bin/emqtt pub -t x -q 1 -p 2883 --payload hello
Client emqtt-0898fa447676e17479a5 sent CONNECT
Client emqtt-0898fa447676e17479a5 sent PUBLISH (Q1, R0, D0, Topic=x, Payload=...(5 bytes))
Client emqtt-0898fa447676e17479a5 sent DISCONNECT
# emqx1 节点(1883 端口)收到消息
$ ./bin/emqtt sub -t x -q 1 -p 1883
hello
emqx2 节点离开集群:
$ cd emqx2 && ./bin/emqx_ctl cluster leave
强制 emqx2 节点离开集群,需要在集群下的目标节点以外的节点上进行操作:
$ cd emqx1 && ./bin/emqx_ctl cluster force-leave emqx2@127.0.0.1
注意,EMQ X 不支持一个已经在一个集群中的节点加入另外一个集群,因为这会导致两个集群数据不一致,但支持加入过集群的节点在离开该集群后加入另一个集群。