08-Linux部署RabbitMQ

Linux部署RabbitMQ

简介

RabbitMQ是一个开源的消息代理软件,也被称为面向消息的中间件。它实现了高级消息队列协议(AMQP),并且是用Erlang语言编写的。RabbitMQ服务器主要用于处理消息队列,这些队列遵循FIFO(先进先出)原则。

在分布式系统中,RabbitMQ常常作为一种通信方式,使得各个系统之间可以异步地、解耦地进行通信。生产者将消息发送到RabbitMQ,而消费者则从RabbitMQ中取出消息进行处理。这种通信方式允许发送方(生产者)和接收方(消费者)不需要知道对方的存在,提高了系统的灵活性和可扩展性。

RabbitMQ的优势包括:

  1. 应用解耦:通过将系统间的通信解耦,可以提高系统的容错性和可维护性。
  2. 异步提速:允许将耗时的操作异步处理,提高应用程序的响应时间和吞吐量。
  3. 削峰填谷:在请求增加时,可以平滑系统负载,提高系统稳定性。

然而,使用RabbitMQ也可能带来一些劣势,如可能降低系统的可用性和复杂度增加,以及可能的一致性问题。

RabbitMQ支持多种主要的编程语言,包括Java、Python、Ruby、PHP、C/C++等,提供了丰富的客户端库来与代理接口进行通信。此外,RabbitMQ还支持集群和故障转移,这些特性使得它在构建可靠、高性能的分布式系统时非常有用。

总的来说,RabbitMQ是一个强大且灵活的消息队列系统,它可以帮助开发者构建高性能、可扩展、可靠的分布式系统。

RabbitMQ在企业开发中十分常见,下面演示快速搭建RabbitMQ环境。

RabbitMQ官网:https://www.rabbitmq.com/

安装

rabbitmq在yum仓库中的版本比较老,所以我们需要手动构建yum仓库

  1. 准备yum仓库

    • 安装密钥
    bash 复制代码
    rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
    rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
    rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
    • 准备仓库文件
    bash 复制代码
    vim /etc/yum.repos.d/rabbitmq.repo
    • 填入如下内容
    bash 复制代码
    ##
    ## Zero dependency Erlang
    ##
    
    [rabbitmq_erlang]
    name=rabbitmq_erlang
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
    repo_gpgcheck=1
    gpgcheck=1
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
           https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    
    [rabbitmq_erlang-source]
    name=rabbitmq_erlang-source
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
           https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    
    ##
    ## RabbitMQ server
    ##
    
    [rabbitmq_server]
    name=rabbitmq_server
    baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
           https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    
    [rabbitmq_server-source]
    name=rabbitmq_server-source
    baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
  2. 安装RabbitMQ(需root权限)

    bash 复制代码
    yum install erlang rabbitmq-server -y
  3. 启动(需root权限)

    bash 复制代码
    # 使用systemctl管控,服务名:rabbitmq-server
    systemctl enable rabbitmq-server		# 开机自启
    systemctl disable rabbitmq-server		# 关闭开机自启
    systemctl start rabbitmq-server			# 启动
    systemctl stop rabbitmq-server			# 关闭
    systemctl status rabbitmq-server		# 查看状态
  4. 放行防火墙,RabbitMQ使用5672、15672、25672 3个端口

    bash 复制代码
    # 方式1(推荐),关闭防火墙
    systemctl stop firewalld		# 关闭
    systemctl disable firewalld		# 关闭开机自启
    
    # 方式2,放行5672 25672端口
    firewall-cmd --add-port=5672/tcp --permanent		# 放行tcp规则下的5672端口,永久生效
    firewall-cmd --add-port=15672/tcp --permanent		# 放行tcp规则下的15672端口,永久生效
    firewall-cmd --add-port=25672/tcp --permanent		# 放行tcp规则下的25672端口,永久生效
    firewall-cmd --reload								# 重新加载防火墙规则
  5. 启动RabbitMQ的WEB管理控制台

    bash 复制代码
    rabbitmq-plugins enable rabbitmq_management
  6. 添加admin用户,并赋予权限

    bash 复制代码
    #账号admin 密码bowen
    rabbitmqctl add_user admin 'bowen'
    rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"
    rabbitmqctl set_user_tags admin administrator
  7. 浏览器打开管理控制台

    http://192.168.149.130:15672/![image-20240227190137295](https://file.jishuzhan.net/article/1763032501405618177/241d7554060184aa6ab2c0ad744ebb63.webp)

  8. 创建用户bowen密码为123456

    bash 复制代码
    rabbitmqctl add_user bowen 123456
  9. 将bowen用户提升为管理员权限

    bash 复制代码
    rabbitmqctl set_user_tags bowen administrator
  10. 查看用户权限

    bash 复制代码
    rabbitmqctl list_users
  11. 删除用户

    bash 复制代码
    #示例删除bowen用户
    rabbitmqctl delete_user bowen
  12. 登录查看

    至此,RabbitMQ已经安装完成了。

相关推荐
舰长1151 分钟前
linux系统服务器加固1、中风险 未设置登录失败处理功能和登录连接超时处理功能。2、中风险 未限制默认账户的访问权限。3、中风险 未实现管理用户的权限分离。
linux·运维·服务器
mounter62539 分钟前
Linux 7.0 重磅更新:详解 nullfs 如何重塑根文件系统挂载与内核线程隔离
linux·运维·服务器·kernel
色空大师1 小时前
【网站搭建实操(一)环境部署】
java·linux·数据库·mysql·网站搭建
A.A呐2 小时前
【Linux第十三章】缓冲区
linux·服务器
想唱rap3 小时前
Linux线程
java·linux·运维·服务器·开发语言·mysql
cccccc语言我来了3 小时前
Linux(9)操作系统
android·java·linux
Lueeee.3 小时前
Linux驱动中为什么既有 sysfs,又有字符设备?以 DHT11 驱动为例彻底讲透
linux·驱动开发
xlp666hub4 小时前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux
zzzsde4 小时前
【Linux】Ext文件系统(1)
linux·运维·服务器
iPadiPhone5 小时前
分布式架构的“润滑剂”:RabbitMQ 核心原理与大厂面试避坑指南
分布式·后端·面试·架构·rabbitmq