Loading

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

posted @ 2022-12-11 15:53  知科行技  阅读(37)  评论(0编辑  收藏  举报