WARNING: Default (insecure) Erlang cookie is in use.
WARNING: Configure node.cookie in /home/serein/emqx/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE
WARNING: NOTE: Use the same cookie for all nodes in the cluster.

翻译

第1句:EMQX 正在使用默认的 Erlang Cookie,这是一个不安全的配置

第2句:

  • /home/serein/emqx/etc/emqx.conf 文件中配置 node.cookie 参数

  • 通过环境变量 EMQX_NODE__COOKIE 设置 Cookie

第3句:如果你使用的是集群模式,所有节点必须使用相同的 Cookie,否则节点之间无法正常通信

我在下载tar.gz安装包之前,使用EMQX Apt 源安装过EMQX,我猜测可能两者有冲突,于是我根据网上的提示,卸载了使用EMQX Apt 源安装过的EMQX,然后,我再尝试运行emqx 5.8.4,但仍然出现上面的警告 

我尝试了网上现有的解决方法,均没有用

<1> 修改cookie。不会报警了,但是过一段时间后,会有如下报错【无效】

  • 错误: EMQX 5.1.6 使用节点名'emqx@127.0.0.1',120 次探测失败

  • 这个错误消息意味着:EMQX无法启动并连接到指定的节点

<2> 卸载emqx,重新安装【无效】

<3> 降低emqx的版本,试过5.8.4,5.1.6,4.4.19【无效】

上面的报错给了我启发,我在想:有没有可能是端口1883(MQTT 默认端口)被占用了,导致emqx启动失败

于是我查看了一下当前1883端口是否被占用

sudo netstat -tunlp | grep 1883

停止 mosquitto 服务

因为 mosquittoemqx 不能同时使用同一个端口,所以需要先停止 mosquitto 服务

  • 停止 mosquitto 服务

sudo systemctl stop mosquitto
  • 确认 mosquitto 是否已停止

sudo systemctl status mosquitto

查了一下,mosquitto 是一款实现消息推送协议 MQTT v3.1 的开源消息代理软件,其实也是跟MQTT相关的。【我记得我没有安装过,但是不知道为什么电脑上会有】

然后,我再尝试运行emqx 5.8.4,就成功了!

当然,如果你不喜欢每次启动emqx时,总是弹出黄色警告,可以随便修改一个cookie值,例如:emqxsecretcookie123

  • 修改路径:emqx/etc/emqx.conf
  • 参数名:cookie

结语】可能每个人碰到的是相同问题,但是中间过程不得而知,尝试别人的方法不一定管用,但是可以作为一种参考。

2024年1月23日-补充

大家在关闭服务后,可能会发现:电脑在下次重启之后,mosquitto这个服务又启动了。

解决方法:关闭开机自启动

sudo systemctl stop mosquitto			# 停止服务
sudo systemctl disable mosquitto		# 禁用服务的开机自启

可以重启电脑,验证一下是否生效

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐