RabbitMQ 安装笔记

关于RabbitMQ的安装,本来应该是在学习RabbitMQ之前进行的,不过当时学习时为了快速上手,就直接用Docker来开始开启了一个RabbitMQ的实例。这篇部署笔记就是来还债的。

CentOS 7.3 + RabbitMQ 3.7.4

安装

首先看下系统版本,这关系到后边具体下载哪个包

1
2
$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

可以看到当前要部署的服务器是CentOS 7.3版本的

然后访问 http://www.rabbitmq.com/download.html 选最新的RabbitMQ的版本3.7.4,并按下图所示进入CentOS 版本的安装指引。

进去后选择对应的版本的,我的属于 7.x 的,将对应的 rpm 包下载到本地。上下两个版本是一样的,哪个下载速度快用哪个吧。

下载好 rpm 后先别着急安装的,还需要安装Erlang环境。(如果已安装有 Erlang 19.3 以上的版本,可以忽略这步)

RabbitMQ 需要 Erlang 的版本不低于 19.3,推荐是使用 20.x

  • We recommend Erlang/OTP 19.3.6.4 or later, earlier versions have known bugs (e.g. ERL-430, ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
  • For the best TLS support, the latest version of Erlang/OTP 20.x is recommended

直接用yum install erlang安装的版本是R16B-03.18.el7,不满足要求。

不用担心,RabbitMQ贴心的提供了一个 erlang.repo

将以下内容添加到/etc/yum.repos.d/rabbitmq-erlang.repo

1
2
3
4
5
6
7
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

然后再次用yum安装erlang就是20.3.4-1.el7.centos

1
yum install erlang

然后开始安装RabbitMQ

1
2
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.7.4-1.el7.noarch.rpm

开启rabbitmq_management以便通过浏览器访问控制台

1
rabbitmq-plugins enable rabbitmq_management

我们将RabbitMQ加入开机自启动并立刻开启

1
2
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

通过systemctl status rabbitmq-server.service看到如下内容就说明RabbitMQ启动成功了

管理控制台的地址默认为 http://server-name:15672 (将其中server-name替换为你自己的ip地址)

RabbitMQ 默认有个 guest 账号,密码也为 guest,但是如果不是从RabbitMQ所在机器上试图用这个账号登陆管理控制台的话,会报错误:

1
User can only log in via localhost

“guest” user can only connect via localhost
RabbitMQ - Access Control (Authentication, Authorisation) in RabbitMQ

那我们就自己添加一个账户吧,用户名 windmt 密码 changeit

1
rabbitmqctl add_user windmt changeit

用这个账户再次尝试登陆,还是报错,说该用户不是管理者

1
Not management user

既然说不是管理者,那必然涉及到角色或权限方面的问题。

在RabbitMQ中,用户角色可分为五类:

  1. 超级管理员 (administrator):可登陆管理控制台,可查看所有的信息,并且可以对用户、策略 (policy) 进行操作。
  2. 监控者 (monitoring):可登陆管理控制台,同时可以查看 RabbitMQ 节点的相关信息 (进程数,内存使用情况,磁盘使用情况等)
  3. 策略制定者 (policymaker):可登陆管理控制台,同时可以对 policy 进行管理。但无法查看节点的相关信息。
  4. 普通管理者 (management):仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
  5. 其他:无法登陆管理控制台,通常就是普通的生产者和消费者。

我们就再为该用户赋予超级管理员的角色

1
rabbitmqctl set_user_tags windmt administrator

再次登陆就OK了,熟悉的界面又回来了。

这个一个单节点的RabbitMQ服务就搭建好了,后边我们将会继续研究它的配置与集群。

参考

RabbitMQ - Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE)