抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

RabbitMQ安装

Centos原生安装

切换到ROOT 用户

以root用户安装

1
su - root

下载安装Erlang

安装基础工具

如果已经安装了基础工具就不需要在安装了

1
yum install -y wget
安装epel扩展包
1
yum install -y epel-release

安装erlang-solutions仓库
1
2
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
安装Erlang环境

安装erlang环境

1
yum install -y erlang

这个地方安装软件比较多需要稍等片刻

安装RabbitMQ

查找下载地址

https://github.com/rabbitmq/rabbitmq-server/tags地址找到合适的稳定版本

image-20220624151531474

点进去选择合适的rpm包进行下载,因为我们安装的erlang版本是el8,所以需要选择el的安装包

image-20220624151707856

下载安装包

将选择的地址下载到linux服务器,并进行安装

1
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.5/rabbitmq-server-3.10.5-1.el8.noarch.rpm

有时候不好在线下载可以使用工具先下载到本地在进行安装

image-20210623095941186

安装RabbitMQ
1
yum install -y rabbitmq-server-3.10.5-1.el8.noarch.rpm

image-20210623100005502

管理RabbitMQ

设置hosts映射

如果需要设置以下host的映射,防止启动后执行客户端报错

查看主机名

执行hostname命令查看当前的主机名

1
hostname

image-20220624143617290

设置host

hostname加入到/etc/hosts的映射文件

1
vi /etc/hosts

将刚才打印的hostname配置进去

image-20220624150857309

启动RabbitMQ
1
service rabbitmq-server start

查看RabbitMQ状态
1
service rabbitmq-server status

开启管理控制台

启用管理插件
1
rabbitmq-plugins enable rabbitmq_management

重启RabbitMQ
1
service rabbitmq-server restart

访问管理控制台

可在虚拟机浏览器中检查能否访问管理控制台

1
curl http://localhost:15672/

出现如下界面说明控制台已经启动

防火墙开启端口

现在还不能外部访问 需要开启防火墙

1
2
3
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --reload

浏览器访问控制台

访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest

注意:系统缺省的guest用户是不能进行远程登录的,除非另行配置相关参数。

到此为止已经可以访问到管理控制台页面了 但是guest用户还不能进行访问需要添加相关用户

添加用户
1
2
3
rabbitmqctl add_user root root                     # 创建 用户及密码
rabbitmqctl set_permissions -p / root ".*" ".*" ".*" # 设置 用户权限
rabbitmqctl set_user_tags root administrator # 设置用户角色

使用ROOT用户登录

删除guest用户

为了系统安全删除guest默认用户

1
rabbitmqctl delete_user guest

卸载RabbitMQ

1
2
3
4
5
6
7
8
9
10
service rabbitmq-server stop
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
yum list | grep erlang
yum -y remove erlang-*
yum remove erlang.x86_64
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
yum remove epel-release
rm -rf /var/cache/yum/x86_64/6/epel/

Docker安装RabbitMQ

这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。

获查询镜像

1
docker search rabbitmq:management
1
2
3
4
5
[root@localhost ~]# docker search rabbitmq:management
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/macintoshplus/rabbitmq-management Based on rabbitmq:management whit python a... 1 [OK]
docker.io docker.io/transmitsms/rabbitmq-sharded Fork of rabbitmq:management with sharded_e... 0
[root@localhost ~]#

获取镜像

1
docker pull rabbitmq:management

运行镜像

1
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

防火墙开启端口

firewall 防火墙

现在还不能外部访问 需要开启防火墙

1
2
3
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --reload
iptables防火墙
1
2
3
4
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
service iptables save
service iptables restart

访问管理界面

访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest

使用guest 用户登录

到这里就完成安装部署了。

添加用户

1
2
3
4
docker exec -ti rabbitmq /bin/bash						# 登录docker容器
rabbitmqctl add_user root root # 创建 用户及密码
rabbitmqctl set_permissions -p / root ".*" ".*" ".*" # 设置 用户权限
rabbitmqctl set_user_tags root administrator # 设置用户角色

RabbitMQ用户管理

用户管理

用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。

新增一个用户
1
rabbitmqctl  add_user  Username  Password
删除一个用户
1
rabbitmqctl delete_user Username
修改用户的密码
1
rabbitmqctl change_password Username Newpassword
查看当前用户列表
1
rabbitmqctl list_users

用户角色

按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

  • 创建和删除virtual hosts
  • 查看、创建和删除users
  • 查看创建和删除permissions
  • 关闭其他用户的connections
监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

  • 查看列出所有virtual hosts,包括他们不能登录的virtual hosts
  • 查看其他用户的connections和channels
  • 查看节点级别的数据如clustering和memory使用情况
  • 查看真正的关于所有virtual hosts的全局的统计信息

策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

  • 查看、创建和删除自己的virtual hosts所属的policies和parameters

与administrator的对比,administrator能看到这些内容

普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

  • 可以通过AMQP登入的virtual hosts
  • 可以查看自己的virtual hosts中的queues、exchanges 和 bindings\
  • 可以查看和关闭自己的 channels 和 connections
  • 可以查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动
其他(none)

无法登陆管理控制台,通常就是普通的生产者和消费者。

该角色不能访问management plugin,通常就是普通的生产者和消费者

​ 了解了这些后,就可以根据需要给不同的用户设置不同的角色,以便按需管理。

命令格式

设置用户角色的命令为:

1
rabbitmqctl set_user_tags User Tag
参数介绍
  • User为用户名
  • Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。

也可以给同一用户设置多个角色,例如

1
rabbitmqctl set_user_tags hncscwc monitoring policymaker

用户权限

用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

​ 例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中”How permissions work”部分。

设置用户权限
1
rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP
查看(指定hostpath)所有用户的权限信息
1
rabbitmqctl  list_permissions  [-p  VHostPath]
查看指定用户的权限信息
1
rabbitmqctl  list_user_permissions  User
清除用户的权限信息
1
rabbitmqctl  clear_permissions  [-p VHostPath]  User

RabbitMQ管理

启动和关闭RabbitMQ

  • 启动: rabbitmq-server

  • 后台运行: rabbitmq-server -detached

  • 停止: rabbitmqctl stop

获取服务器状态信息

  • 检查消息节点是否正常:rabbitmqctl status

管理虚拟主机

​ 在[AMQP及RabbitMQ概论]中,我们就介绍过虚拟主机,可以将众多客户端进行区分,又可以避免队列和交换器的命名冲突。

这里我们可以利用rabbitmqctl list_vhosts来查看所有的虚拟主机

当然我们也可以使用 rabbitmqctl add_vhost xxx 来新增虚拟主机如下

查看队列、交换器、绑定关系

  • 查看队列:rabbitmqctl list_queues

  • 查看交换器:rabbitmqctl list_exchanges

  • 查看绑定关系:rabbitmqctl list_bindings

评论