Centos7 安装最新RabbitMQ及配置

前言
最近在学习SpringCloud,发现其中的消息总线是依靠消息中间件实现的,加之公司也有在使用RabbitMQ,所以就想从零开始,从官网逐步学习一下RabbitMQ。下面的安装教程是我从官网一步一步翻译、实践过来的,如有表达不到位,还请多多指教!RabbitMQ官方安装教程

  1. rpm包安装
    1.1. 用户权限

使用rpm包安装,要求我们拥有sudo权限,如果没有sudo权限的话,请参考官网如何使用源码进行安装。

1.2. 安装依赖环境Erlang

方法一:

安装erlang-rpm包,该包经过RabbitMQ官方处理,去掉了一些无用的依赖,只保存运行RabbitMQ所需要的Erlang模块。

方法二:

使用Erlang Solutions源进行安装

下载rpm包

wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

从erlang-solutions中更新该包,并将erlang_solutions.repo添加到/etc/yum.repos.d

rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

安装

yum install erlang


该包还需依赖到epel源,请确保已有该源,若没有则可通过以下方式安装:
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum repolist # 查看安装是否成功
由于Erlang Solutions会进行不断地更新,且RabbitMQ对Erlang的版本有一定的要求(官方版本要求对应表)。所以官方建议我们禁止Erlang版本的自动更新。方法如下:参考如何禁止某个软件包的自动升级

安装yum-versionlock

yum install yum-plugin-versionlock

禁止Erlang自动更新

yum versionlock erlang
注:默认情况下,yum似乎是不会自动更新软件的,除非安装了yum-cron这个软件或者自己写了某些自动更新脚本。如果是前者的话,我们也可以 cd /etc/yum 目录下,将yum-cron.conf中的download_updates = yes 改为 no。

方法三:

使用EPEL(“Extra Packages for Enterprise Linux”)进行安装,但该方式安装到的包可能不是最新版的,所以在安装前请自行确认好版本号是否适合。

yum install erlang
1.3. 安装RabbitMQ Server

从官网下载rpm包并上传到服务器上。官方下载链接

导入签名

rpm –import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

rpm –import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

安装

yum install rabbitmq-server-3.7.7-1.el7.noarch.rpm

  1. 使用脚本安装

创建erlang.repo库

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

安装

yum install erlang

创建rabbitmq-server.repo库

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

安装

yum install rabbitmq-server
这种方式虽然会简单点,但我尝试过,发现只有翻墙才能安装成功,所以不太推荐大家使用这种方法。

  1. 启动RabbitMQ Server

设置开启启动

chkconfig rabbitmq-server on

启动服务

service rabbitmq-server start

停止服务

service rabbitmq-server stop

  1. 配置RabbitMQ
    4.1 找到配置文件

启动RabbitMQ后,会在 /var/log/rabbitmq 目录下生成运行日志,在日志的最上方,我们可以看到配置文件的信息:

然而,发现刚开始的时候并没有任何配置文件。只好照着官方的介绍,到 /usr/share/doc/rabbitmq-server-3.7.7/ 目录下复制一份模板到 /etc/rabbitmq 目录下进行修改

cd /usr/share/doc/rabbitmq-server-3.7.7/

cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
这里值得提一下,从3.7.0开始,rabbitmq的配置文件引入了一个新的配置文件 rabbitmq.conf(rabbitmq.conf配置模板),该文件使用 key= value的格式进行配置,使配置文件看起来更加简洁易懂。当两个配置文件都存在的时候,rabbitmq只会读取旧版的配置文件。另外,官方还提到在 /usr/share/doc/rabbitmq-server-3.7.7/ 目录下,还有一个名为 advanced.config.example 的配置文件模板,用来配置rabbitmq的一些高级属性,但是我并没有找到,后面发现他已经整合到 rabbitmq.conf.example的文件末尾了。

虽然新版配置文件很简洁,但在配置LDAP Support时需要比较复杂的数据结构,所以我们将该配置放在advanced.config配置。rabbitmq在启动的时候能同时加载这两个配置文件文件。

4.2 开启管理后台

rabbitmq自带了管理后台插件,只要开启这个插件,就可以通过浏览器查看rabbitmq的信息以及管理它。

rabbitmq-plugins enable rabbitmq_management

开放端口

firewall-cmd –add-port=15672/tcp –permanent
firewall-cmd –reload
浏览器访问 http://ip:15672 ,进入如下页面就证明插件启动成功了。

4.3 配置用户权限

rabbitmq 默认会帮我们创建一个guest用户,密码也是guest。因此为了安全,建议删除该用户或修改密码。该用户拥有所有的权限的,但默认不能通过远程访问,只能通过localhost访问。为了能远程访问rabbitmq,我们可以取消guest用户的本地访问限制:

新版配置文件 rabbitmq.conf 打开以下注释

loopback_users.guest = false

旧版配置文件 rabbitmq.config 打开以下注释,并记得去掉后面的逗号

{loopback_users, []},
或者添加一个新的用户:

添加用户

rabbitmqctl add_user 用户名 密码

赋予用户管理员角色

rabbitmqctl set_user_tags 用户 administrator

在使用rabbitmqctl 命令的时候,我遇到了下面一个大坑,希望你们遇到的时候能顺利点:

Error: unable to perform an operation on node ‘rabbit@yky’. Please see diagnostics information and suggestions below.

Most common reasons for this are:

  • Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
  • CLI tool fails to authenticate with the server (e.g. due to CLI tool’s Erlang cookie not matching that of the server)
  • Target node is not running
    In addition to the diagnostics info below:
  • See the CLI, clustering and networking guides on http://rabbitmq.com/documentation.html to learn more
  • Consult server logs on node rabbit@yky

DIAGNOSTICS

attempted to contact: [rabbit@yky]
rabbit@yky:

  • connected to epmd (port 4369) on yky
  • epmd reports node ‘rabbit’ uses port 25672 for inter-node and CLI tool traffic
  • can’t establish TCP connection to the target node, reason: timeout (timed out)
  • suggestion: check if host ‘yky’ resolves, is reachable and ports 25672, 4369 are not blocked by firewall

Current node details:

  • node name: rabbitmqcli12@yky
  • effective user’s home directory: /var/lib/rabbitmq
  • Erlang cookie hash: xy7BSDdfGOwsW5CEeaA/QA==
    在网上找了很久,遇到该问题的几乎都是window上.erlang.config不一致的问题。但我通过 find / -name ‘*.erlang.config’ 全局搜索,发现该文件只有在/var/lib/rabbitmq 目录出现过,根本不存就在不一致的问题。到后来才发现是我的主机名yky没有映射好。

因此解决方法就是将主机名加入到 /etc/hosts 文件中:

4.4 修改rabbitmq打开文件数量

使用上一步配置的用户登录进管理后台,可知rabbitmq默认的文件打开数是1024,这对消息中间件来说太低了。官方建议我们在正式环境至少配置65536,而在开发环境中配置到4096。

修改方法:

4.4.1 官方方法:

打开limits.conf

vim /etc/systemd/system/rabbitmq-server.service.d/limits.conf

在Service 下添加 LimitNOFILE = 300000

[Service]
LimitNOFILE = 300000

重启服务

service rabbitmq-server restart
4.4.2 个人成功方法:

打开rabbitmq-server.service,(没办法,找不到官方说的limits.conf)

vim /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service

同样在Service模块下,加入LimitNOFILE = 300000

[Service]
LimitNOFILE = 300000

重启rabbitmq,访问管理后台,发现打开文件数并没有修改成功,依旧是1024

打开 sysctl.conf

vim /etc/sysctl.conf

添加:

fs.file-max = 65535

重新启动机子

reboot

再次访问管理后台,发现打开数已改为300000

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇