LB (负载均衡器) 负责分发设备的 MQTT 连接与消息到 EMQ X 集群,LB 提高 EMQ X 集群可用性、实现负载平衡以及动态扩容
部署架构推荐在 LB 终结 SSL 连接。设备与 LB 之间 TLS 安全连接,LB 与 EMQ X 之间普通 TCP 连接。这种部署模式下 EMQ X 单集群可轻松支持 100 万设备
一,websocket负载均衡
upstream tomcatserver1 {
server 192.168.78.131:8083 weight=1; #负载均衡的主机IP与端口 weight权重 代表分到资源的比例
server 192.168.78.130:8083 weight=1;
}
server {
listen 8083;
server_name 192.168.0.153;
# 转发websocket需要的设置
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver1;
}
二,tcp代理 配置负载均衡
必须是 nginx-1.9.0 以上版本(包括1.9.0)。该版本之后,增加了 stream module,可以实现tcp代理 配置负载均衡
stream{
upstream mqtt_servers {
zone tcp_servers 64k;
#hash $remote_addr;
server 192.168.78.131:1883 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.78.130:1883 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 1883;
#status_zone tcp_server;
proxy_pass mqtt_servers;
proxy_buffer_size 4k;
tcp_nodelay on;
}
}
http{
...
}
负载均衡的作用
将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量
1)down
表示单前的server暂时不参与负载
2)Weight
默认为1.weight越大,负载的权重就越大。
3)max_fails
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4)fail_timeout
max_fails 次失败后,暂停的时间。
5)Backup
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。