概述:
EMQX 集群配置 的搭建有几种方式,现在我们是所说是有两种方式,一种是静态方式,一种是动态方式。
由于条件有限我们准备了两台虚拟机。
192.168.31.159 centOS7
192.168.31.93 centOS7
分别安装 emqx-4.4.3-otp24.1.5-3-el7-amd64.zip 解压
修改 etc/emqx.conf 文件
93 节点上
# 修改集群模式为 static cluster.discovery = static # 设置节点发现列表 cluster.static.seeds = emqx@192.168.31.93 ,emqx@192.168.31.159 # 设置节点名称,请注意,节点标识必须和上面节点发现列表中的一致,否则将无法实现集群节点发现 node.name = emqx@192.168.31.93
159 节点上
# 修改集群模式为 static cluster.discovery = static # 设置节点发现列表 cluster.static.seeds = emqx@192.168.31.93 ,emqx@192.168.31.159 # 设置节点名称,请注意,节点标识必须和上面节点发现列表中的一致,否则将无法实现集群节点发现 node.name = emqx@192.168.31.159
我们启动集群中的每个节点
emqx restart第二种实现 manual方式
修改配置文件
vim emqx/etc/emqx.conf EMQ X默认配置中启用了匿名认证 生产环境中请禁用匿名认证。 allow_anonymous = false 不允许匿名访问 node.name = emqx@192.168.31.93 allow_anonymous = false node.name = emqx@192.168.31.159
执行加入命令
在93上执行 93加入到159的集群 ./bin/emqx_ctl cluster join emqx@192.168.31.159 查看状态 ./bin/emqx_ctl cluster status
通过管理页面查看集群
验证集群发布与订阅在159 客户端连上,发送消息
在93 客户端连上,接受消息
这样就说明了无论你连接到那个服务节点,都可以进行数据的发送和接收,所以这样就完成了集群的部署,并验证集群的有效性。
nginx 代理配置集群搭建完后,我们需要一个提供一个外部的统一的入口。集群通常是部署在内网的,不具备外网 IP,即使外网 IP 可知,让客户端一次性保存所有节点的 IP 也是不现实的,因为节点可能动态横向扩展并。除此之外,我们需要平衡客户端的访问流量,也就是需要做负载均衡。
Nginx的安装与配置在159上安装nginx
安装nginx yum install -y nginx systemctl enable nginx systemctl start nginx 安装 tcp层的转发,通过stream实现的 yum install nginx-mod-stream -y配置 nginx 负载均衡
请注意,stream配置不能放到http内,即不能放到/etc/nginx/conf.d/,因为stream是通过tcp层转发,而不是http转发
stream {
# 轮询负载均衡配置
upstream emqx_cluster {
server 192.168.31.93:1883 weight=1;
server 192.168.31.159:1883 weight=1;
}
server {
# 监听 8884 端口
listen 8884;
# 反向代理到 emqx_cluster
proxy_pass emqx_cluster;
proxy_buffer_size 4k;
#ssl_handshake_timeout 15s;
# 证书配置
#ssl_certificate /etc/nginx/cert/nginx.pem;
#ssl_certificate_key /etc/nginx/cert/nginx.key;
}
}
创建两个客户端:
可以看到他们通过nginx 连过来两个客户端,平均分不到两个实例上。



