RobustMQ初体验
RobustMQ初体验
一开始疯狂踩坑, 一大原因是服务器是centos 7.9版本的, 有点太旧了, 后来改用ubuntu 24.04就很丝滑, 建议早日放弃老古董doge
进入RobustMQ v0.2.0-RELEASE下载合适的版本, 我的服务器是x86_64架构的, 所以下载Linux AMD64 (robustmq-v0.2.0-RELEASE-linux-amd64.tar.gz)这个版本, 上传到服务器上
安装以及基本功能
- 解压
1 | tar -xzf robustmq-v0.2.0-RELEASE-linux-amd64.tar.gz |
- quick start
1 | ./bin/robust-server start |
- 是否启动成功
1 | ./bin/robust-server status |
- 查看配置
1 | ./bin/robust-ctl cluster config get |
- 基本功能测试
1 | # Install mqttx client (if not already installed) |
测试成功, 结果如图:
- 查看前端
我们应该是有dist目录的, 有的话就有Web UI, 然后开放8080端口, 访问即可, 如图:
简单测试
这里是要外部安装mqttx cli测的, 之前的是在服务器上的基本功能测试
- 测试发布
1 | mqttx bench pub -h 服务器ip -p 1883 -u admin -P robustmq -c 1000 -im 1000 -t "test/baseline" -S 128B -q 0 -v |
我的服务器是4C4G3M的配置, 最大连接数945, 这里应该是被文件描述符限制住了连接数, 我们可以查询一下:
1 | ubuntu@VM-20-16-ubuntu:~$ ulimit -n |
我们修改连接符的限制, 设为无限大
1 | vim /etc/security/limits.conf |
关闭连接后重新连接, 再次查询:
1 | ubuntu@VM-20-16-ubuntu:~$ ulimit -n |
再次测试, 这时1000个连接就能随便达到了, 我们继续加码测试
1 | mqttx bench pub -h 服务器ip -p 1883 -u admin -P robustmq -c 100000 -im 1000 -t "test/baseline" -S 128B -q 0 -v |
峰值连接数为12903, 此时内存利用率约为77%, cpu利用率约为8%, 但很诡异的是一段时间后cpu利用率达到了99%, 此时大量连接中断正在发生重连, 服务器出现ECONNRESET 錯誤, 无法继续进行测试, 我的推测可能是心跳风暴导致的, 后续有空了再测一下
- 测试接收
mqttx bench sub -h 1.12.255.192 -p 1883 -u admin -P robustmq -c 10 -t “test/baseline” -q 0
2200-2600/s的接收速度, 可以算出这个接收速度和我的3Mbps的带宽是十分吻合的, 带宽就是瓶颈
踩坑过程(可不看)
一开始按照官网的Experience-MQTT的流程来, 服务器版本是CentOS 7.9
尝试快速启动
下载并解压二进制包
1 | # Download the latest version binary package (using v1.0.0 as an example) |
启动
1 | # Start Broker (using default configuration) |
发现没有这个目录, 检查发现改名了, 改成了robust-server, 然后接着启动
1 | ./bin/robust-server start |
发现还是不行, 结果是
1 | Config: /root/robustmq-v0.1.33-linux-amd64/bin/../config/server.toml |
进去查看日志内容, 发现缺了一些包:
1 | /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server) |
应该是CentOS 7.9这个版本有点低了, 于是决定自己编译
尝试自己编译项目
首先安装rust环境
1 | curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh |
可以换成阿里云的
1 | curl --proto '=https' --tlsv1.2 -sSf https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh |
如果页面出现:
1 | Rust is installed now. Great! |
表示已经安装成功
验证安装
1 | source ~/.cargo/env |
clone项目
1 | git clone https://github.com/robustmq/robustmq.git |
构建并运行
1 | cargo run --package cmd --bin broker-server |
报错, 缺少 libclang 这个库:
1 | error: failed to run custom build command for `zstd-sys v2.0.15+zstd.1.5.7` |
安装 Clang 和它的开发库:
1 | sudo yum install clang-devel |
依旧报错, 版本太旧了
1 | error: failed to run custom build command for `zstd-sys v2.0.15+zstd.1.5.7` |
准备升级
1 | sudo yum install centos-release-scl |
再次遇到报错, 无法连接到官方仓库:
1 | Loaded plugins: fastestmirror |
开始询问AI
1 | # 指向封存服务器 |
再次报错:
1 | [root@lavm-jatbzcwqtu robustmq]# sudo yum makecache |
经过一番查找发现[centos-sclo-sclo]
的baseurl 和 mirrorlist都被注释掉了
1 | [root@lavm-jatbzcwqtu robustmq]# sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-sclo.repo |
1 | [root@lavm-jatbzcwqtu robustmq]# grep -i 'centos-sclo-sclo' /etc/yum.repos.d/*.repo |
解决之后继续cargo run --package cmd --bin broker-server
, 又又又报错了, 还是那个问题:
1 | [root@lavm-jatbzcwqtu robustmq]# cargo run --package cmd --bin broker-server |
安装 protoc和llvm-toolset-7
1 | sudo yum install epel-release |
scl enable llvm-toolset-7 'cargo run --package cmd --bin broker-server’之后报错:
1 | error: failed to run custom build command for `prost-validate-types v0.2.7` |
后面决定直接换个服务器, 不折腾了😋