【一起学Rust | 进阶篇 | RMQTT库】RMQTT消息服务器——安装与集群配置

简介: 【一起学Rust | 进阶篇 | RMQTT库】RMQTT消息服务器——安装与集群配置



RMQTT Broker 简介

RMQTT 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序,可以在单个服务节点上处理百万级别的并发客户端。

RMQTT 目前支持的操作系统:

  • Linux
  • macOS
  • Windows Server

安装

安装分为zip解压安装和源码编译安装,我们分开介绍。

ZIP 压缩包安装(Linux、MacOS、Windows)

需从 GitHub Release 页面获取相应操作系统的二进制软件包。

  1. GitHub Release 下载zip包。
$ wget "https://github.com/rmqtt/rmqtt/releases/download/v0.2.3/rmqtt-0.2.3-x86_64-unknown-linux-musl.zip"
  1. 解压从GitHub Release 下载的zip包。
$ unzip rmqtt-0.2.3-x86_64-unknown-linux-musl.zip -d /app/
  1. 修改权限
$ cd /app/rmqtt
$ chmod +x bin/rmqttd
  1. 启动服务
$ cd /app/rmqtt
$ sh start.sh
  1. 查看服务
$ netstat -tlnp|grep 1883
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      3312/./bin/rmqttd
tcp        0      0 0.0.0.0:11883           0.0.0.0:*               LISTEN      3312/./bin/rmqttd

创建static集群

基于RAFT分布式一致性算法的集群
  1. 准备三个服务节点,将压缩包解压到程序目录,比如:/app/rmqtt
  2. 修改配置文件(rmqtt.toml)
  • 设置节点ID, node.id值设置为:1、2或3
  • 配置RPC服务端监听端口,rpc.server_addr = “0.0.0.0:5363”
  • 服务启动时同时启动"rmqtt-cluster-raft"插件
$ cd /app/rmqtt
$ vi etc/rmqtt.toml
##--------------------------------------------------------------------
## Node
##--------------------------------------------------------------------
#Node id
node.id = 1
##--------------------------------------------------------------------
## RPC
##--------------------------------------------------------------------
rpc.server_addr = "0.0.0.0:5363"
##--------------------------------------------------------------------
## Plugins
##--------------------------------------------------------------------
#Plug in configuration file directory
plugins.dir = "./etc/plugins"
#Plug in started by default, when the mqtt server is started
plugins.default_startups = [
    "rmqtt-cluster-raft"
#    "rmqtt-auth-http",
#    "rmqtt-web-hook"
]
  1. 修改插件配置
$ vi etc/plugins/rmqtt-cluster-raft.toml
##--------------------------------------------------------------------
## rmqtt-cluster-raft
##--------------------------------------------------------------------
#grpc message type
message_type = 198
#Node GRPC service address list
node_grpc_addrs = ["1@10.0.2.11:5363", "2@10.0.2.12:5363", "3@10.0.2.13:5363"]
#Raft peer address list
raft_peer_addrs = ["1@10.0.2.11:6363", "2@10.0.2.12:6363", "3@10.0.2.13:6363"]
  1. 修改权限&启动服务
$ cd /app/rmqtt
$ chmod +x bin/rmqttd
$ sh start.sh

源码编译安装

安装rust编译环境

以Centos7为例,如果编译环境已经存在跳过此过程。注意:工具链需要1.56及之后版本,1.59及之后版本如果报连接错误需要升级系统开发环境。

  1. 安装 Rustup
    先打开 Rustup 的官网:https://rustup.rs ,然后根据提示下载或运行命令。
    Linux 下执行:
$ curl https://sh.rustup.rs -sSf | sh

执行source $HOME/.cargo/env 让环境变量生效

$ source $HOME/.cargo/env
  1. 配置crate.io镜像

可以在$HOME/.cargo/下建立一个config文件,加入如下配置:

$ vi $HOME/.cargo/config
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
[source.rustcc]
registry = "git://crates.rustcc.cn/crates.io-index"
[net]
git-fetch-with-cli = true

如果tuna也太慢可以使用sjtu或ustc替换重试

  1. 安装openssl开发包
    确保已经安装了openssl的开发包,如果已经安装跳过
    For example, libssl-dev on Ubuntu or openssl-devel on Fedora.

CentOS:

$ yum install openssl-devel -y

Ubuntu:

$ apt install pkg-config -y
$ apt-get install libssl-dev -y
编译
  1. 获取源码
$ git clone https://github.com/rmqtt/rmqtt.git
  1. 切换到最近的 Tag
$ cd rmqtt
$ git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
  1. 构建
$ cargo build --release
启动RMQTT Broker
  1. 复制程序和配置文件
$ mkdir -p /app/rmqtt/bin && mkdir -p /app/rmqtt/etc/plugins
$ cp target/release/rmqttd /app/rmqtt/bin/
$ cp rmqtt.toml /app/rmqtt/etc/
$ cp rmqtt-plugins/*.toml /app/rmqtt/etc/plugins/
$ cp rmqtt-bin/rmqtt.pem  /app/rmqtt/etc/
$ cp rmqtt-bin/rmqtt.key  /app/rmqtt/etc/
  1. 修改配置(rmqtt.toml)
  • 将plugins.dir = “rmqtt-plugins/” 改为 plugins.dir = “/app/rmqtt/etc/plugins”
  • 根据需要打开插件,如果启用插件,可在/etc/plugins/下修改插件配置
  • 如果需要启动TLS,可修改listener.tls.external配置
vi /app/rmqtt/etc/rmqtt.toml
##--------------------------------------------------------------------
## Plugins
##--------------------------------------------------------------------
#Plug in configuration file directory
plugins.dir = "/app/rmqtt/etc/plugins"
#Plug in started by default, when the mqtt server is started
plugins.default_startups = [
    #    "rmqtt-cluster-raft"
    #    "rmqtt-cluster-broadcast",
    #    "rmqtt-auth-http",
    #    "rmqtt-web-hook"
]
##--------------------------------------------------------------------
## MQTT/TLS - External TLS Listener for MQTT Protocol
listener.tls.external.addr = "0.0.0.0:8883"
listener.tls.external.cert = "/app/rmqtt/etc/rmqtt.pem"
listener.tls.external.key = "/app/rmqtt/etc/rmqtt.key"
  1. 启动服务
$ cd /app/rmqtt
./bin/rmqttd "./etc/rmqtt.toml"
解决编译失败问题

如果使用1.59版及之后工具链,可能会存在依赖库版本太低导致链接失败问题,解决办法:

  • 使用1.58版工具链
#安装1.58版本工具链
$ rustup install 1.58
#将当前工具链切换到1.58
$ rustup default 1.58
#重新编译
$ cargo build --release
相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
5月前
|
弹性计算 ice
阿里云4核8G云服务器配置价格:热门ECS实例及CPU处理器型号说明
阿里云2025年4核8G服务器配置价格汇总,涵盖经济型e实例、计算型c9i等热门ECS实例,CPU含Intel Xeon及AMD EPYC系列,月费159元起,年付低至1578元,按小时计费0.45元起,实际购买享折扣优惠。
1522 1
|
5月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
514 11
|
5月前
|
存储 弹性计算 网络协议
超详细的阿里云服务器购买流程,ECS自定义购买配置教程
本文详细图解阿里云ECS服务器自定义购买全流程,涵盖付费模式、地域选择、网络配置、实例规格、镜像、存储、安全组及登录设置等核心步骤,助您轻松掌握专业级云服务器搭建方法。
|
5月前
|
存储 弹性计算 监控
阿里云渠道商:如何挑选阿里云服务器配置?
本文详解通用型、计算型、内存型等实例适用场景,结合性能评估与成本优化策略,助力用户按需选择。以日均1万访问企业网站为例,2核4G+3M带宽月费约200元,性价比高。合理配置更省钱。
|
5月前
|
弹性计算
阿里云ECS云服务器8核16G配置收费价格,多种ECS实例CPU及费用清单
阿里云8核16G云服务器价格因实例类型而异。计算型c9i约743元/月,一年6450元(7折);通用算力型u1仅673元/月,一年4225元(5.1折)。实际价格享时长折扣,详情见ECS官网。
|
Rust 安全 Java
探索Rust语言的并发编程模型
探索Rust语言的并发编程模型
407 2
|
Rust 安全 区块链
探索Rust语言:系统编程的新选择
【10月更文挑战第27天】Rust语言以其安全性、性能和并发性在系统编程领域受到广泛关注。本文介绍了Rust的核心特性,如内存安全、高性能和强大的并发模型,以及开发技巧和实用工具,展示了Rust如何改变系统编程的面貌,并展望了其在WebAssembly、区块链和嵌入式系统等领域的未来应用。
|
Rust 安全 编译器
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第26天】Rust语言诞生于2006年,由Mozilla公司的Graydon Hoare发起。作为一门系统编程语言,Rust专注于安全和高性能。通过所有权系统和生命周期管理,Rust在编译期就能消除内存泄漏等问题,适用于操作系统、嵌入式系统等高可靠性场景。
1310 2