RabbitMQ安装和管理

188 阅读4分钟

因为需要执行make,需要提前安装gcc

image.png

安装

安装ERLang

.tar.gz方式

# 把文件上传到 /usr/local,并解压
tar zxf otp_src_24.2.1.tar.gz
cd otp_src_24.2.1

# 安装
mkdir ../erlang
./configuration --prefix=/usr/local/erlang
make
make install

# 配置erlang环境
vim /etc/profile
---------------------------
export ERLANG_HOME=/usr/local/erlang
export PATH=$PAHT:$ERLANG_HOME/bin
---------------------------
source /etc/profile

# 测试,退出ctrl+c
erl
>

执行./configuration之前,如果遇到异常:no curses library functions found,执行以下安装: yum install -y ncurses-devel

rpm方式

# 下载并上传rpm,在el7中使用erlang 23.x版本,对应mq版本8.15
rpm -hiv erlang-23.3.4.11-1.el7.x86_64.rpm

安装RabbitMQ

# 下载并解压
tar -xvf rabbitmq-server-generic-unix-3.8.15.tar.xz

# 直接运行即可
mv rabbitmq-server-3.8.15 /usr/local/

cd rabbitmq-server-3.8.15/sbin
./rabbitmq-server -detached

配置

默认配置文件位于/etc/rabbitmq/rabbitmq-env.conf中,因不建议修改配置,所以该文件默认不存在,可以自行创建。

管理

rabbitmqctl工具

语法:rabbitmqctl -n {node} -t {timeout} -q {command} {options}

  • -n :默认节点是rabbit@hostname
  • -q :启用quiet模式,屏蔽输出一些消息
  • -t :超时时间,只适用于list_xxx,默认无限

vhost

每一个rabbitmq服务器都能创建虚拟的消息服务器,称为虚拟主机vhost。

每个vhost都是独立的mq服务器,拥有独立的队列、交换器及绑定关系等,并且拥有独立的权限体系。

vhost之间是绝对隔离的,默认创建一个/vhost,客户端在连接时必须指定一个vhost

创建新vhost

rabbitmqctl add_vhost name

删除vhost

rabbitmqctl delete_vhost name

删除vhost时,会同时删除其下的所有队列、交换器、绑定关系和用户权限等。

查询vhost

rabbitmqctl list_vhosts vhostinfoitem,其中vhostinfoitem取值包括(可同时使用):

  • name:表示vhost的名称
  • tracing:表示是否使用rabbitmq的trace功能

用户管理

RabbitMq中用户可以跨越多个vhost进行授权,每个vhost中的授权是独立的。

  
添加用户rabbitmqctl add_user user password
删除用户rabbitmqctl delete_user user
查询用户rabbitmqctl list_users
修改密码rabbitmqctl change_password user new_password
清空密码rabbitmqctl clear_password user
验证用户rabbitmqctl authenticate_user user password

权限

权限以vhost为单位管理,当创建一个用户时也必须指定到vhost。

授权

rabbitmqctl set_permissions -p vhost user conf write read

  • vhost:授权用户访问权限的vhost名称,可设置为默认,即 /
  • user:用户
  • conf:一个用于匹配用户在哪些资源上拥有可配置权限(队列和交换器的创建、删除)的正则表达式
  • write:一个用于匹配用户在哪些资源上拥有可写权限(发布消息)的正则表达式
  • read:一个用于匹配用户在哪些资源上拥有可读权限(读取消息及清空队列)的正则表达式

例如授权用户root在vhost01上具备所有资源的配置、写和读权限:

rabbitmqctl set_permissions -p vhost01 root ". " ". " "."

清除权限

rabbitmqctl clear_permissions -p vhost01 root

显示权限

  1. rabbitmqctl list_permissions -p vhost01:显示vhost01上的权限;
  2. rabbitmqctl list_user_permissions root:显示root的权限

角色

用户角色分5类:

  • none:无角色,创建新用户默认是none
  • management:可以访问web管理界面
  • policymaker:包含management权限,且可以管理策略和参数
  • monitoring:包含management权限,且可以查看所有连接、信道和节点信息
  • administrator:包含monitoring权限,可管理user、vhost、权限、策略、参数等,是最高权限

设置角色

rabbitmqctl set_user_tags user tag1,tag2,...

多个角色,在后面直接写多个tag就可以,用,分开

查看用户角色

rabbitmqctl list_users

Web端管理

插件管理

插件使用rabbitmq-plugins,语法:

rabbitmq-plugins [-n node] {command} [command options...]

  1. 启动插件:rabbitmq-plugins enable [plugin-name]
  2. 关闭插件:rabbitmq-plugins disable [plugin-name]
  3. 查看插件:rabbitmq-plugins list

查看插件时,输出的信息中[E]表示显示启动;[e]表示隐式启动。

安装rabbitmq_management插件,启用web管理

rabbitmq-plugins enable rabbitmq_management

# 重启rabbitmq即可
rabbitmq-server restart

如果访问web时,遇到 stats in management UI are disabled on this node提示,执行以下:

# 切换目录
cd /etc/rabbitmq/conf.d/

# 查看配置,默认输出 management_agent.disable_metrics_collector = true
cat management_agent.disable_metrics_collector.conf

# 修改配置
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf

# 查看确认,正确会显示false
cat management_agent.disable_metrics_collector.conf

# 重启服务即可

应用与服务状态

应用管理

  • rabbitmqctl stop pid_file:停止Erlang虚拟机和Mq服务应用,会等待pid_fle进程结束;
  • rabbitmqctl shutdown :停止Erlang虚拟机和Mq服务应用,会等待Erlang服务退出,但不用指定pid_file;
  • rabbitmqctl stop_app:停止Mq服务,但是Erlang虚拟机不会停止;
  • rabbitmqctl start_app:启用Mq服务;
  • rabbitmqctl wait [pid_file]:等待Mq应用启动,如果pid_file代表的进程未启动,会返回失败;
  • rabbitmqctl reset:把Mq节点重置到最初状态(在集群中删除该节点、删除节点中的用户、vhost等);执行之前必须先关闭Mq服务,即先执行rabbitmqctl stop_app;
  • rabbitmqctl force_reset:强制重置,但也是要先关闭Mq服务;
  • rabbitmqctl rotate_logs [suffix]:轮换日志文件,即重命名原来的文件为名字+suffix,再创建新文件;

服务状态

使用web管理界面即可。