Centos7搭建单机RabbitMQ

Centos7搭建单机RabbitMQ

必要环境准备

yum -y install wget make gcc gcc-c++ kernel-devel openssl-devel ncurses-deve

安装erlang

yum install -y epel-release
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install -y erlang
erl -version

或者这样

新建文件 内容如下vi /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
enabled=1
[root@192 ~]# yum install erlang   

安装RabbitMQ

导入密钥

rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgke
rpm --import https://packagecloud.io/gpg.key

为了使用yum存储库,必须在/etc/yum.repos.d/目录下添加一个.repo文件(例如rabbitmq-server.repo)。

Centos7

[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1

Centos8

[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/8/
gpgcheck=0
repo_gpgcheck=0
enabled=1

安装rabbitmq

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.11/rabbitmq-server-3.8.11-1.el7.noarch.rpm  #Centos7
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.11/rabbitmq-server-3.8.11-1.el8.noarch.rpm  #Centos8

rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.8.11-1.el7.noarch.rpm    #Centos7
yum install rabbitmq-server-3.8.11-1.el8.noarch.rpm    #Centos8

使用

安装RabbitMQ服务器软件包时,默认情况下未将服务器作为守护程序启动。 在系统引导时默认启动守护程序,以管理员身份运行

chkconfig rabbitmq-server on

启动服务

systemctl start rabbitmq-server   #启动服务
systemctl stop rabbitmq-server    #关闭服务

查看相关的配置选项

[root@test opt]# rabbitmqctl status
Status of node rabbit@test ...
Runtime
OS PID: 19823
OS: Linux
Uptime (seconds): 368
Is under maintenance?: false
RabbitMQ version: 3.8.11
Node name: rabbit@test
Erlang configuration: Erlang/OTP 23 [erts-11.1.5] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
Erlang processes: 277 used, 1048576 limit
...........

常见端口

在正常启动的情况下,节点使用系统的默认值来运行,如果想了解更多更多的配置选项来适合在生产环境下的需求,请参考官方的配置指南。

注意:节点默认使用rabbitmq用户来运行服务。如果更改了节点数据库或日志的位置,则应该将劝降付给rabbitmq用户

RabbitMQ常见的一些端口的介绍,

  • 4369: epmd、RabbitMQ 节点和 CLI 工具使用的对等发现服务
  • 5672、5671:AMQP 0-9-1 和 1.0 客户端使用,无需 TLS
  • 25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000) 除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开暴露。 有关详细信息,请参见网络指南。
  • 35672-35682:CLI 工具(Erlang 分发客户端端口)用于与节点通信,动态分配端口(过服务器分发端口+ 10010 计算为服务器分发端口 + 10000)
  • 15672:HTTP API客户端、管理 UI(仅在启用管理插件时)
  • 61613, 61614:没有 TLS和 TLS 的 STOMP 客户端(仅在启用 STOMP 插件时)
  • 1883, 8883: rabbitmq MQTT TCP方式访问的端口 ,比如java订阅发布mqtt消息
  • 15674: RabbitMQ STOMP WebSocket方式访问的端口,比如JS发布订阅消息
  • 15675: RabbitMQ MQTT WebSocket方式访问的端口,比如JS发布订阅消息(rabbitmq-plugins enable rabbitmq_web_mqtt)
  • 15692: abbitmq_prometheus插件中提供了对Prometheus指标收集的支持。该插件以Prometheus文本格式在专用的TCP端口(默认端口15692)上公开所有RabbitMQ指标。

用户管理

rabbitmqctl add_user 'admin' 'admin123'  #添加用户admin   密码为admin123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl list_users   #列出用户
rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"   #授予admin权限 /虚拟主机所有权限
rabbitmqctl clear_permissions -p "/" "admin"   #撤销权限
rabbitmqctl delete_user 'admin'  #删除用户

每个rabbitmqctl权限管理操作都作用于单个虚拟主机。 批量操作必须编写脚本,虚拟主机的列表来自rabbitmqctl list_vhosts --silent:

# 假设使用Linux Shell。
# 授予用户对所有虚拟主机的权限。
for v in $(rabbitmqctl list_vhosts --silent); do rabbitmqctl set_permissions -p $v "a-user" ".*" ".*" ".*"; done

开启Web管理界面插件

[root@test opt]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@test:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@test...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

开启后访问http://ip:15672来访问管理界面,如果不能访问请检查防火墙是否开放端口。

[root@test opt]# firewall-cmd --zone=public --add-port=5672/tcp --permanent
success
[root@test opt]# firewall-cmd --zone=public --add-port=15672/tcp --permanent
success
[root@test opt]# firewall-cmd --zone=public --add-port=25672/tcp --permanent
success
[root@test opt]# firewall-cmd --reload
success

其他操作

查看运行日志

sudo journalctl --system | grep rabbitmq

查看已启用的端口

[root@test opt]# rabbitmqctl status | grep Interface
Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Interface: [::], port: 15672, protocol: http, purpose: HTTP API

查看已启用的插件

rabbitmq-plugins list
posted @ 2021-01-31 13:51  崔安兵  阅读(132)  评论(0编辑  收藏  举报