HAProxy 是一个应用 C 语言编写的自在及凋谢源代码软件,其提供高可用性、负载平衡,以及基于 TCP 和 HTTP 的应用程序代理。本文将介绍如何基于 HAProxy 搭建 EMQ X。
筹备
软硬件版本
- Ubuntu 18.04
- EMQ X Broker v4.2.5
- HAProxy 2.2+
机器调配
- 172.16.239.107:HAProxy
- 172.16.239.108:EMQ X 节点 1
- 172.16.239.109:EMQ X 节点 2
装置
EMQX
参考 EMQ X Broker
wget https://www.emqx.io/downloads/broker/v4.2.5/emqx-ubuntu18.04-4.2.5-x86_64.zip
unzip emqx-ubuntu18.04-4.2.5-x86_64.zip
HAProxy
sudo apt-get update
sudo apt-get install software-properties-common -y
sudo add-apt-repository -y ppa:vbernat/haproxy-2.2
sudo apt-get update
sudo apt-get install -y haproxy=2.2.\*
配置
EMQX
批改 emqx/etc/emqx.conf
配置文件,另一台同理
## 批改节点名
node.name = emqx@172.16.239.108
## 批改集群策略为 static,无需手动增加节点了
cluster.discovery = static
## 所有集群节点
cluster.static.seeds = emqx@172.16.239.108, emqx@172.16.239.109
## 为了获取 IP 地址,须要设置 proxy_protocol
listener.tcp.external.proxy_protocol = on
HAProxy
批改 /etc/haproxy/haproxy.cfg
增加 TCP backend 配置
backend backend_emqx_tcp
mode tcp
balance roundrobin
server emqx_node_1 172.16.239.108:1883 check-send-proxy send-proxy-v2 check inter 10s fall 2 rise 5
server emqx_node_2 172.16.239.109:1883 check-send-proxy send-proxy-v2 check inter 10s fall 2 rise 5
增加 dashboard backend 配置
backend backend_emqx_dashboard
balance roundrobin
server emqx_node_1 172.16.239.108:18083 check
server emqx_node_2 172.16.239.109:18083 check
增加 TCP frontend 配置
frontend frontend_emqx_tcp
bind *:1883
option tcplog
mode tcp
default_backend backend_emqx_tcp
增加 dashboard frontend 配置
frontend frontend_emqx_dashboard
bind *:18083
option tcplog
mode tcp
default_backend backend_emqx_dashboard
运行
EMQX
$ ./bin/emqx start
## 查看集群状态
$ ./bin/emqx_ctl cluster status
Cluster status: #{running_nodes =>
['emqx@172.16.239.108','emqx@172.16.239.109'],
stopped_nodes => []}
HAProxy
$ sudo service haproxy start
此时便能够通过 18083
拜访 dashboard
通过 1883
连贯到集群,连贯状况能够在 dashboard 查看,或者在节点上执行命令
$ ./bin/emqx_ctl clients list
证书
如果须要 TLS 终结,先筹备好 emqx.key
和 emqx.crt
文件,而后合并生成 emqx.pem
文件
$ cat emqx.crt emqx.key > emqx.pem
而后增加以下配置即可
frontend frontend_emqx_tcp
bind *:8883 ssl crt /opt/certs/emqx.pem no-sslv3
option tcplog
mode tcp
default_backend backend_emqx_tcp
至此,咱们实现了基于 HAProxy 搭建 EMQ X 集群以及应用,HAProxy 更具体的应用参见 HAProxy Documentation。
版权申明:本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.cn/blog/emqx-haproxy