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 分发客户端端口)用于与节点通信,从动态范围(通过服务器分发端口 = 10000 计算为服务器分发端口 = 10010)进行分配。有关详细信息,请参阅网络指南。
- 15672:HTTP API客户端、管理 UI 和 rabbitmqadmin(仅在启用管理插件时)
- 61613, 61614:没有 TLS和 TLS 的 STOMP 客户端(仅在启用 STOMP 插件时)
- 1883, 8883: MQTT 客户端没有和与 TLS, 如果MQTT插件启用
- 15674: 在 WebSockets 客户端上安装
- 15675: MQTT- 网络搜索客户端(仅在启用 Web MQTT 插件时)
- 15692: 普罗米修斯指标(仅在启用普罗米修斯插件时)
用户管理
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