官方给出了氪金教程,但是我只需要配置一个 emqx 的负载均衡。所以没有氪金。
nginx 已经支持 TCP 的负载均衡。 但不可以配置 在 http {} 中, 需要配置在 stream{} 中。
通过查看宝塔nginx 配置文件,发现 stream 模块已经加入。并得到 配置文件所在目录为
/www/server/panel/vhost/nginx/tcp
进入目录,创建文件 emqx-lb.conf
文件内容如下:
因为是内网环境,所以就没有 配置 ssl ,相关配置可以参考 emqx 官网。
upstream emqx_tcp_lb {
hash $remote_addr;
server 192.168.1.192:1883 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.203:1883 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.204:1883 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.205:1883 weight=1 max_fails=2 fail_timeout=30s;
}
upstream emqx_ws_lb {
hash $remote_addr;
server 192.168.1.192:8083 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.203:8083 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.204:8083 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.205:8083 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 1883;
proxy_protocol on; # 不填 emqx 获取不到真实 IP 地址
proxy_connect_timeout 360s;
proxy_timeout 360s;
proxy_pass emqx_tcp_lb;
proxy_buffer_size 3M;
tcp_nodelay on;
}
server {
listen 8083;
proxy_protocol on; # 不填 emqx 获取不到真实 IP 地址
proxy_connect_timeout 360s;
proxy_timeout 360s;
proxy_pass emqx_ws_lb;
proxy_buffer_size 3M;
tcp_nodelay on;
}
完成之后,记得重新加载 nginx 配置。
eqmx 打开代理配置。