主题
RabbitMQ在Linux系统上的安装和部署
课程介绍
接下来我们学习RabbitMQ的安装部署。RabbitMQ是知名的消息队列系统,支持多种消息协议,用于异步处理、流量削峰等场景。Rocky Linux 9需要配置dnf仓库来安装RabbitMQ。安装后用systemctl start rabbitmq-server启动服务,默认监听5672端口。RabbitMQ依赖Erlang编程语言,安装时会自动安装。可以通过Web管理界面或命令行管理消息队列,是分布式系统中常用的消息中间件。
1. RabbitMQ简介
1. 1 什么是RabbitMQ
RabbitMQ是一款知名的开源消息队列系统,可以为企业提供消息的发布订阅、点对点传输等消息服务。
1. 2 RabbitMQ的主要功能
- 消息的发布和订阅
- 点对点消息传输
- 消息路由和过滤
- 消息持久化
- 高可用性和容错机制
- 负载均衡
1. 3 RabbitMQ的应用场景
- 异步处理:将耗时操作异步化,提高系统响应速度
- 应用解耦:降低系统间的直接依赖关系
- 流量削峰:平滑处理高并发请求
- 日志处理:收集和分发系统日志
- 分布式事务:确保分布式系统中的数据一致性
2. 安装前准备
2. 1 系统环境
- 操作系统:Rocky Linux 9
- 权限要求:需要root权限
2. 2 安装方式
- 使用dnf命令安装
- 需要手动配置dnf仓库(系统默认仓库版本较老)
- 依赖Erlang编程语言环境
3. 配置RabbitMQ仓库
3. 1 导入仓库密钥
bash
# 导入Erlang签名密钥
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
# 导入RabbitMQ签名密钥
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
# 导入EPEL仓库密钥
rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-73. 2 创建RabbitMQ仓库配置文件
3. 2.1 进入仓库配置目录
bash
cd /etc/dnf.repos.d/3. 2.2 创建rabbitmq.repo文件
bash
vi rabbitmq.repo在文件中添加以下内容:
ini
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/9/$basearch
gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq-server]
name=rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/9/$basearch
gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=3004. 安装RabbitMQ
4. 1 安装Erlang和RabbitMQ
bash
# 安装Erlang和RabbitMQ Server
dnf install -y erlang rabbitmq-server说明:安装过程会自动下载并安装Erlang、RabbitMQ及其依赖程序
5. 管理RabbitMQ服务
5. 1 查看RabbitMQ状态
bash
systemctl status rabbitmq-server5. 2 启动RabbitMQ服务
bash
systemctl start rabbitmq-server5. 3 设置RabbitMQ开机自启
bash
systemctl enable rabbitmq-server5. 4 停止RabbitMQ服务
bash
systemctl stop rabbitmq-server5. 5 重启RabbitMQ服务
bash
systemctl restart rabbitmq-server6. 防火墙配置
6. 1 方式一:关闭防火墙(仅适用于测试环境)
bash
# 停止防火墙服务
systemctl stop firewalld
# 禁用防火墙开机自启
systemctl disable firewalld6. 2 方式二:放行RabbitMQ端口(适用于生产环境)
bash
# 放行RabbitMQ主要端口
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=25672/tcp
# 重新加载防火墙规则
firewall-cmd --reload说明:
- 5672:RabbitMQ消息通信端口
- 15672:RabbitMQ Web管理控制台端口
- 25672:RabbitMQ集群通信端口
7. 启用RabbitMQ Web管理控制台
7. 1 启动Web管理插件
bash
rabbitmq-plugins enable rabbitmq_management7. 2 创建管理员用户
bash
# 创建用户名为admin,密码为yege666!的用户
rabbitmqctl add_user admin "yege666!"7. 3 配置用户权限
bash
# 授予admin用户所有资源的所有权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"7. 4 设置用户角色
bash
# 将admin用户设置为管理员角色
rabbitmqctl set_user_tags admin administrator8. 验证RabbitMQ安装
8. 1 通过Web管理控制台访问
在浏览器中访问RabbitMQ Web管理控制台:
http://[服务器IP]:15672使用创建的admin用户和密码登录(用户名:admin,密码:yege666!)
如果看到RabbitMQ管理控制台页面,表示安装成功
8. 2 验证RabbitMQ状态
bash
# 查看RabbitMQ服务状态
rabbitmqctl status预期输出:显示RabbitMQ的详细状态信息
9. 常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| dnf安装RabbitMQ失败 | 仓库配置错误 | 检查rabbitmq.repo文件内容是否正确,重新导入密钥 |
| RabbitMQ无法启动 | 端口被占用或配置错误 | 使用lsof -i:5672检查端口占用,查看错误日志/var/log/rabbitmq/rabbit@[主机名].log |
| 浏览器无法访问管理控制台 | 防火墙限制或Web插件未启用 | 配置防火墙规则或重新启用管理插件 |
| 无法登录管理控制台 | 用户名或密码错误 | 重新创建用户并配置权限 |
课程总结
这节课我们学了RabbitMQ的安装和部署。
安装步骤:
- 安装Erlang依赖(RabbitMQ用Erlang编写)
- 配置RabbitMQ仓库
dnf install rabbitmq-server- 安装RabbitMQsystemctl start rabbitmq-server- 启动服务systemctl enable rabbitmq-server- 开机自启
管理命令: rabbitmq-plugins enable rabbitmq_management - 启用管理插件 rabbitmqctl add_user 用户 密码 - 创建用户 rabbitmqctl set_user_tags 用户 administrator - 设置管理员权限
Web管理界面:
- 访问地址: http://服务器IP:15672
- 默认用户: guest/guest
- 生产环境记得创建新用户并删除guest
RabbitMQ是消息队列,支持多种消息协议,常用端口: 5672(客户端),15672(Web),25672(Erlang)
课后练习
- 基础练习:在Linux系统上成功安装RabbitMQ
- 进阶练习:
- 配置RabbitMQ开机自启
- 创建不同权限的用户
- 测试消息的发布和订阅功能
- 挑战练习:配置RabbitMQ集群环境