RabbitMQ安装
Centos原生安装
切换到ROOT 用户
以root用户安装
1 | su - root |
下载安装Erlang
安装基础工具
如果已经安装了基础工具就不需要在安装了
1 | yum install -y wget |
安装epel扩展包
1 | yum install -y epel-release |
安装erlang-solutions仓库
1 | wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm |
安装Erlang环境
安装erlang环境
1 | yum install -y erlang |
这个地方安装软件比较多需要稍等片刻
安装RabbitMQ
查找下载地址
到
https://github.com/rabbitmq/rabbitmq-server/tags
地址找到合适的稳定版本
点进去选择合适的rpm包进行下载,因为我们安装的erlang版本是el8,所以需要选择el的安装包
下载安装包
将选择的地址下载到linux服务器,并进行安装
1 | wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.5/rabbitmq-server-3.10.5-1.el8.noarch.rpm |
有时候不好在线下载可以使用工具先下载到本地在进行安装
安装RabbitMQ
1 | yum install -y rabbitmq-server-3.10.5-1.el8.noarch.rpm |
管理RabbitMQ
设置hosts映射
如果需要设置以下host的映射,防止启动后执行客户端报错
查看主机名
执行
hostname
命令查看当前的主机名
1 | hostname |
设置host
将
hostname
加入到/etc/hosts
的映射文件
1 | vi /etc/hosts |
将刚才打印的
hostname
配置进去
启动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 | firewall-cmd --permanent --add-port=15672/tcp |
浏览器访问控制台
访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest
注意:系统缺省的guest用户是不能进行远程登录的,除非另行配置相关参数。
到此为止已经可以访问到管理控制台页面了 但是guest用户还不能进行访问需要添加相关用户
添加用户
1 | rabbitmqctl add_user root root # 创建 用户及密码 |
使用ROOT用户登录
删除guest用户
为了系统安全删除guest默认用户
1 | rabbitmqctl delete_user guest |
卸载RabbitMQ
1 | service rabbitmq-server stop |
Docker安装RabbitMQ
这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。
获查询镜像
1 | docker search rabbitmq:management |
1 | [root@localhost ~]# docker search rabbitmq:management |
获取镜像
1 | docker pull rabbitmq:management |
运行镜像
1 | docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management |
防火墙开启端口
firewall 防火墙
现在还不能外部访问 需要开启防火墙
1 | firewall-cmd --permanent --add-port=15672/tcp |
iptables防火墙
1 | iptables -I INPUT -p tcp --dport 5672 -j ACCEPT |
访问管理界面
访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest
使用guest 用户登录
到这里就完成安装部署了。
添加用户
1 | docker exec -ti rabbitmq /bin/bash # 登录docker容器 |
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