当前位置:首页 > 服务端 > RabbitMQ安装配置与管理###整理篇

RabbitMQ安装配置与管理###整理篇

2022年08月05日 11:26:01服务端2

RabbitMQ安装配置与管理

安装

  1. 安装erlang虚拟机

Rabbitmq基于erlang语言开发,所有需要安装erlang虚拟机

#wget http://www.erlang.org/download/otp_src_R15B01.tar.gz

#tar zxvfotp_src_R15B01.tar.gz && cd otp_src_R15B01

#./configure &&make install

  1. 安装rabbitmqserver

#wgethttp://www.rabbitmq.com/releases/rabbitmq-server/v2.8.2/rabbitmq-server-generic-unix-2.8.2.tar.gz

#tarrabbitmq-server-generic-unix-2.8.2.tar.gz && cd/rabbitmq-server-generic-unix-2.8.2

修改Makeifle,添加以下参数,指定安装目录

SBIN_DIR = /usr/sbin

MAN_DIR =/usr/share/man

TARGET=/usr/lib/rabbitmq

最后

#make && makeinstall

注意:安装脚本最后会从一个网站上拉man手册,有时连不上这个网站,安装脚本就会停住,这时可以Ctrl-c结束安装进程,这时其实已经安装完成只差man手册。

配置

  1. 配置文件

Rabbitmq的配置文件有三个,位于/etc/rabbitmq/

这三个文件分别是:

1enabled_plugins,设置允许的插件列表,该配置文档的格式为erlang的列表格式如

[rabbitmq_management,rabbitmq_visualiser].

2rabbitmq.conf,设置rabbitmq的运行参数。该配置文件中的每个参数为一个erlangtuple,结构为{KeyValue,Keyatom类型,Value为一个term。其中几个关键参数为:

tcp_listerners 设置rabbimq的监听端口,默认为[5672]

disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为

{mem_relative,1.0},即与内存相关联11,也可定制为多少byte.

vm_memory_high_watermark,设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%

hipe_compile将部分rabbimq代码用HighPerformance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlangvm segfaults,应关掉。

force_fine_statistics,该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。

3rabbitmq-env.conf rabbitmq的环境参数配置

RABBITMQ_NODE_PORT 端口设置,默认为5672

RABBITMQ_NODENAME 节点名称,默认为rabbit

MNESIA_BASE 后端存储目录 ,默认为/var/lib/rabbitmq/mnesia

LOG_BASE日志目录,默认为/var/log/rabbitmq/





其它参数详情请见:http://www.rabbitmq.com/configure.html

  1. 集群配置

1)手动配置

a)首先在每个节点上启动RabbitMq

host1#rabbitmq-server-detached

host2#rabbitmq-server-detached

host3#rabbitmq-server-detached

此时每个节点自成集群,每个集群只有本节点

可以通过exportRABBITMQ_NAME=xxx 指定节点名称,若不指定默认为rabbit

完整的节点名为xxx@hostname

b)加入集群

host2host3上的rabbitmq节点加入到host1rabbitmq集群

使用rabbitmqctl命令对rabbitmq进行操作

加入集群前必须停止当前app,加入后在重启app,过程如下:

host2#rabbitmqctlstop_app

host2#rabbitmqctlcluster rabbit@host1

host2#rabbitmqctlstart_app

host3#rabbitmqctlstop_app

host3#rabbitmqctlcluster rabbit@host1

host3#rabbitmqctlstart_app



关于节点类型(ram|disk

ram节点的状态保存在内存中,disk节点保存在磁盘中

被加入的节点为disk,如本例中rabbit@host1disk节点,rabbit@host2rabbit@host3ram节点

可以通过rabbitmqctlcluster命令改变加入的集群以及节点类型该命令后可以加多个节点名称, 指定的节点就会变成disk节点

如可以将本例中所有节点都改成disk节点

host2#rabbitmqctlstop_app

host2#rabbitmqctlreset

host2#rabbitmqctlcluster rabbit@host1 rabbit@host2

host2#rabbitmqctlstart_app

host3#rabbitmqctlstop_app

host3#rabbitmqctlreset

host3#rabbitmqctlcluster rabbit@host1 rabbit@host3

host3#rabbitmqctlstart_app

2)自动配置:

rabbitmq的默认配置脚本为

/etc/rabbitmq/rabbitmq.conf

在其中添加

[

...

{rabbit, [

...

{cluster_nodes,['rabbit@host1', 'rabbit@host2', 'rabbit@host3']},

...

]},

...

].

分别启动每个rabbitmq节点

rabbitmq -detached

rabbitmq就自动组成集群了

注意事项:

1)每个节点的erlangcookie须相同, 可以在启动服务器加–setcookie参数设置相同的参数,也可以在home目录下设置相同的.erlang.cookie文件。

2)节点间应该能相互解析,可以通过修改/etc/hosts文件实现

管理

Rabbitmq服务器的主要通过rabbitmqctlrabbimq-plugins两个工具来管理,以下是一些常用功能。

  1. 服务器启动与关闭

启动:rabbitmq-server –detached

关闭:rabbitmqctlstop

若单机有多个实例,则在rabbitmqctlh后加–n 指定名称

  1. 插件管理

开启某个插件:rabbitmq-pluginsenable xxx

关闭某个插件:rabbitmq-pluginsdisable xxx

注意:重启服务器后生效。

  1. virtual_host管理

新建virtual_host:rabbitmqctl add_vhost xxx

撤销virtual_host:rabbitmqctl delete_vhost xxx

  1. 用户管理

新建用户:rabbitmqctladd_user xxx pwd

删除用户: rabbitmqctl delete_user xxx

改密码: rabbimqctlchange_password {username} {newpassword}

设置用户角色:rabbitmqctlset_user_tags {username} {tag ...}

Tag可以为administrator,monitoring, management

Tag

Capabilities

(None)

No access tothe management plugin

management

Anythingthe user could do via AMQP plus:

Listvirtual hosts to which they can log in via AMQP

Viewall queues, exchanges and bindings in "their" virtualhosts

Viewand close their own channels and connections

View "global"statistics covering all their virtual hosts, including activityby other users within them

monitoring

Everything"management" can plus:

Listall virtual hosts, including ones they could not log in to viaAMQP

Viewother users's connections and channels

Viewnode-level data such as memory use and clustering

Viewtruly global statistics for all virtual hosts

administrator

Everything"monitoring" can plus:

Createand delete virtual hosts

View,create and delete users

View,create and delete permissions

Closeother users's connections

  1. 权限管理

权限设置:set_permissions[-p vhostpath] {user} {conf} {write} {read}

Vhostpath

Vhost路径

user

用户名

Conf

一个正则表达式match哪些配置资源能够被该用户访问。

Write

一个正则表达式match哪些配置资源能够被该用户读。

Read

一个正则表达式match哪些配置资源能够被该用户访问。

  1. 获取服务器状态信息

服务器状态: rabbitmqctlstatus



队列信息:rabbitmqctllist_queues [-p vhostpath] [queueinfoitem ...]

Queueinfoitem可以为:namedurableauto_deleteargumentsmessages_ready

messages_unacknowledgedmessagesconsumersmemory



Exchange信息:rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem ...]

Exchangeinfoitem有:nametypedurableauto_deleteinternalarguments.



Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem ...]

Bindinginfoitem有:source_namesource_kinddestination_namedestination_kindrouting_keyarguments



Connection信息:rabbitmqctllist_connections [connectioninfoitem ...]

Connectioninfoitem有:recv_octrecv_cntsend_octsend_cntsend_pend等。



Channel信息:rabbitmqctl list_channels [channelinfoitem ...]

Channelinfoitemconsumer_countmessages_unacknowledgedmessages_uncommitted

acks_uncommittedmessages_unconfirmedprefetch_countclient_flow_blocked



更多的信息请参考:http://www.rabbitmq.com/man/rabbitmqctl.1.man.html







rabbitmqweb管理界面无法使用guest用户登录

安装最新版本的rabbitmq(3.3.1),并启用managementplugin后,使用默认的账号guest登陆管理控制台,却提示登陆失败。

翻看官方的release文档后,得知由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq(该功能是在3.3.0版本引入的)

虽然可以以比较猥琐的方式:将ebin目录下rabbit.apploopback_users里的<<"guest">>删除,
 
并重启rabbitmq,可通过任意IP使用guest账号登陆管理控制台,但始终是违背了设计者的初衷,再加上以前对这一块了解也不多,因此有必要总结一下。

1.
用户管理

用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。

相应的命令

(1)
新增一个用户

rabbitmqctl add_user  Username  Password

(2)
删除一个用户

rabbitmqctl delete_user  Username

(3)
修改用户的密码

rabbitmqctl change_password  Username  Newpassword

(4)
查看当前用户列表

rabbitmqctl list_users

2.
用户角色

按照个人理解,用户角色可分为五类,超级管理员,监控者,策略制定者,普通管理者以及其他。

(1)
超级管理员(administrator)

可登陆管理控制台(启用managementplugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2)
监控者(monitoring)

可登陆管理控制台(启用managementplugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

(3)
策略制定者(policymaker)

可登陆管理控制台(启用managementplugin的情况下),同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)

administrator的对比,administrator能看到这些内容

(4)
普通管理者(management)

仅可登陆管理控制台(启用managementplugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5)
其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

了解了这些后,就可以根据需要给不同的用户设置不同的角色,以便按需管理。

设置用户角色的命令为:

rabbitmqctl set_user_tags  User  Tag

User
为用户名,Tag为角色名(对应于上面的administratormonitoringpolicymakermanagement,或其他自定义名称)

也可以给同一用户设置多个角色,例如

rabbitmqctl set_user_tags  hncscwc  monitoring  policymaker

3.
用户权限

用户权限指的是用户对exchangequeue的操作权限,包括配置权限,读写权限。配置权限会影响到exchangequeue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queueexchange的绑定(bind)操作。

例如:将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中"Howpermissions work"部分。

相关命令为:

(1)
设置用户权限

rabbitmqctl set_permissions  -p  VHostPath  User  ConfP WriteP  ReadP

(2)
查看(指定hostpath)所有用户的权限信息

rabbitmqctl list_permissions  [-p  VHostPath]

(3)
查看指定用户的权限信息

rabbitmqctl list_user_permissions  User

(4) 
清除用户的权限信息

rabbitmqctl clear_permissions  [-p VHostPath] User

===============================



作者:svdata
来源链接:https://blog.csdn.net/open_data/article/details/45217765

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/17652.html

分享给朋友:

“RabbitMQ安装配置与管理###整理篇” 的相关文章

RabbitMQ配置SSL

RabbitMQ配置SSL

引言 主要介绍了如何通过Docker安装RabbitMQ并配置SSL;配置成功之后给出了SpringBoot和Python集成的例子。 生成证书 $ git clone https://github.com/Berico-Technol...

RabbitMQ基本特性

RabbitMQ基本特性

1.互联网大厂为什么选择RabbitMQ? 2.RabbitMQ的高性能之道是如何做到的? 3.什么是AMQP高级协议? 4.AMQP核心概念是什么? 5.RabbitMQ整体架构模型是什么样子? 6.RabbitMQ消息是如何流...

RabbitMQ消息队列创建

RabbitMQ消息队列创建

操作环境 centos 7.9 RabbitMQ 3.8.23 Erlang 24.1.2 局域网(内网) 本文章是通过RabbitMQ图形管理界面,进行消息创建与队列绑定 首先在RabbitMQ安装时...

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记—RabbitMQ简介 1.RabbitMQ简介 RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信...

linux查看rabbitmq运行状态,RabbitMQ常用命令

RabbitMQ常用命令 rabbitmqctl命令 http://www.rabbitmq.com/man/rabbitmqctl.1.man.html# 1). 服务器启动与关闭 启动: rabbitmq-server –detach...

RabbitMQ工作方式

RabbitMQ工作方式: 工作队列模式 发布订阅模式 路由模式 通配符模式 header转发模式 RPC远程过程调用模式   作者:wondream322 来源链接:https://blog.csdn.net/wang386476890/art...

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

文件的下载1、创建两个安装信息的存放文件夹sudo mkdir /usr/local/rabbitmqsudo mkdir /usr/local/erlang  2、下载rabbitmq和erlangcd /usr/local/rab...

RabbitMQ与SpringBoot整合

RabbitMQ与SpringBoot整合

RabbitMQ  SpringBoot    一.RabbitMQ的介绍 二.Direct模式...

Docker部署RabbitMQ

Docker部署RabbitMQ

【前言】 Docker : Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in...

rabbitmq删除队列

作者:吴业亮 博客:http://blog.csdn.net/wylfengyujiancheng 从github下载rabbitmqadmin # wget https://raw.githubusercontent.com/rabb...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。