1 基础知识
1.1 RabbitMQ的简介
– RabbitMQ拥有成千上万的用户,是最受欢迎的开源消息代理之一
– RabbitMQ在全球范围内小型初创企业和大型企业都有使用
1.2 RabbitMQ的特点
– RabbitMQ轻巧、易于在内部和云中部署
– RabbitMQ支持多种消息传递协议
– RabbitMQ可以部署在分布式和联合配置中,以满足大规模、高性能的需求
1.3 RabbitMQ支持的协议
– AMQP 0-9-1和扩展(最初支持的协议),二进制协议,可定义强大的消息传递语义,客户端容易实现
– STOMP,基于文本消息传递协议通过插件才能支持,强调协议简单性,几乎无消息传递语义定义
– MQTT,二进制协议,强调轻量级发布、订阅消息传递,目标是受限设备客户端,支持MQTT 3.1
– AMQP 1.0,与旧版分属不同协议,线路级别不共享内容、新版对语义要求少故易容于代理,客户端实用少
– HTTP和Web Sockets,HTTP不属于真正的消息传递协议,RabbitMQ通过三种方式进行HTTP消息传输,
— STOMP插件支持STOMP传递WebSockets消息到浏览器
— MQTT插件支持WebSockets支持MQTT传递消息到浏览器
— 管理插件支持简单HTTP API方式发送和接收消息(用于诊断目的)
1.3 RabbitMQ的开发语言
– Java
– .NET
– PHP
– Python
– JavaScript
– Ruby
– Go
– 其他语言
1.4 RabbitMQ的端口
– 4369,epmd守护进程或RabbitMQ节点和CLI工具使用的对等发现服务的端口
– 567[1-2],非TLS或TLS的AMQP 0-9-1和1.0客户端的服务端口
– 25672,用于节点间和CLI工具通讯(Erlang分发服务器端口)并从动态范围分配(不建议公开)
– 356[72-82],由CLI工具(Erlang分发客户端端口)用于与节点进行通讯
– 15672,HTTP API客户端端口,管理UI和Rabbitmqadmin
– 6161[3-4],非TLS或TLS的STOMP客户端端口
– [1,8]883,非TLS或TLS的MQTT客户端端口
– 15674,STOMP-over-WebSockets客户端端口
– 15675,MQTT-over-WebSockets客户端端口
– 15692,Prometheus端口
2 最佳实践
2.1 安装前的准备
2.1.1 环境信息
OS = CentOS 7.x x86_64
IP Address = 10.168.0.27
Host Name = rabbitmq.cmdschool.org
2.1.2 安装epel包
yum install -y epel-release
2.2 安装 RabbitMQ
2.1.1 安装软件包
yum install -y rabbitmq-server
2.1.2 启动服务并设置服务默认启动
systemctl start rabbitmq-server systemctl enable rabbitmq-server
然后,我们使用如下命令确认服务的状态,
systemctl status rabbitmq-server
另外,也可以使用如下命令查看服务倾听的端口,
netstat -antp | egrep "epmd|beam"
可见如下信息,
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 2537/epmd tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 2616/beam tcp 0 0 127.0.0.1:42006 127.0.0.1:4369 ESTABLISHED 2616/beam tcp 0 0 127.0.0.1:4369 127.0.0.1:42006 ESTABLISHED 2537/epmd tcp6 0 0 :::4369 :::* LISTEN 2537/epmd tcp6 0 0 :::5672 :::* LISTEN 2616/beam
2.1.3 开启所需的服务端口
firewall-cmd --permanent --add-port 4369/tcp firewall-cmd --permanent --add-port 5672/tcp firewall-cmd --reload firewall-cmd --list-all
2.2 启用管理插件服务
2.2.1 启用管理插件
rabbitmq-plugins enable rabbitmq_management
可见如下输出,
The following plugins have been enabled: mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent rabbitmq_management
然后,可以使用如下命令确认启动的插件,
rabbitmq-plugins list
可见如下输出,
[e] amqp_client 3.3.5 [ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d [ ] eldap 3.3.5-gite309de4 [e] mochiweb 2.7.0-rmq3.3.5-git680dba8 [ ] rabbitmq_amqp1_0 3.3.5 [ ] rabbitmq_auth_backend_ldap 3.3.5 [ ] rabbitmq_auth_mechanism_ssl 3.3.5 [ ] rabbitmq_consistent_hash_exchange 3.3.5 [ ] rabbitmq_federation 3.3.5 [ ] rabbitmq_federation_management 3.3.5 [E] rabbitmq_management 3.3.5 [e] rabbitmq_management_agent 3.3.5 [ ] rabbitmq_management_visualiser 3.3.5 [ ] rabbitmq_mqtt 3.3.5 [ ] rabbitmq_shovel 3.3.5 [ ] rabbitmq_shovel_management 3.3.5 [ ] rabbitmq_stomp 3.3.5 [ ] rabbitmq_test 3.3.5 [ ] rabbitmq_tracing 3.3.5 [e] rabbitmq_web_dispatch 3.3.5 [ ] rabbitmq_web_stomp 3.3.5 [ ] rabbitmq_web_stomp_examples 3.3.5 [ ] sockjs 0.3.4-rmq3.3.5-git3132eb9 [e] webmachine 1.10.3-rmq3.3.5-gite9359c7
以上设置完成后,你可能需要使用如下命令重启服务使配置生效,
systemctl restart rabbitmq-server
然后,你需要使用如下命令确认服务端口已经倾听,
netstat -antp | egrep "epmd|beam"
可见如下信息,
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 3083/epmd tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 3066/beam tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 3066/beam tcp 0 0 127.0.0.1:34021 127.0.0.1:4369 ESTABLISHED 3066/beam tcp 0 0 127.0.0.1:4369 127.0.0.1:34021 ESTABLISHED 3083/epmd tcp6 0 0 :::4369 :::* LISTEN 3083/epmd tcp6 0 0 :::5672 :::* LISTEN 3066/beam
2.2.2 设置管理员账号和密码
rabbitmqctl add_user admin adminpwd rabbitmqctl set_user_tags admin administrator
2.2.3 开启所需的服务端口
firewall-cmd --permanent --add-port 15672/tcp firewall-cmd --reload firewall-cmd --list-all
2.1.6 浏览器测试
In Windows Client,
notepad \Windows\System32\drivers\etc\hosts
加入如下配置,
10.168.0.27 rabbitmq.cmdschool.org
以上名称解析仅适用于测试环境,生产环境请使用DNS配置,然后使用浏览器访问如下地址,
http://rabbitmq.cmdschool.org:15672/
可见如下显示,
User: admin
Password: adminpwd
2.3 性能优化
2.3.1 查询服务状态
rabbitmqctl status
可见如下显示,
Status of node rabbit@localhost ... [{pid,3066}, [...] ...done.
“[…]”表示省略,并注意到PID是“3066”,于是可以使用如下命令查看开启文件数限制,
cat /proc/3066/limits
可见如下显示,
Limit Soft Limit Hard Limit Units [...] Max open files 1024 4096 files [...]
2.3.2 修改最大文件数限制
mkdir /etc/systemd/system/rabbitmq-server.service.d/ vim /etc/systemd/system/rabbitmq-server.service.d/limits.conf
加入如下配置,
[Service] LimitNOFILE=64000
配置修改完毕后,需要使用如下命令重载服务使服务配置生效,
systemctl daemon-reload
然后,需要使用如下命令重启服务使配置生效,
systemctl restart rabbitmq-server
参阅文档
============
官方首页
————
https://www.rabbitmq.com/
下载和安装教程
———–
https://www.rabbitmq.com/download.html
使用教程
————
https://www.rabbitmq.com/getstarted.html
rabbitmq Managerment的使用
—————————
https://www.rabbitmq.com/management.html
没有评论