rabbitmq学习笔记(基本操作)

一般来说安装 RabbitMQ 之前要安装 Erlang ,可以去Erlang官网下载。接着去RabbitMQ官网下载安装包,之后解压缩即可。根据操作系统不同官网提供了相应的安装说明:Windows、Debian / Ubuntu、RPM-based Linux、Mac
安装过程可能会出现很多错误,参考:
https://blog.csdn.net/huijiangu4621/article/details/83619707
https://blog.csdn.net/alex_bean/article/details/56675694

一、YUM安装方式如下所示:

erlang下载:https://www.erlang-solutions.com/resources/download.html

[root@zhuzhu ~]#wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_21.2.2-1~centos~7_amd64.rpm
[root@zhuzhu ~]# rpm -ivh esl-erlang_21.2.2-1~centos~7_amd64.rpm --force --nodeps
[root@zhuzhu ~]#wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el7.noarch.rpm --force --nodeps
yum localinstall rabbitmq-server-3.7.10-1.el7.noarch.rpm
或者:rpm -ivh rabbitmq-server-3.7.10-1.el7.noarch.rpm --force --nodeps
--force --nodeps 强制跳过所需依赖
[root@localhost ~]# grep Limit /usr/lib/systemd/system/rabbitmq-server.service
To override LimitNOFILE, create the following file:
LimitNOFILE=65536
LimitNOFILE=65535
启动rabbitmq:
[root@maomao ~]# systemctl daemon-reload
[root@maomao ~]# service rabbitmq-server start
Redirecting to /bin/systemctl start rabbitmq-server.service
[root@maomao ~]# service rabbitmq-server status
Redirecting to /bin/systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-01-10 01: 51:21 EST; 18s ago
Main PID: 47532 (beam.smp)
Status: "Initialized"

二、Rabbitmq-server 的相关命令请参考:**

http://www.rabbitmq.com/rabbitmqctl.8.html
基本参数:
-n 指定节点默认为rabbit@server,即所有的命令都是在这个节点上执行的;
-q 为安静输出模式;
-t 设置超时时间,该参数只对list相关的命令适用,默认为无穷大。
1、创建用户命令
rabbitmqctl add_user user_name password
例:[root@zhuzhu ~]# rabbitmqctl add_user zhuzhu 1
Adding user "zhuzhu" ...
2、查看RabbitMQ中用户命令
rabbitmqctl list_users
例:[root@zhuzhu ~]# rabbitmqctl list_users
Listing users ...
user tags
zhuzhu []
guest [administrator]
3、赋予用户权限命令
rabbitmqctl set_permissions -p "/" user_name '.' '.' '.'
例:为zhuzhu设置进入虚拟机的权限 <conf> <write> <read>
[root@zhuzhu ~]# rabbitmqctl set_permissions -p / zhuzhu ".
" "." "."
Setting permissions for user "zhuzhu" in vhost "/" ...
4、赋予用户角色命令
rabbitmqctl set_user_tags user_name administrator
5、重置RabbitMQ节点:
rabbitmqctl force_reset
6、删除用户(删除guest用户)
例:[root@v01-app-rabbitmq01 rabbitmq]# rabbitmqctl delete_user guest
Deleting user "guest"
#rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。
7、修改用户的密码 clear_password <username>删除密码;
rabbitmqctl change_password Username Newpassword
例:[root@vm2 ~]# rabbitmqctl change_password admin 0GM1aol4z8GeSZY99
Changing password for user "admin"
8、开启rabbitmq管理控制台命令
rabbitmq-plugins enable rabbitmq_management
开启rabbit管理界面:
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
防火墙开启端口
[root@zhuzhu ~]# firewall-cmd --zone=public --add-port=5672/tcp --permanent
success
[root@zhuzhu ~]# firewall-cmd --zone=public --add-port=15672/tcp --permanent
success
[root@zhuzhu ~]# firewall-cmd --zone=public --add-port=25672/tcp --permanent
success
[root@zhuzhu ~]# firewall-cmd --reload
success
[root@maomao ~]# firewall-cmd --list-port
5672/tcp 15672/tcp 25672/tcp
访问 http://ip:15672/
9、日志跟踪插件
rabbitmq-plugins enable rabbitmq_tracing #rabbitmq启用trace插件
rabbitmqctl trace_on #打开trace的开关
rabbitmqctl trace_on -p test #打开trace的开关(test为需要日志追踪的vhost)
rabbitmqctl trace_off #关闭trace的开关
例:[root@maomao ~]# rabbitmq-plugins enable rabbitmq_tracing
Enabling plugins on node rabbit@maomao:
rabbitmq_tracing
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_tracing
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@maomao...
The following plugins have been enabled:
rabbitmq_tracing
started 1 plugins.
[root@maomao ~]# rabbitmqctl trace_on
Starting tracing for vhost "/" ...
Trace enabled for vhost /

Rabbit MQ 的权限角色:

(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
例:[root@zhuzhu ~]# rabbitmqctl add_user zhuzhu 1
Adding user "zhuzhu" ...
[root@zhuzhu ~]# rabbitmqctl set_user_tags zhuzhu administrator
Setting tags for user "zhuzhu" to [administrator] ...

三、RabbitMQ cluster

参考:https://www.cnblogs.com/edward2013/p/5061511.html
Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群镜像。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在 $home/.erlang.cookie 中,如果pm安装的,.erlang.cookie存储在/var/lib/rabbitmq中。
erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400,不然节点之间就无法通信。
打开文件然后需要先把其中的一台服务器的.erlang.cookie中的内容复制到别的机器上,最好是复制内容,因为文件权限不对的话会出现问题,在最后退出保存的时候使用wq!用!来进行强制保存即可。也可是直接使用scp传过去,记得文件权限和用户属主属组。
注:RabbitMQ Cluster依赖hostname,所以一定要修改/etc/hosts ,实现本地解析。

[root@gougou ~]# cd /var/lib/rabbitmq/
[root@gougou rabbitmq]# cat .erlang.cookie
EFPPWCEDVNGKSDJPXBHF[root@gougou rabbitmq]# ll .
./ ../ .erlang.cookie
[root@gougou rabbitmq]# ll .erlang.cookie
-r--------. 1 rabbitmq rabbitmq 20 Jan 10 00:00 .erlang.cookie
[root@gougou rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie zhuzhu:/var/lib/rabbitmq/.erlang.cookie
root@zhuzhu's password:
.erlang.cookie 100% 20 17.3KB/s 00:00
[root@gougou rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie maomao:/var/lib/rabbitmq/.erlang.cookie
root@maomao's password:
.erlang.cookie
指示节点成为指定节点所在群集的成员。在群集之前,节点已重置,因此使用此命令时请务必小心。要使此命令成功,必须已停止RabbitMQ应用程序
例:将zhuzhu gougou 加入maomao的集群中,在zhuzhu和gougou分别运行:
[root@gougou ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@gougou ...
[root@gougou ~]# 我
Resetting node rabbit@gougou ...
[root@gougou ~]# rabbitmqctl join_cluster rabbit@maomao
Clustering node rabbit@gougou with rabbit@maomao
[root@gougou ~]# rabbitmqctl start_app
Starting node rabbit@gougou ...
[root@gougou ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@gougou ...br/>[{nodes,[{disc,[rabbit@gougou,rabbit@maomao,rabbit@zhuzhu]}]},
{running_nodes,[rabbit@zhuzhu,rabbit@maomao,rabbit@gougou]},
br/>{cluster_name,<<"rabbit@maomao">>},
{partitions,[]},
br/>{alarms,[{rabbit@zhuzhu,[]},{rabbit@maomao,[]},{rabbit@gougou,[]}]}]
要将一个节点从集群中移除,需将该节点的rabbit stop再到主节点remove
例:将zhuzhu从集群中移除:
[root@zhuzhu ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@zhuzhu ...
[root@maomao ~]# rabbitmqctl -n rabbit@maomao forget_cluster_node rabbit@zhuzhu
Removing node rabbit@zhuzhu from the cluster
[root@maomao ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@maomao ...
br/>[{nodes,[{disc,[rabbit@gougou,rabbit@maomao]}]},
{running_nodes,[rabbit@gougou,rabbit@maomao]},
br/>{cluster_name,<<"rabbit@maomao">>},
{partitions,[]},
{alarms,[{rabbit@gougou,[]},{rabbit@maomao,[]}]}]

部分有转载至其他博客。

转载于:https://blog.51cto.com/13576471/2359109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值