yum仓库安装rabbitmq

官方文档地址:https://www.rabbitmq.com/docs/4.0/install-rpm

右上角可以选择文档版本,注意适用的操作系统版本。有两种安装方式,一种是下载rpm文件进行安装,另一种是配置yum源进行安装,这里采用第二种安装方式。

0、导入key

## primary RabbitMQ signing key
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc'
## modern Erlang repository
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key'
## RabbitMQ server repository
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key'

1、配置yum仓库

# vim /etc/yum.repos.d/rabbitmq.repo

# In /etc/yum.repos.d/rabbitmq.repo

##
## Zero dependency Erlang RPM
##

[modern-erlang]
name=modern-erlang-el9
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch
        https://yum2.rabbitmq.com/erlang/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/noarch
        https://yum2.rabbitmq.com/erlang/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-source]
name=modern-erlang-el9-source
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/SRPMS
        https://yum2.rabbitmq.com/erlang/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1


##
## RabbitMQ Server
##

[rabbitmq-el9]
name=rabbitmq-el9
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/$basearch
        https://yum1.rabbitmq.com/rabbitmq/el/9/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-noarch]
name=rabbitmq-el9-noarch
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
        https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-source]
name=rabbitmq-el9-source
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/SRPMS
        https://yum1.rabbitmq.com/rabbitmq/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

2、刷新yum缓存并执行安装

yum makecache
yum install -y socat logrotate 
yum install -y erlang rabbitmq-server --nogpgcheck

3、启动rabbitmq

启动服务
systemctl start rabbitmq-server
开机自启
systemctl enable rabbitmq-server
停止服务
systemctl stop rabbitmq-server
查看服务状态
systemctl status rabbitmq-server

yum clean metadata
yum clean dbcache
yum clean all

4、配置 Web 界面管理

RabbitMQ 提供给了我们一个 Web 形式的管理界面,默认是没有的,需要进行安装。

1、安装 Web 管理插件,然后重启服务

安装命令 (启用插件)
rabbitmq-plugins enable rabbitmq_management

重启服务
systemctl restart rabbitmq-server

查看插件列表
rabbitmq-plugins list

默认插件安装路径:/usr/lib/rabbitmq/lib/rabbitmq_server-4.1.0/plugins

2、添加远程登录的账户

RabbitMQ 有一个默认账号和密码都是 guest ,但是只能在 localhost 下访问

新增用户 用户名和密码都是 admin
rabbitmqctl add_user admin admin

删除默认的guest用户
rabbitmqctl delete_user guest

查看用户
rabbitmqctl list_users

查看权限
rabbitmqctl list_permissions

3、为远程登录的账户添加权限

administrator(超级管理员):登录控制台、查看所有信息、操作用户、操作策略
monitoring(监控者): 登录控制台、查看所有信息
policymaker(策略制定者): 登录控制台、指定策略
managment(普通管理员): 登录控制台

设置用户分配操作权限,admin 用户的权限为 administrator
rabbitmqctl set_user_tags admin administrator

补充: RabbitMQ的角色分类:

Administrator:超级管理员,(学习经常使用)
最高权限
可以创建和删除 virtual hosts
可以查看,创建、删除users
查看、创建permissions
关闭所有用户的connections

Monitoring:相当于普通管理员
包含management所有权限
罗列出所有的virtual hosts,包括不能登录的virtual hosts
查看其他用户的connections和channels信息
查看节点级别的数据如clustering何memory使用情况
查看所有的virtual hosts的全局统计信息

Policymaker:
包含management所有权限
查看和创建和删除自己的virtual hosts所属的policies和parameters信息

management:
查看自己相关节点信息
列出自己可以通过AMQP登入的虚拟机
查看自己的虚拟机节点 virtual hosts的queues,exchanges和bingdings信息,查看和关闭自己的channels和connections信息
查看有关自己的虚拟机节点 virtual hosts统计信息,包括其他用户在这个节点 virtual hosts中的活动信息

none:不能访问mamanement plugin

4、为用户添加资源权限

因为 admin 已经是超级管理员权限了,所以其实不分配资源权限也可以,会默认去做。

命令格式为: set_permissions [-p ]

这里即为 admin 用户开启 配置文件和读写的权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

5、访问 Linux IP:15672

例如http://IP:15672/ ,输入刚才设置好的用户名密码 admin

5、nginx代理访问rabbitmq

官方文档地址:https://www.rabbitmq.com/docs/management#nginx

1、代理业务端口5672

mq和生产者都在内网服务器上;消费者在外网。Nginx 通常处理的是 HTTP 请求,而 RabbitMQ 则基于 AMQP 或其他消息协议工作。需要进行协议的转换和适配。nginx支持stream模块, 使用stream模块,Nginx不会解析AMQP协议,因此可以完整的转换协议。

检查当前 Nginx 是否已支持 Stream 模块

# nginx -V 2>&1 | grep -o with-stream
输出:
with-stream
with-stream
with-stream

注:输出with-stream代表支持。如果不是需要对nginx进行配置。

nginx部署:nginx.conf

# stream{}模块跟http{}模块平级
stream {
	upstream stream_rabbitmq_backend {    
		server 127.0.0.1:5672;  
	}
	server {            
		listen 10000;            
		proxy_pass stream_rabbitmq_backend;    
	}
}

外网消费者访问地址:http://ip:10000

2、代理web访问端口15672

第一种情况,访问根/路径

location / {
    allow  xxx.xxx.xxx.xxx;
    deny   all;
    proxy_pass http://rabbitmq-host:15672;
}

第一种情况,访问二级/rabbitmq路径

注意:在退出登录的时候会报错,无法访问到/路径

location ~* /rabbitmq/(.*) {
    allow  xxx.xxx.xxx.xxx;
    deny   all;
    rewrite ^/rabbitmq/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:15672;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

6、安装延迟插件

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange

插件目录:/usr/lib/rabbitmq/lib/rabbitmq_server-4.1.0/plugins

/usr/lib/rabbitmq/lib/rabbitmq_server-4.1.0/plugins/rabbitmq_delayed_message_exchange-4.1.0.ez

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

systemctl restart rabbitmq-server.service

rabbitmq-plugins list

7、rabbitmq重启服务后用户丢失解决办法

查看rabbitmq数据存储路径:/var/lib/rabbitmq/mnesia, 会发现文件名增加两个,新的数据会采用这两文件夹,由于丢失旧数据也就丢失原来添加的用户

解决办法:添加rabbitmq固定节点名字,保证数据文件不变,从而添加新用户,重启服务也不会丢失用户

# 查看当前RabbitMQ已注册用户
rabbitmqctl list_users

# 查看rabbitmq用户数据(当前hostname作为node节点保存数据)
ll /var/lib/rabbitmq/mnesia/

# 修改主机名为test,并重启rabbitmq服务
hostnamectl set-hostname test

# 出现的问题
主机名已改为test,发现rabbitmq的用户admin丢失了,同时数据存放目录新增了跟test相关的一些文件
ll /var/lib/rabbitmq/mnesia/

启动rabbitmq, 访问页面会出现弹窗,admin用户无法登录,再次查看已注册的用户,发现没有admin了

# 修改rabbitmq-env.conf,添加rabbitmq固定节点名字,保证数据文件不变,主机名设为:info
echo 'NODENAME=rabbit@info' | tee -a /etc/rabbitmq/rabbitmq-env.conf

# 添加hosts
echo '127.0.0.1 info' | tee -a /etc/hosts

# 重启服务
systemctl restart rabbitmq-server

修改hostname测试rabbitmq存储节点是否有新增,测试过程发现文件不会新增,保持不变,用户信息也没丢失

由于修改系统hostname未重启rabbitmq导致的,只有设置节点名字,就不需要怕修改hostname,通常情况下也不会修改过hostname

posted @ 2025-04-10 17:38  哈喽哈喽111111  阅读(132)  评论(0)    收藏  举报