如何yum部署RabbitMQ?

即时通讯

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客户端端口,管理UIRabbitmqadmin
– 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

没有评论

发表评论