haproxy建立emqx mqtt集群

如图,目前我用rabbitmq插件做的mqtt集群,理论上也适用于emqx,18年那会看emqx集群是收费的,现在集群已经不收费了,所以今天尝试用haproxy建立emqx集群,确认是可用的。

官方emqx集群分四类

1 静态集群 2 DNS集群 3 组播集群 4 ETCD集群

静态集群配置

安装emqx过程比较简单,略过,直接进入集群配置,配置文件修改三行即可

配置文件 /etc/emqx.conf
保证node.cookie和集群名称相同,修改node.name,cluster.discovery,cluster.static.seeds
#nodename是标准格式,不要随意命名,name@ip,保证name不同
#148服务器如下
node.name = emqx148@192.168.0.148
cluster.discovery = static
cluster.static.seeds = emqx148@192.168.0.148,emqx150@192.168.0.150
#150服务器如下
node.name = emqx150@192.168.0.150
cluster.discovery = static
cluster.static.seeds = emqx148@192.168.0.148,emqx150@192.168.0.150
查询状态。以下是ok。
$ ./bin/emqx_ctl cluster status
Cluster status: [{running_nodes,['emqx148@192.168.0.148','emqx150@192.168.0.150']}]

emqx集群上层还需要Haproxy代理一下,下图是rabbitmq简单集群,emqx基本上一样的。

Haproxy安装

1. 下载环境+工具依赖包

yum install gcc vim wget

2.下载 haproxy

wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.1.2.tar.gz/sha512/929d244a67f93337e3c791b1a29f9643ac288acdf0090dc7a05c72caf61c3b04ef376b84737351f0c54d58bca66ed8af18faa20ec3adc97067313732e0dfcd7d/haproxy-2.1.2.tar.gz

3,在ha1和ha2两台机器安装

4,解压

tar -zxf haproxy-2.1.2.tar.gz -C /app/

5,编译

#进入指定的解压目录

cd /app/haproxy-2.1.2/

#对haproxy进行源码编译

make TARGET=linux31 PREFIX=/app/haproxy

#安装 编译好的haproxy 并指定安装目录(根据公司要求)

make install PREFIX=/app/haproxy

#创建haproxy目录放置配置文件

mkdir /etc/haproxy

#赋权

groupadd -r -g 149 haproxy

useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy

#创建haproxy配置文件

touch /etc/haproxy/haproxy.cfg

Haproxy配置

PS:haproxy 配置文件haproxy.cfg详解

vim /etc/haproxy/haproxy.cfg

给120服务器将此配置文件同步到/etc/haproxy目录下面

记得要修改一下haproxy的ip地址

6,创建haproxy配置文件 touch /etc/haproxy/haproxy.cfg #Haproxy配置 PS:haproxy 配置文件haproxy.cfg详解 vim /etc/haproxy/haproxy.cfg

 

添加内容如下:

 

#logging options

global

log 127.0.0.1 local0 info #日志输出配置,所有日志都记录在本机,通过local0输出

maxconn 5120

chroot /app/haproxy #haproxy 安装路径

uid 99 #所属运行的用户uid

gid 99 #所属运行的用户组

daemon #后台运行

quiet

nbproc 20

pidfile /var/run/haproxy.pid #指定PID文件路径

 

defaults

log global

#使用4层代理模式,"mode http"为7层代理模式

mode tcp

#if you set mode to tcp,then you nust change tcplog into httplog

option tcplog

option dontlognull

retries 3

option redispatch

maxconn 2000

#连接超时时间

timeout connect 5s

#客户端空闲超时时间为 60秒 则HA 发起重连机制

timeout client 60s

#服务器端连接超时时间为 15秒 则HA 发起重连机制

timeout server 15s

 

#front-end IP for consumers and producters

listen rabbitmq_cluster

bind 0.0.0.0:5672 #绑定协议端口

#配置TCP模式

#所处理的类别,默认采用http模式,可配置成tcp作4层消息转发

mode tcp

#balance url_param userid

#balance url_param session_id check_post 64

#balance hdr(User-Agent)

#balance hdr(host)

#balance hdr(Host) use_domain_only

#balance rdp-cookie

#balance leastconn

#balance source //ip

#简单的轮询

balance roundrobin

#负载均衡策略

#rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制

server mqtt-01 192.168.0.115:1883 check inter 5000 rise 2 fall 2

server mqtt-02 192.168.0.117:1883 check inter 5000 rise 2 fall 2

server mqtt-03 192.168.0.118:1883 check inter 5000 rise 2 fall 2

#配置haproxy web监控,查看统计信息

listen stats

bind 192.168.0.119:8100 #前端浏览器中查看统计的WEB界面地址

mode http

option httplog #日志类别,采用httplog

stats enable

stats auth admin:123456 #设置查看统计的账号密码

#设置haproxy监控地址为http://localhost:8100/rabbitmq-stats

stats uri /rabbitmq-stats

stats refresh 5s #5s刷新一次

 

注意:lisener可以配置多个,例如上面的listen rabbitmq_cluster,可以再配置mqtt的1883,webmqtt的15675等等

 

#将 119 服务器 上的haproxy文件同步至 120 服务器 scp haproxy.cfg root@192.168.0.120:/etc/haproxy

 

7,启动haproxy

/app/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg 注: -f 指定启动的配置文件

PS:访问如下地址可以对rmq节点进行监控:

http://192.168.0.119:8100/rabbitmq-stats

此刻就可以享受mqtt代理服务了,用mqtt客户端工具链接119这台服务,一切ok。

简单集群不能百分之百保证不丢数据,所以需要考虑haproxy+keepalive来做复杂集群。

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值