目录
- [1 简介](#1 简介)
- [2 安装](#2 安装)
-
- [2.1 Ubuntu22.04 apt安装最新rabbitmq](#2.1 Ubuntu22.04 apt安装最新rabbitmq)
- [2.2 Docker安装RabbitMQ - Ubuntu22.04](#2.2 Docker安装RabbitMQ - Ubuntu22.04)
1 简介
RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息,转发消息,具有高可用高可扩性,易用性等特征。
1.1特性及好处
好处:
- 开源
- 平台和供应商无关性------作为实现了具有平台和供应商无关性的高级消息队列协议(Advanced Message Queuing Protocol,AMQP)规范的一种消息代理服务器,RabbitMQ为几乎全部开发语言提供了客户端工具并能运行在所有主流计算机平台上。
- 轻量级------RabbitMQ是轻量级的
- 面向大多数现代语言的客户端开发库------RabbitMQ可以实现不同的开发语言之间进行跨操作系统和环境的数据共享
- 灵活控制消息通信的平衡性------主要体现在消息吞吐量和性能上
- 高延迟性环境插件------RabbitMQ既支持在低延迟环境下的消息通信机制,也提供了针对如互联网的高延迟环境下的插件。这就使得RabbitMQ可以在同一个本地网络或者在跨越多个数据中心的共享互联(federated)机制下构建消息集群。
- 多层安全------在RabbitMQ的多个层次中包含着安全性设计。客户端连接可以通过使用SSL通信和客户端证书验证以提高安全性。在虚拟主机(virtual-host)层可以管理用户访问,从而在较高层次实现消息和资源的隔离。另外,通过配置可以使用正则表达式模式匹配的方式控制从队列中读取消息和把消息写入交换器的过程。最后,使用插件可与类似LDAP的外部认证系统进行集成。
RabbitMQ中的两个最基本的特性:实现语言(Erlang)和所基于的模型(高级消息队列模型)
2 安装
参考:https://www.rabbitmq.com/install-debian.html
2.1 Ubuntu22.04 apt安装最新rabbitmq
RabbitMQ需要Erlang/OTP才能运行。标准Debian和Ubuntu存储库中的Erlang/OTP包可能过时,并且不受现代RabbitMQ版本的支持。
最新的Erlang/OTP版本系列可以从许多替代的apt存储库中获得。此处使用的是cloudsmith中的rabbitmq apt库
1、一键部署
bash
vim install_cloudsmith.sh
#!/bin/sh
# 安装基本依赖项
# apt-transport-https:启用apt HTTPS传输
# 为了让apt能够从Cloudsmith下载RabbitMQ和Erlang包, apt-transport-https包必须安装:
sudo apt-get install curl gnupg apt-transport-https -y
# 添加key
## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
# 配置RabbitMQ源
# 此处需要注意:jammy对应的是ubuntu22.04,不同系统的版本号不同,根据自己系统进行配置:具体对应关系在方图中
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
# 更新源
## Update package indices
sudo apt-get update -y
# 安装Erlang包
# RabbitMQ是采用 Erlang语言开发的,所以系统环境必须提供 Erlang环境,需要是安装 Erlang
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
# 安装rabbitmq
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
不同系统的版本号不同,根据需要进行配置:
2、验证
bash
# 可以查看Erlang版本
erl -v
######输出#####
Erlang/OTP 24 [erts-12.2.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [jit]
Eshell V12.2.1 (abort with ^G)
1>
#
systemctl status rabbitmq-server.service
3、RabbitMQWeb管理界面及授权操作
默认情况下,rabbitmq没有安装web端的客户端软件,需要安装才可以生效
bash
# 打开RabbitMQWeb管理界面插件
rabbitmq-plugins enable rabbitmq_management
# 管理界面的默认端口是:15672
# 启动之后直接访问:ip:port
######## 以下是输出内容
Enabling plugins on node rabbit@con02:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@con02...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
rabbitmqrabbitmq有一个默认的账号密码guest,但该情况仅限于本机localhost进行访问,所以需要添加一个远程登录的用户
4、添加远程用户
bash
# 添加用户
# rabbitmqctl add_user 用户名 密码
rabbitmqctl add_user admin 12345
# 设置用户角色,分配操作权限
# rabbitmqctl set_user_tags 用户名 角色
rabbitmqctl set_user_tags admin administrator
# 为用户添加资源权限(授予访问虚拟机根节点的所有权限)
# rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
#角色有四种:
# administrator
# monToring
# policymaker
# managment
此处创建一个admin用户,角色为 administrator,拥有所有权限
创建完成之后即可用该用户进行前台登录
5、一些常用命令
bash
# 添加用户
rabbitmqctl add_user 用户名 密码
# 设置用户角色,分配操作权限
rabbitmqctl set_user_tags 用户名 角色
# 为用户添加资源权限(授予访问虚拟机根节点的所有权限)
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
# 修改密码
rabbitmqctl change_ password 用户名 新密码
# 删除用户
rabbitmqctl delete_user 用户名
# 查看用户清单
rabbitmqctl list_users
# 查看帮助
rabbitmqctl help set_permissions
2.2 Docker安装RabbitMQ - Ubuntu22.04
1、安装docker
bash
# 更新
sudo apt update
# 安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 运行下列命令添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 官方库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新 Ubuntu 源列表:
sudo apt update
# 安装指定版本的docker
# 检查可以安装的docker版本库
apt-cache madison docker-ce
# 挑选上面列表中的任何版本进行安装
sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io -yq
# 查看docker是否运行
systemctl status docker
# 查看版本
docker version
# 添加镜像加速
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
systemctl status docker
2、启动rabbitmq
bash
# latest RabbitMQ 3.12
docker run -itd --rm --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=12345 -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management
# -e RABBITMQ_DEFAULT_USER:设置环境变量,用户名
# -e RABBITMQ_DEFAULT_PASS:设置环境变量,密码
# -p hostPort:containerdPort:主机端口:容器端口
登录前台页面:ip:15672,用户名/密码:admin/12345