CentOS上安装配置RabbitMQ Server

1. 安装Erlang#

由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。

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

  

  

2. 安装RabbitMQ Server#

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

 

3. 更改系统限制#

有两个限制:操作系统内核允许的最大打开文件数(fs.file-max)和每个用户的限制(ulimit -n)。前者必须高于后者。

我们建议在生产环境中为用户Rabbitmq至少允许65536个文件描述符

查看内核允许的最大文件数

1
sysctl -n fs.file-max

  不够则修改/etc/sysctl.conf,然后运行sysvtl -p

 

修改rabbitmq进程允许的最大文件数,systemd编辑

1
/usr/lib/systemd/system/rabbitmq-server.service中的LimitNOFILE参数
1
2
3
4
[root@node2 ~]# cat /usr/lib/systemd/system/rabbitmq-server.service |grep LimitNOFILE
# To override LimitNOFILE, create the following file:
# LimitNOFILE=65536
LimitNOFILE=65536

 如果是旧版的系统,没有systemd的。可以修改

1
2
3
4
cat /etc/security/limits.conf
.......
* soft nofile 65535
* hard nofile 65535

  

重启服务后验证限制

1
2
3
4
5
[root@node2 ~]# lsof -i:15672
COMMAND     PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
beam.smp 129344 rabbitmq   96u  IPv4 103591373      0t0  TCP *:15672 (LISTEN)
[root@node2 ~]# cat /proc/129344/limits |grep "Max open files"
Max open files            65536                65536                files  

  

4. 启动和关闭 #

1
2
systemctl start rabbitmq-server
systemctl stop rabbitmq-server

  

5. 日志目录#

/var/log/rabbitmq/rabbit

日志每周轮询一次,配置文件在: /etc/logrotate.d/rabbitmq-serve

 

6. 开启WEB UI#

rabbitmq-plugins enable rabbitmq_management

默认账号密码:guest guest(这个账号只允许本机访问)

 

7. 创建用户#

6.1 创建一个用户,具有管理员权限

1
2
rabbitmqctl add_user admin  password
rabbitmqctl set_user_tags admin  administrator

6.2 创建一个用户和虚拟主机,并允许该用户访问该虚拟主机

1
2
3
4
rabbitmqctl add_user celery celery
rabbitmqctl add_vhost celery_vhos
rabbitmqctl set_user_tags celery  celery_tag
rabbitmqctl set_permissions -p celery_vhost celery  ".*" ".*" ".*"

 #

8. 默认端口#

  • 4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务
  • 5672、5671:由不带TLS和带TLS的AMQP 0-9-1和1.0客户端使用
  • 25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开。有关详细信息,请参见网络指南
  • 35672-35682:由CLI工具(Erlang分发客户端端口)用于与节点进行通信,并从动态范围(计算为服务器分发端口+ 10000通过服务器分发端口+ 10010)分配。有关详细信息,请参见网络指南
  • 15672:HTTP API客户端,管理UIRabbitmqadmin (仅在启用管理插件的情况下)
  • 61613、61614:不带TLS和带TLS的STOMP客户端(仅在启用STOMP插件的情况下)
  • 1883、8883 :(如果启用MQTT插件,则不带TLS和具有TLS的MQTT客户端
  • 15674:STOMP-over-WebSockets客户端(仅在启用Web STOMP插件的情况下)
  • 15675:MQTT-over-WebSockets客户端(仅在启用Web MQTT插件的情况下)
  • 15692:Prometheus指标(仅在启用Prometheus插件的情况下)

 

参考文档:

https://www.rabbitmq.com/install-rpm.html

https://www.rabbitmq.com/production-checklist.html

posted @   头痛不头痛  阅读(1507)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩