MessageQueue-RabbitMQ-01-RabbitMQ
前置条件
CentOS7:2009
环境
Socat:1.7.3.2-2.el7
Erlang:R16B03-1
RabbitMQ:3.3.5
安装
RabbitMQ依赖Erlang,且有版本依赖关系,详情:RabbitMQ Erlang Version Requirements --- RabbitMQ
在线安装
安装EPEL仓库
# 安装epel(Extra Packages for Enterprise Linux)企业Linux扩展包
yum install -y epel-release
# 验证epel成功加入repo中
yum repolist | grep epel
安装RabbitMQ-Server
# yum makecache
yum -y install rabbitmq-server-3.3.5-34.el7
配置 RabbitMQ
自动启动
# 启用开机启动
systemctl enable rabbitmq-server
# 确认开机启动已启用
systemctl is-enabled rabbitmq-server
启动
# 启动
systemctl start rabbitmq-server
# 查看状态
systemctl status rabbitmq-server
#启动服务
# rabbitmq-server -detached #-detached后台启动 不占用terminal进程
# 验证服务是否启动成功
# ps -ef|grep rabbitmq
设置Guest用户 可通过任意网址登录
RabbitMQ 默认guest 用户 只能localhost登录
# 修改rabbit.app 文件 loopback_users选项
#跳转到 rabbit.app 所在目录
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.10/ebin
# 打开文件
vim rabbit.app
# 修改为如下图 后存盘退出
#修改配置文件
vi /etc/rabbitmq/rabbitmq.config
#保存以下内容
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["admin"]}]}
].
# 重启RabbitMQ,
systemctl restart rabbitmq-server
# 用账号guest、密码guest登录。
或者创建新用户
# 创建用户
rabbitmqctl add_user <UserName> <Password>
# 赋予角色
rabbitmqctl set_user_tags <UserName> administrator
# 针对一个vhosts给用户赋予相关权限;
# sudo rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p / Admin01 ".*" ".*" ".*"
# 列出所有用户,验证创建用户成功
rabbitmqctl list_users
# 用新创建的账号密码登录
开放端口
# RabbitMQ通讯端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
# RabbitMQ后台管理页面端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 验证端口已打开
firewall-cmd --query-port=5672/tcp
firewall-cmd --query-port=15672/tcp
启用管理界面插件
# 启用管理界面插件
rabbitmq-plugins enable rabbitmq_management
# 禁用管理界面插件
# rabbitmq-plugins disable rabbitmq_management
# 列出所有插件,确认管理界面插件已启用
rabbitmq-plugins list
# 重启rabbitmq-server服务,以便加载管理界面插件
systemctl restart rabbitmq-server
#sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
验证安装
在浏览器内地址栏
输入ip:port/15672 访问打开页面
用户名:guest
密码:guest
卸载
# Uninstall Erlang
yum list | grep erlang
yum -y remove erlang-*
# rm -rf /usr/lib64/erlang
# Uninstall Rabbitmq
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
# find / -name rabbit* rm -rf sequentially deleted
RabbitMQ角色
超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
与administrator的对比,administrator能看到这些内容
普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
RabbitMQ 常用命令
# 关闭开机启动
systemctl disable rabbitmq-server
# 关闭
rabbitmqctl stop
# 格式:
rabbitmqctl [-n <node>] [-q] <command> [<command options>]
# 【基本命令】
# 停止运行rabbitmq
rabbitmqctl stop <pid_file>
# 停止运行rabbitmq上的应用
rabbitmqctl stop_app
# 等待rabbitmq服务启动
rabbitmqctl wait <pid_file>
# 初始化node状态(要先执行rabbitmqctl stop_app)
rabbitmqctl reset
# 强制初始化node状态
rabbitmqctl force_reset
# 轮转日志文件
rabbitmqctl rotate_logs <suffix>
# 【cluster集群管理】
# 默认node以disc node加入集群,--ram表示node以ram node加入集群中(要先执行rabbitmqctl stop_app)
rabbitmqctl join_cluster <node name> --ram
# 显示cluster中的所有node
rabbitmqctl cluster_status
# 改变一个cluster中node的模式,该节点在转换前必须先停止,不能把一个集群中唯一的disk node转化为ram node
rabbitmqctl change_cluster_node_type disc | ram
# 远程移除cluster中的一个node,前提是该node必须处于offline状态,如果是online状态,则需要加--offline参数。
rabbitmqctl forget_cluster_node --offline
# 远程更新cluster中的node
rabbitmqctl update_cluster_nodes clusternode
# 同步镜像队列
rabbitmqctl sync_queue queue
# 取消同步镜像队列
rabbitmqctl cancel_sync_queue queue
# 【用户管理】
# 删除rabbitmq用户
rabbitmqctl delete_user <username>
# 改变rabbitmq用户密码
rabbitmqctl change_password <username> <newpassword>
# 清除用户密码,禁止该用户使用密码登陆,但是可以通过SASL登陆如果配置了SASL认证
rabbitmqctl clear_password <UserName>
# 设置用户标签(角色)
# 角色名 administrator|monitoring|policymaker|management
rabbitmqctl set_user_tags <username> <tag1> <tag2> ... <tag_n>
# 创建一个vhosts
rabbitmqctl add_vhost <vhostpath>
# 删除一个vhosts
rabbitmqctl delete_vhost <vhostpath>
# 列出vhosts
rabbitmqctl list_vhosts <vhostinfoitem1> <vhostinfoitem2> ... <vhostinfoitem_n>
# 针对一个vhosts 给用户赋予相关权限
rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
# 清除一个用户对vhosts的权限
rabbitmqctl clear_permissions [-p <vhostpath>] <username>
# 列出哪些用户可以访问该vhosts
rabbitmqctl list_permissions [-p <vhostpath>]
#列出该用户的访问权限
rabbitmqctl list_user_permissions <username>
# 修改vhost路径参数
rabbitmqctl set_parameter [-p <vhostpath>] <component_name> <key> <value>
# 清除vhost路径参数
rabbitmqctl clear_parameter [-p <vhostpath>] <component_name> <key>
# 列出vhost路径参数
rabbitmqctl list_parameters [-p <vhostpath>]
# 【策略policy管理】
# name:策略名称 pattern:匹配资源正则表达式 apply-to:策略应用类型范围,有[all、queues、exchange] priority:整数优先级 definition:json格式设置的策略
rabbitmqctl set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition(json)>
#清除一个策略
rabbitmqctl clear_policy [-p <vhostpath>] <name>
# 列出已有的策略
rabbitmqctl list_policies [-p <vhostpath>]
# 【queues exchanges】
# 返回queue的信息,如果省略了-p参数,则默认显示的是"/"vhosts的信息。
rabbitmqctl list_queues [-p <vhostpath>] [<queueinfoitem> ...]
# 返回exchange的信息
rabbitmqctl list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...]
# 返回绑定信息
rabbitmqctl list_bindings [-p <vhostpath>] [<bindinginfoitem> ...]
# 返回链接信息
rabbitmqctl list_connections [<connectioninfoitem> ...]
# 返回目前所有的channels
rabbitmqctl list_channels [<channelinfoitem> ...]
# 返回consumers
rabbitmqctl list_consumers [-p <vhostpath>]
# 显示broker的状态
rabbitmqctl status
# 显示环境参数的信息
rabbitmqctl environment
# 返回一个服务状态report
rabbitmqctl report
# 返回一个服务状态eval
rabbitmqctl eval <expr>
参考
Installing on RPM-based Linux (RedHat Enterprise Linux, CentOS, Fedora, openSUSE) --- RabbitMQ