因为需要执行make,需要提前安装gcc
安装
安装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
显示权限
- rabbitmqctl list_permissions -p vhost01:显示vhost01上的权限;
- 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...]
- 启动插件:rabbitmq-plugins enable [plugin-name]
- 关闭插件:rabbitmq-plugins disable [plugin-name]
- 查看插件: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管理界面即可。