# emqx的集群部署以及压测工具
# 使用版本
- emqx-centos7-4.3.10-amd64.zip
# 搭建集群
集群架构
- LB是负载均衡,可以使用HAProxy /Nginx 负载均衡,目前使用nginx ,emqx的集群是两个及以上
具体实现
nginx的配置
版本在1.9.0及以上
stream { upstream stream_backend { zone tcp_servers 64k; #hash $remote_addr; server localhost|域名:1883 max_fails=2 fail_timeout=30s; server localhost|域名:1883 max_fails=2 fail_timeout=30s; } server { #listen 8883 ssl; status_zone tcp_server; proxy_pass stream_backend; proxy_buffer_size 4k; #ssl_handshake_timeout 15s; #ssl_certificate /etc/emqx/certs/cert.pem; #ssl_certificate_key /etc/emqx/certs/key.pem; } }
emqx的配置(/emqx/etc/emqx.conf)
#172.16.10.2为emqx服务部署机的ip地址 node.name = emqx@192.168.0.1 # manual 手动加入集群 # static 配置静态节点 # mcast 使用 UDP 多播的方式发现节点 # dns 使用 DNS A 记录的方式发现节点 # etcd 使用 etcd 发现节点 # k8s 使用 Kubernetes 发现节点 cluster.discovery=manual #当 cluster.discovery=static 配置以下固定节点,多个节点间使用逗号,分隔 cluster.static.seeds= emqx1@192.168.0.1,emqx2@192.168.0.2
#当emqx的配置文件中cluster.discovery=manual,需要使用emqx的命令将节点手动加入集群,命令如下 #查看当前集群的状态,在其中一台emqx的bin目录下,执行以下命令 bin/emqx_ctl cluster status #结果如下,说明当前emqx集群有2个节点 Cluster status: #{running_nodes => ['emqx@172.16.10.2','emqx@172.16.10.9'], stopped_nodes => []} #加入集群的命令emqx@172.16.10.9为需要加入的节点 bin/emqx_ctl cluster join emqx@172.16.10.9 #emqx的集群命令帮助 cluster join <Node> # Join the cluster 加入集群 cluster leave # Leave the cluster 自身离开集群 cluster force-leave <Node> # Force the node leave from cluster 将指定节点移出集群 cluster status # Cluster status 查看集群状态
# 压测工具
emqtt-bench
下载地址 https://github.com/emqx/emqtt-bench
使用命令
- pub 发布消息
- sub 订阅消息
- conn 测试连接数
使用简介
参数 简写 可选值 默认值 说明 --host -h - localhost 要连接的 MQTT 服务器地址 --port -p - 1883 MQTT 服务端口 --version -V 3 4 5 5 使用的 MQTT 协议版本 --count -c - 200 客户端总数 --startnumber -n - 0 客户端数量起始值 --interval -i - 10 每间隔多少时间创建一个客户端;单位:毫秒 --interval_of_msg -I - 1000 每间隔多少时间发送一个消息 --username -u - 无;非必选 客户端用户名 --password -P - 无;非必选 客户端密码 --topic -t - 无;必选 发布的主题;支持站位符: %c
:表示 ClientId%u
:表示 Username%i
:表示客户端的序列数--szie -s - 256 消息 Payload 的大小;单位:字节 --qos -q - 0 Qos 等级 --retain -r true false false 消息是否设置 Retain 标志 --keepalive -k - 300 客户端心跳时间 --clean -C true false true 是否以清除会话的方式建立连接 --ssl -S true false false 是否启用 SSL --certfile - - 无 客户端 SSL 证书 --keyfile - - 无 客户端 SSL 秘钥文件 --ws - true false false 是否以 Websocket 的方式建立连接 --ifaddr - - 无 指定客户端连接使用的本地网卡
← emqx-acl鉴权 emqx概要分享 →