侧边栏壁纸
  • 累计撰写 47 篇文章
  • 累计收到 0 条评论

CentOS7.4 安装高性能消息中间件 RabbitMQ 服务

2021-12-12 / 0 评论 / 186 阅读
温馨提示:
本文最后更新于 2021-12-12,已超过半年没有更新,若内容或图片失效,请留言反馈。

之所以写下这篇文章,是因为在用 CentOS 7.4 安装 RabbitMQ 时遇到坑了,特此记录以便查阅。

RabbitMQ 是实现了 高级消息队列协议(AMQP) 的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ 服务器是用 Erlang 语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

废话不多说,直接奔实践去:

RabbitMQ 现在已经更新到了 3.8 版本,但是我们在这安装的是 3.7.9,其实都是一样的。安装前有件事需要告知大家,就是安装 RabbitMQ 之前需要安装 erlang, 而且一个很关键的点就是 RabbitMQ 的安装版本必须匹配 erlang 版本。如下截图是版本对应表,大家可以到 RabbitMQ 官方(地址) [查看版本对应关系]

官方的提示很明显, RabbitMQ 3.7.9 版本需要安装 >20.3.x <21.3.x 版本的 erlang
首先查看下 yumerlang 版本

yum info erlang

如果显示的Version不是我们想要的版本,则

vim /etc/yum.repos.d/rabbitmq-erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

然后执行

yum clean all
yum makecache

再一次查看erlang版本

yum info erlang

OK!
遇到的坑来了,就是安装erlang时候。在执行 yum install erlang 时报错。大概意思是说 /usr/lib64/erlang 冲突, 于是我怀疑系统已经有安装好的 erlang, 执行

yum list installed |grep erlang

发现出来一大堆的 erlang 及扩展依赖,还是 22.x 版本的。
所以我们需要一个个卸载 ,执行命令

yum remove 包名

卸载到主依赖时会自动卸载其他依赖,在这里主依赖是yum remove erlang-erts-22.0.1-1.el7.x86_64 各位也可以试试。

我们再次执行

yum install erlang

安装成功!完成解坑!!!

接下来我们安装 RabbitMQ, 个人喜好, 我的 RabbitMQ rpm放在 /var/opt/rabbitmq目录,你们随意。

mkdir /var/opt/rabbitmq
cd /var/opt/rabbitmq

下载 RabbitMQ

wget  https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el6.noarch.rpm

安装命令

yum install rabbitmq-server-3.7.9-1.el6.noarch.rpm

安装完成!


接下来我们需要做的事:

启动 RabbitMQ 服务

rabbitmq-server start

设置后台启动命令

rabbitmq-server -detached

查看 RabbitMQ 服务状态

rabbitmqctl status

关闭 RabbitMQ 服务

rabbitmqctl stop

设置为后台守护进程启动并且随系统启动而启动

sudo chkconfig rabbitmq-server on

查看 RabbitMQ 已安装的插件命令

rabbitmq-plugins list

MQ 不单止一个进程哦,多执行 ps aux|grep rabbitmq 看看,特别是kill的时候。

接下来,如果直接访问是访问不到 Web 页面的,需要我们安装一个 web 管理端插件

rabbitmq-plugins enable rabbitmq_management

防火墙开放 RabbitMQ156725672 端口
我这里使用的是 iptables,步骤如下:

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT // 增加一行配置
// 重启
systemctl restart iptables.service

先别急着登录 RabbitMQ 管理面板哦。因为 RabbitMQ 一般默认有一个guest 用户和一个 administrator 管理员用户,但是 guest 用户只可以在本机通过 localhost 的方式访问,如果要通过别的机器登陆 Web 访问就得新加一个用户并且授权。
1.查询用户列表

rabbitmqctl list_users

2.新增一个用户

rabbitmqctl add_user 用户名 用户密码

3.赋予其administrator角色

rabbitmqctl set_user_tags 用户名 administrator

4.设置其用户权限

rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"

5.修改用户密码

rabbitmqctl change_password 用户名 用户密码

6.删除一个用户

rabbitmqctl delete_user 用户名

然后访问 http://ip:15672 就可以访问 RabbitMQ Web 管理界面 (这个是登录后的界面)

文章的最后,推荐安装个 RabbitMQ 延迟队列插件 rabbitmq_delayed_meaage_exchange
如果rabbitmq-plugins list 命令发现插件没安装

cd /var/opt/rabbitmq
// 下载插件
wget https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip
// 解压插件
unzip rabbitmq_delayed_message_exchange-20171201-3.7.x.zip
// 放置插件文件夹(我这边的是安装在 /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.9/plugins, 这个路径得看各位安装 rabbitmq 位置了)
mv rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.9/plugins
// 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

搞定!!!

可以让你的消息队列飞起来啦~

评论一下?

OωO
取消