RabbitMQ(一):最新版rabbitmq安装

目录

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

相关推荐
Linux运维老纪3 分钟前
分布式存储的技术选型之HDFS、Ceph、MinIO对比
大数据·分布式·ceph·hdfs·云原生·云计算·运维开发
问道飞鱼14 分钟前
【Springboot知识】Springboot结合redis实现分布式锁
spring boot·redis·分布式
快乐就好ya1 小时前
xxl-job分布式定时任务
java·分布式·spring cloud·springboot
小韩学长yyds7 小时前
从入门到精通:RabbitMQ的深度探索与实战应用
分布式·rabbitmq
问道飞鱼13 小时前
【分布式知识】Spring Cloud Gateway实现跨集群应用访问
分布式·eureka·gateway
Shinobi_Jack13 小时前
c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)
分布式·kafka
S-X-S14 小时前
RabbitMQ的消息可靠性保证
分布式·rabbitmq
小林想被监督学习19 小时前
RabbitMQ 在实际应用时要注意的问题
分布式·rabbitmq
S-X-S19 小时前
项目集成RabbitMQ
分布式·rabbitmq
乙卯年QAQ19 小时前
【RabbitMq】RabbitMq高级特性-延迟消息
java·rabbitmq·java-rabbitmq