关于EMQ5.0.x版本后集群节点问题

错误报告

环境

  • EMQX 版本:5.0.x
  • 操作系统版本:centos 7.6
    有关注到从5.x版本开始,EMQ集群区分了core节点跟Replicant节点,压测方案也是3个core节点带着36个Replicant节点组成的集群的,也没有看到具体的文档介绍这两者的区别,部署集群的时候是否两个节点都需要用到?

可以参考下这篇文档:部署架构和集群要求

你好,我看了下架构部署,有了一定的了解,还有点疑问,就是我们如何确定replicant节点是属于哪个core节点的,我自己在配置cluster.core_nodes这个参数是有报错,不知道这个数组里面怎么填值,麻烦指点下

方便提供一下你的配置吗?

node {
name = “emqx@10.187.4.135
cookie = “emqxsecretcookie”
data_dir = “data”
db_role = replicant
}

log {
file_handlers.default {
level = warning
file = “log/emqx.log”
}
}

cluster {
name = emqxcl
discovery_strategy = manual
core_nodes = [“emqx@10.187.129.229”]
}

listeners.tcp.default {
bind = “0.0.0.0:1883”
max_connections = 1024000
}

listeners.ssl.default {
bind = “0.0.0.0:8883”
max_connections = 512000
ssl_options {
keyfile = “etc/certs/key.pem”
certfile = “etc/certs/cert.pem”
cacertfile = “etc/certs/cacert.pem”
}
}

core_nodes 是字符串类型,直接配置成 “emqx@10.187.128.229”, 或者 “emqx@10.187.128.229,emqx@xxx.xxx.xx.xxx” 就可以了

好的,我试下,core_nodes这个配置需要将所有core节点配置进去吗?


复制节点启动时候报错了

你用的 EMQX 版本是多少?

5.0.14的

非常抱歉,这是一个已知 Bug,已经在 5.0.15 中修复了。

好的,我升级到5.0.15版本再试下

另外如果你已经配置了 static、DNS 这些集群自动发现策略,cluster.core_nodes 这个配置项其实就可以不用配置了,只有手动加入集群时才需要配置这个。我们后续会更新下文档。

Replicant 节点会按照一定的策略选择要连接的 Core 节点,并且每次只会连接到一个 Core 节点上。关于如何确定 Replicant 节点属于哪个 Core 节点,目前我们还没有开放对应的接口。

好的,那手动加入集群cluster.core_nodes这个参数应该是配置整个集群的core节点了,replicant节点需要知道所有的core节点,不然当复制的core节点挂掉了就无法切到其他core节点了。不知道这样理解对不对

是的


更新到了5.0.16启动replicant节点的时候还是有报错,4370这个端口是emqx启动占用的

我也遇到这个问题,这个4370端口是否可以在哪个配置项修改,我这边由于也是要跑两个emqx服务。也是卡在这个端口占用的问题。

你这是启动了多个 EMQX 实例?

可以看下 防火墙设置 这篇文档。

只启动了一个,后来将replicant节点集群模式由manual改成static方式连接后就可以连上了