EMQX v4.0.0安装及组建集群、设置负载均衡

准备工作:操作系统ubuntu 16.04,虚拟机VMware Workstation 12 Pro

 

一、安装EMQX

1、打开EMQ首页:https://www.emqx.io/cn/

 

2、选择产品 -> EMQ X Broker

EMQX v4.0.0安装及组建集群、设置负载均衡_第1张图片

EMQX v4.0.0安装及组建集群、设置负载均衡_第2张图片

EMQX v4.0.0安装及组建集群、设置负载均衡_第3张图片

3、在ubuntu上安装v4.0.0版本,选择相应的下拉列表,在下载按钮下会出现zip包的下载地址,复制该地址;

EMQX v4.0.0安装及组建集群、设置负载均衡_第4张图片

4、在虚拟机上选择编辑 -> 粘贴,将EMQ包地址复制到ubuntu中。

EMQX v4.0.0安装及组建集群、设置负载均衡_第5张图片

5、开始下载EMQX v4.0.0 zip包

EMQX v4.0.0安装及组建集群、设置负载均衡_第6张图片

6、使用unzip命令解压程序包

        unzip emqx-ubuntu16.04-v4.0.0.zip

 

7、启动 EMQ X Broker(进入emqx文件夹)

./bin/emqx start
emqx 4.0.0 is started successfully!

 

8、查看EMQ X Broker状态

./bin/emqx_ctl status
Node '[email protected]' is started
emqx v4.0.0 is running

        

通过浏览器,使用地址http://ubuntu系统IP:18083/,进入Dshboard界面查看EMQX运行状态(默认用户:admin,密码:public)

EMQX v4.0.0安装及组建集群、设置负载均衡_第7张图片

此时已经可以进行MQTT消息发布订阅了!(此处可以有掌声)

 

9、停止EMQ X Broker

./bin/emqx stop
ok

 

10、开启MQTT身份认证Username 认证

1)通过Dashboard直接启用插件

EMQX v4.0.0安装及组建集群、设置负载均衡_第8张图片

或执行./bin/emqx_ctl plugins load emq_auth_username

 

2)关闭允许匿名用户登录(etc/emqx.conf

EMQX v4.0.0安装及组建集群、设置负载均衡_第9张图片

allow_anonymous = true,改为false,保存退出

 

3)设置用户名密码

方法一:

etc/plugins/emqx_auth_username.conf中可修改密码加密方式以及预设认证数据,但预设在文件中的认证数据在配置文件中使用了明文密码,所以基于安全性与可维护性考虑可以忽略掉;

EMQX v4.0.0安装及组建集群、设置负载均衡_第10张图片

方法二:

使用命令行./bin/emqx_ctl users add test 123456添加用户test,密码为123456

./bin/emqx_ctl users del test 删除用户test

./bin/emqx_ctl users list 查询用户列表)

方法三:

    使用HTTP API管理认证数据:

    请求方式:Post方式

地址:http://IP地址:8081/api/v4/auth_username/

EMQX v4.0.0安装及组建集群、设置负载均衡_第11张图片

这里要注意下EMQXAPI使用Basic Auth的认证方式,要在http头中放入用户名、密码,开始的时候没注意到这个,在坑里转了半天!

然后。。。。添加用户、密码,这里用的JSON格式

EMQX v4.0.0安装及组建集群、设置负载均衡_第12张图片

    添加成功返回"code": 0

GET方式 api/v4/auth_username 查看所有用户)

 

GET方式 api/v4/auth_username/test 查看用户test)

 

PUT方式 api/v4/auth_username/test 修改用户)
 
DELETE方式 api/v4/auth_username/test 删除用户)
 

4)权限配置

默认配置中ACL是开放授权的,即授权结果为忽略(ignore允许客户端通过授权。

通过 etc/emqx.conf 中的 ACL 配置可以更改该属性为deny,即用户未授权时不允许进行消息发布订阅:

# etc/emqx.conf
 
## ACL 未匹配时默认授权
## Value: allow | deny
acl_nomatch = allow

EMQX v4.0.0安装及组建集群、设置负载均衡_第13张图片

内置 ACL 通过文件设置规则,使用上足够简单轻量,适用于规则数量可预测、无变动需求或变动较小的项目。

方法一:

       修改ACL 规则文件etc/acl.confEMQX加载先后顺序貌似从下向上)

EMQX v4.0.0安装及组建集群、设置负载均衡_第14张图片

 acl.conf 修改完成后,并不会自动加载至 EMQ X 系统。需要手动执行:

./bin/emqx_ctl acl reload

 

二、创建集群

首先,把虚拟机复制一份,在VM中打开。

EMQ X 集群中的节点通过节点名互相访问,所以需要在emqx/etc/emqx.conf文件中设置正确的节点名。节点名的格式是name@hosthost可以是 IP 地址或者 FQDN

EMQX v4.0.0安装及组建集群、设置负载均衡_第15张图片

修改节点名称如:

节点一:[email protected]

节点二:[email protected]

 

EMQ X 使用cookie来确认同一个集群中的节点。同一个集群中的节点必须使用相同的cookie。在编辑配置文件 emqx/etc/emqx.conf修改cookie

node.cookie = emqxsecretcookie

 

手动集群方式是 EMQ X 的默认集群方式。如果需要修改集群方式,在配置文件emqx/etc/emqx.conf中修改:

cluster.discovery = manual

 

在任意独立节点上执行 cluster join 后,该节点会被加入到集群中,在80系统的节点上添加:

     ./bin/emqx_ctl cluster join [email protected]

或在81系统的节点上添加:

     ./bin/emqx_ctl cluster join [email protected]

 

在节点被成功的加入到集群后,系统会返回以下提示:

Join the cluster successfully.
Cluster status: [{running_nodes,['[email protected]','[email protected]']}]

 

从集群中移除节点 EMQ X 提供两种方式从集群中移除一个节点:

  • leave: 需要移除的节点主动退出集群。在该节点上执行以下命令即可退出集群:
  • $ ./bin/emqx_ctl cluster leave
  •  
  • remove: 从集群的其他节点移除一个节点。在集群的其他节点上执行以下命令即可移除该节点。本例在 s1 节点上执行以下命令把 s2 节点移除出集群:
  • $ ./bin/emqx_ctl cluster remove [email protected]

 

查询集群状态 在集群中的任意节点上使用emqx_ctl工具的 cluster status 命令可以查询目前集群的状态:

$ ./bin/emqx_ctl cluster status

 

Cluster status: [{running_nodes,['[email protected]','[email protected]']}]

 

三、使用负载均衡LB

使用HAProxyNginx 作为 LB 部署 EMQ X 集群。这里用的HAProxy做为负载均衡:

1、安装HAProxy

       sudo apt-get install haproxy

2、编辑配置文件

       sudo vim /etc/haproxy/haproxy.cfg

EMQX v4.0.0安装及组建集群、设置负载均衡_第16张图片

3、运行haproxy:

/usr/sbin/haproxy –f /etc/haproxy/haproxy.cfg

4、设置开机运行

sudo vim /etc/rc.local,在文档最后添加上面的运行语句就OK了。

 

 

花了三天时间,终于搞定,写下来免得忘记了~后续再做深入研究,哈哈!

 

你可能感兴趣的:(ubuntu,MQTT)