EMQX+nginx集群负载均衡

集群负载均衡

负载均衡是用于均衡多个网络组件的负载,从而优化资源的使用,避免由于组件过载造成故障。负载均衡虽然不是集群中必备组件,但是能给集群带来一些肥肠有用的特性,例如在 EMQX 集群中:

  • 均衡 EMQX 的负载,避免出现单节点过载的情况;
  • 简化客户端配置,客户端只需连接到负载均衡器上,无需关心集群内部伸缩变化;
  • TLS/SSL 终结,减轻 EMQX 集群的负担;
  • 提高安全性,有了负载均衡在集群前端,能够通过设置组织不需要的流量,保护 EMQX 集群免受恶意攻击。

1. 准备工作
两台服务器
ip:10.0.0.57
ip:10.0.0.59
集群搭建教程看这里

2.启动 proxy protocol
如果EMQX集群部署在 HAproxy 或 nginx 后,且需要拿到客户端真实的源 IP 地址与端口,则需要在EMQX对应监听器打开 proxy protocol 配置,以1883监听器为例,在 /etc/emqx/emqx.conf 中找到监听器配置并添加 proxy protocol 配置项:

listeners.tcp.default {
  bind = "0.0.0.0:1883"
  max_connections = 1024000

  proxy_protocol = true
}

3. nginx下载(nginx装在两台服务器任意一台即可)

yum install openssl
yum install zlib
yum install pcre
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx

4.修改nginx配置文件

vim /etc/nginx/nginx.conf
#添加如下配置
# 配置tcp 要使用nginx的stream服务节点
    stream {
        # mqtt tcp连接配置
        upstream stream_backend {
        zone tcp_servers 64k;
        # 如果emqx broker是集群部署的,必须按照mqtt客户端的ip分发到集群中指定的emqx broker服务器保持长连接
        hash $remote_addr;
        server 10.0.0.57:1883 max_fails=2 fail_timeout=30s weight=1;
        server 10.0.0.59:1883 max_fails=2 fail_timeout=30s weight=1;
        }
    # mqtt tcp连接
    server {
        # 监听端口
        listen 8884;
        # 反向代理地址
        proxy_pass stream_backend;
        proxy_buffer_size 4k;
    }
    }

5.启动服务

getenforce
setenforce 0   #关闭selinux
systemctl start nginx.service  #启动
systemctl stop nginx.service   #停止
systemctl status nginx.service   #查看状态
nginx -t    #conf文件自检
nginx -s reload    #重新加载配置文件

6.打开mqttx测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图可以看到负载均衡把四个客户端分别连接到了两台服务器上。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值