天天看点

Linux Centos6安装RabbitMQ

启动命令:

service rabbitmq-server start      

重启命令:

service rabbitmq-server restart      

停止命令:

service rabbitmq-server stop      

RabbitMq的安装

erlang 与 rabbitmq 正确的版本匹配 ​​https://www.rabbitmq.com/which-erlang.html​​

在线安装

安装rabbitmq需要先安装Erlang。

下载erlang rpm包:

wget http://packages.erlang-solutions.com/erlang/rpm/centos/6/x86_64/erlang-22.0.4-1.el6.x86_64.rpm      

下载socat rpm包:

wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm      

下载rabbitmq rpm包:

wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/6/rabbitmq-server-3.7.15-1.el6.noarch.rpm/download.rpm      

安装rpm包:

# 安装RabbitMq:
rpm -ivh erlang-22.0.4-1.el6.x86_64.rpm --force --nodeps
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm --force --nodeps
rpm -ivh rabbitmq-server-3.7.15-1.el6.noarch.rpm --force --nodeps      

检查是否安装成功

查看erlang版本:

[root@JR-JDH-UATAPP1 ~]erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.4.3      

查看Rabbitmq版本:

[root@JR-JDH-UATAPP1 ~]# sudo rabbitmqctl status | grep rabbit
Status of node rabbit@JR-JDH-UATAPP1 ...
  [{rabbitmq_tracing,"RabbitMQ message logging / tracing","3.7.15"},
   {rabbitmq_management,"RabbitMQ Management Console","3.7.15"},
   {rabbitmq_management_agent,"RabbitMQ Management Agent","3.7.15"},
   {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.7.15"},
   {rabbit,"RabbitMQ","3.7.15"},
   {rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",      

检查erlang是否运行正常:

[root@JR-JDH-UATAPP1 ~]# erl
Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
Eshell V10.4.3 (abort with ^G)
1>      

检查Rabbitmq是否运行正常:

[root@tcljr-jdh-yc01 ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - LSB: RabbitMQ is a multi-protocol messaging broker
Loaded: loaded (/etc/rc.d/init.d/rabbitmq-server; bad; vendor preset: disabled)
Active: active (running) since Wed 2021-07-21 11:31:09 CST; 23h ago      

查看安装路径:

[root@JR-JDH-UATAPP1 ~]# whereis erlang
erlang: /usr/lib64/erlang
[root@JR-JDH-UATAPP1 ~]# whereis rabbitmq
rabbitmq: /etc/rabbitmq /usr/lib/rabbitmq      

常用命令

# 运行
systemctl start rabbitmq-server

# 重启
systemctl restart rabbitmq-server

# 停止
systemctl stop rabbitmq-server

# 开机自启
systemctl enable rabbitmq-server

# 检查状态
systemctl status rabbitmq-server

# 查看所有用户
rabbitmqctl list_users

# 创建用户
rabbitmqctl add_user 用户名 密码

# 将用户给于权限(none、management、policymaker、monitoring、administrator):
rabbitmqctl set_user_tags 用户名 角色

# 查看当前用户所有的权限
rabbitmqctl list_user_permissions 用户名

# 赋予用户权限(vhost configure write read)
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"      

  Setting permissions for user "guest" in vhost "/" ...

  Error:

  Virtual host / does not exist

  # 报错"Virtual host / does not exist",需要添加虚拟主机:rabbitmqctl add_vhost /

# 然后再重新赋予权限:rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"      
# 删除用户 rabbitmqctl delete_user 用户名      

开启web管理接口

启动RabbitMQ Web管理控制台:

rabbitmq-plugins enable rabbitmq_management      

打开浏览访问:

​​http://ip:15672​​

第一次访问需要登录,默认的账号密码为:guest/guest,会遇到如下图问题:User can only log in via localhost

Linux Centos6安装RabbitMQ

默认情况下,Rabbitmq对guest这个账户做了限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,使用默认的用户 guest / guest (此也为管理员用户)登陆,只能登陆localhost:15672。

所以在实现生产和消费消息之前,需要另外添加一个用户,并设置相应的访问权限:

rabbitmqctl add_user 用户名 密码      

设置该用户为管理员角色:

rabbitmqctl set_user_tags 用户名 administrator      

为该用户设置所有权限:

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"      

我们通过该用户就可以访问了。

另外,如果想要使用guest账号登录,必须解除Rabbitmq对guest账号的限制:

找到rabbit.app这个文件

[root@JR-JDH-UATAPP1 ~]# find / -name rabbit.app
/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app      

修改这个文件:

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app      

将:{loopback_users, [<<”guest”>>]} 改为:{loopback_users, []},

原因:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。

重启服务:

systemctl restart rabbitmq-server.service      

这样就可以以guest账号登录了。

管理界面介绍

主页

Linux Centos6安装RabbitMQ
  • Overview:概览信息,包括总计、全局计数、节点、端口和上下文等信息;
  • connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况;
  • channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道;
  • Exchanges:交换机,用来实现消息的路由;
  • Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列;

Overview

Linux Centos6安装RabbitMQ

Total

  • Ready:待消费的消息总数;
  • Unacked:待应答的消息总数
  • Total:总数 Ready+Unacked;

Global counts

  • Connections:client的tcp连接的总数;
  • Channels:通道的总数;
  • Exchange:交换器的总数;
  • Queues:队列的总数;
  • Consumers:消费者的总数;

Nodes

  • Name:broker名称;
  • File descriptors:broker打开的文件描述符和限制;
  • Socket descriptors:broker管理的网络套接字数量和限制,当限制被耗尽时,将停止接受新的网络连接;
  • Erlang processes:erlang启动的进程数;
  • Memory:当前broker占用的内存;
  • Disk space:当前broker占用的硬盘;
  • Uptime:当前broker持续运行的时长;

Connections

Linux Centos6安装RabbitMQ
  • Virtual host:所属的虚拟主机;
  • Name:名称;
  • User name:使用的用户名;
  • State:当前的状态,running:运行中;idle:空闲;
  • SSL/TLS:是否使用ssl进行连接;
  • Protocol:使用的协议;
  • Channels:创建的channel的总数;
  • From client:每秒发出的数据包;
  • To client:每秒收到的数据包;

Channels

Linux Centos6安装RabbitMQ
  • channel:名称;
  • Virtual host:所属的虚拟主机;
  • User name:使用的用户名;
  • Mode:渠道保证模式。 可以是以下之一,或者不是:C: confirm。T:transactional(事务);
  • State :当前的状态,running:运行中;idle:空闲;
  • Unconfirmed:待confirm的消息总数;
  • Prefetch:设置的prefetch的个数;
  • Unacker:待ack的消息总数;
  • publish:producter pub消息的速率;
  • confirm:producter confirm消息的速率;
  • deliver/get:consumer 获取消息的速率;
  • ack:consumer ack消息的速率;

Exchanges

Linux Centos6安装RabbitMQ
  • Virtual host:所属的虚拟主机;
  • Name:名称;
  • Type:exchange type;
  • Features:功能。 可以是以下之一,或者不是:D: 持久化。T:Internal,存在改功能表示这个exchange不可以被client用来推送消息,仅用来进行exchange和exchange之间的绑定,否则可以推送消息也可以绑定。
  • Message rate in:消息进入的速率。
  • Message rate out:消息出去的速率。

Queues

Linux Centos6安装RabbitMQ
  • Virtual host:所属的虚拟主机;
  • Name:名称;
  • Features:功能。 可以是以下之一,或者不是:D: 持久化;
  • State:当前的状态,running:运行中;idle:空闲;
  • Ready:待消费的消息总数;
  • Unacked:待应答的消息总数;
  • Total:总数 Ready+Unacked;
  • incoming:消息进入的速率;
  • deliver/get:消息获取的速率;
  • ack:消息应答的速率;

配置RabbitMq

关于RabbitMq的配置,可以下载RabbitMq的配置文件模板到rabbitmq.config,然后按需更改即可。

具体配置信息参考官网:​​http://rabbitmq.com/configure.html​​

开放端口

/sbin/iptables -I INPUT -p tcp —dport 5672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp —dport 15672 -j ACCEPT

卸载

1、卸载前先停止rabbitmq服务

/usr/lib/rabbitmq/bin/rabbitmqctl stop      

查看rabbitmq安装的相关列表

yum list | grep rabbitmq      

卸载rabbitmq已安装的相关内容

yum -y remove rabbitmq-server.noarch      

2、卸载erlang

查看erlang安装的相关列表

yum list | grep erlang      
yum -y remove erlang-*
yum remove erlang.x86_64      
rm -rf /usr/lib64/erlang
rm -rf /usr/lib/rabbitmq 
rm -rf /usr/local/erlang 
rm -rf /usr/local/rabbitmq