前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7上安装配置RabbitMQ

CentOS7上安装配置RabbitMQ

作者头像
码客说
发布2019-10-22 17:11:36
8850
发布2019-10-22 17:11:36
举报
文章被收录于专栏:码客码客

安装

先安装erlang

代码语言:javascript
复制
yum install erlang

完成后安装RabbitMQ

先下载rpm:

代码语言:javascript
复制
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

下载完成后安装:

代码语言:javascript
复制
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

完成后启动服务:

代码语言:javascript
复制
service rabbitmq-server start

可以查看服务状态:

代码语言:javascript
复制
service rabbitmq-server status

找到其中类似一下的一行

代码语言:javascript
复制
Logs: /var/log/rabbitmq/rabbit@izhp3fm4qmc7vnoeegv7zyz.log

打开对应的文件

代码语言:javascript
复制
vi /var/log/rabbitmq/rabbit@izhp3fm4qmc7vnoeegv7zyz.log

里面有这样的一行

代码语言:javascript
复制
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)

配置文件未找到 那我们新建配置文件

代码语言:javascript
复制
cd /etc/rabbitmq/
vi rabbitmq.config

编辑内容如下:

代码语言:javascript
复制
[{rabbit, [{loopback_users, []}]}].

这里的意思是开放使用

默认创建的用户guest,密码也是guest。

该用户不能用于远程登录,可用于管理UI的登录。

保存配置后重启服务:

代码语言:javascript
复制
service rabbitmq-server stop
service rabbitmq-server start

此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用

代码语言:javascript
复制
rm rabbit\@mythsky.log 
service rabbitmq-server stop
service rabbitmq-server start

开放5672端口:

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

开机自启动

代码语言:javascript
复制
chkconfig rabbitmq-server on

查看

代码语言:javascript
复制
chkconfig --list
# 或者
systemctl list-units --type=service

Docker中配置

docker环境中配置rabbitmq时 rabbitmq的数据库名称规则是,NODENAME@hostname,Docker每次从docker image启动容器的时候会自动生成hostname,这样一来,你保存在主机上的数据库就会没用了,包括之前创建的用户也会没有了。

所以在创建容器的时候必须指定--hostname=rabbitmqhostone,这样docker环境启动后rabbitmq就会一直读取固定目录中的数据了

添加用户

图形化管理

开启管理UI:

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_management
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload

就可以通过http://ip:15672访问管理页面

命令行管理

/etc/rabbitmq/rabbitmq.config配置文件下(如果不存在就自行创建)添加

代码语言:javascript
复制
[
 {rabbit,[{tcp_listeners,[5672]},{loopback_users,["admin"]}]}
]

添加用户

代码语言:javascript
复制
rabbitmqctl add_user admin admin

授权

代码语言:javascript
复制
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

设置用户角色

代码语言:javascript
复制
rabbitmqctl set_user_tags admin administrator

查看新添加的admin

代码语言:javascript
复制
rabbitmqctl list_users

查看用于的权限

代码语言:javascript
复制
rabbitmqctl list_permissions -p /

打开地址:http://ip:15672,使用admin/admin即可登录

RabbitMQ集群

集群配置和启动

如果是在一台机器上同时启动多个 RabbitMQ 节点来组建集群的话,只用上面介绍的方式启动第二、第三个节点将会因为节点名称和端口冲突导致启动失败。

所以在每次调用 rabbitmq-server 命令前,设置环境变量 RABBITMQ_NODENAMERABBITMQ_NODE_PORT 来明确指定唯一的节点名称和端口。

下面的例子端口号从5672开始,每个新启动的节点都加1,节点也分别命名为test_rabbit_1、test_rabbit_2、test_rabbit_3。

启动第1个节点:

代码语言:javascript
复制
RABBITMQ_NODENAME=test_rabbit_1 RABBITMQ_NODE_PORT=5672 /usr/sbin/rabbitmq-server -detached

启动第2个节点:

代码语言:javascript
复制
RABBITMQ_NODENAME=test_rabbit_2 RABBITMQ_NODE_PORT=5673 /usr/sbin/rabbitmq-server -detached

启动第2个节点前建议将 RabbitMQ 默认激活的插件关掉,否则会存在使用了某个插件的端口号冲突,导致节点启动不成功。

现在第2个节点和第1个节点都是独立节点,它们并不知道其他节点的存在。集群中除第一个节点外后加入的节点需要获取集群中的元数据,所以要先停止 Erlang 节点上运行的 RabbitMQ 应用程序,并重置该节点元数据,再加入并且获取集群的元数据,最后重新启动 RabbitMQ 应用程序。

停止第2个节点的应用程序:

代码语言:javascript
复制
/usr/sbin/rabbitmqctl -n test_rabbit_2 stop_app

重置第2个节点元数据:

代码语言:javascript
复制
/usr/sbin/rabbitmqctl -n test_rabbit_2 reset

第2节点加入第1个节点组成的集群:

代码语言:javascript
复制
/usr/sbin/rabbitmqctl -n test_rabbit_2 join_cluster test_rabbit_1@localhost

启动第2个节点的应用程序

代码语言:javascript
复制
/usr/sbin/rabbitmqctl -n test_rabbit_2 start_app

第3个节点的配置过程和第2个节点类似:

代码语言:javascript
复制
RABBITMQ_NODENAME=test_rabbit_3 RABBITMQ_NODE_PORT=5674 /usr/sbin/rabbitmq-server -detached

/usr/sbin/rabbitmqctl -n test_rabbit_3 stop_app
/usr/sbin/rabbitmqctl -n test_rabbit_3 reset
/usr/sbin/rabbitmqctl -n test_rabbit_3 join_cluster test_rabbit_1@localhost
/usr/sbin/rabbitmqctl -n test_rabbit_3 start_app

集群运维

停止某个指定的节点,比如停止第2个节点:

代码语言:javascript
复制
RABBITMQ_NODENAME=test_rabbit_2 /usr/sbin/rabbitmqctl stop

查看节点3的集群状态:

代码语言:javascript
复制
/usr/sbin/rabbitmqctl -n test_rabbit_3 cluster_status
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • Docker中配置
  • 添加用户
    • 图形化管理
      • 命令行管理
      • RabbitMQ集群
        • 集群配置和启动
          • 集群运维
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档