EMQX伪集群部署
前提
集群部署参考:https://www.emqx.io/docs/zh/v4.4/getting-started/cluster.html#%E8%8A%82%E7%82%B9%E5%8F%91%E7%8E%B0%E4%B8%8E%E8%87%AA%E5%8A%A8%E9%9B%86%E7%BE%A4
hostname | ip |
---|---|
host01 | 192.168.100.101 |
host02 | 192.168.100.102 |
host03 | 192.168.100.103 |
安装 EMQX
因为服务器都是centos7的,也为了以后给实施能部署方便,因此采用压缩包安装
压缩包安装
下载地址:https://www.emqx.com/zh/try?product=broker
然后我们选择我们对应的版本信息,然后下载压缩包即可,下载完成后进行解压即可,
unzip emqx-centos7-4.3.15-amd64.zip
添加到全局环境变量(可选)
export EMQX_HOME=/usr/local/src/emqx
echo "PATH=\$PATH:$EMQX_HOME/bin" > /etc/profile.d/emqx.sh
chmod +x /etc/profile.d/emqx.sh
环境变量生效即可:source /etc/profile
启停命令使用
启动:emqx start
停止:emqx stop
重启:emqx restart
详情:https://www.emqx.io/docs/zh/v4.4/getting-started/command-line.html
开机自启动
echo "source /etc/profile && cd /usr/local/src/emqx/bin && sudo ./emqx start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
占用以下端口
EMQX 默认开启的 MQTT 服务 TCP 端口:
端口 | 说明 |
---|---|
1883 | MQTT 协议端口 |
8883 | MQTT/SSL 端口 |
8083 | MQTT/WebSocket 端口 |
8084 | MQTT/WebSocket/SSL 端口 |
8081 | 管理 API 端口 |
18083 | Dashboard 端口 |
EMQX 节点集群使用的 TCP 端口:
端口 | 说明 |
---|---|
4369 | 集群节点发现端口 (EPMD 模式) |
4370 | 集群节点发现端口 |
5370 | 集群节点 PRC 通道 |
EMQX 集群配置
static 集群
static 集群是通过预先存储在各节点的 EMQX 节点的节点列表来实现集群的发现,配置方法较为简单,我们到 192.168.100.101
的节点配置文件,
# 配置文件在安装目录下的 etc/emqx.conf
vi /usr/local/src/emqx/etc/emqx.conf
修改文件内容如下(我为了快捷,直接sed)
# 修改集群模式为 static
# cluster.discovery = static
sed -i "s/cluster.discovery = manual/cluster.discovery = static/g" emqx.conf
# 设置节点发现列表
# cluster.static.seeds = emqx@192.168.100.101,emqx@192.168.100.102,emqx@192.168.100.103
sed -i "s/## cluster.static.seeds = emqx1@127.0.0.1,emqx2@127.0.0.1/cluster.static.seeds = emqx@192.168.100.101,emqx@192.168.100.102,emqx@192.168.100.103/g" emqx.conf
# 设置节点名称,请注意,节点标识必须和上面节点发现列表中的一致,否则将无法实现集群节点发现
# node.name = emqx@192.168.100.101
sed -i "s/node.name = emqx@127.0.0.1/node.name = emqx@192.168.100.101/g" emqx.conf
192.168.100.102
和192.168.100.103
配置文件一样,区别在于node.name
# 102
# node.name = emqx@192.168.100.102
sed -i "s/node.name = emqx@127.0.0.1/node.name = emqx@192.168.100.102/g" emqx.conf
# 103
# node.name = emqx@192.168.100.103
sed -i "s/node.name = emqx@127.0.0.1/node.name = emqx@192.168.100.103/g" emqx.conf
现在让我们启动集群中的每个节点,
emqx restart
进入控制台,看看效果如何
可以看到在不同的节点上,监控界面显示的节点数如图所示,说明集群已经启动。
验证集群发布与订阅
可使用 MQTTX 工具对 集群进行消息发送测试
配置 Nginx 网关
官方推荐配置LB的负载高可用,但需求暂时没说需要高可用...