1. RabbitMQ概述与环境规划
RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP)。它以可靠性、灵活性和易用性著称,广泛应用于分布式系统中的异步通信、解耦和流量削峰场景。更多学习教程www.fgedu.net.cn
1.1 RabbitMQ版本说明
RabbitMQ目前主要版本为3.13,本教程以RabbitMQ 3.13为例进行详细讲解。
$ rabbitmqctl version
3.13.0
# 查看服务器状态
$ rabbitmqctl status
# 输出示例:
Status of node rabbit@fgedudb01 …
Runtime
OS PID: 12345
OS: Linux
Uptime (seconds): 86400
RabbitMQ version: 3.13.0
Erlang version: 26.2.1
Listeners
Interface: [::], port: 5672, protocol: amqp
Interface: [::], port: 15672, protocol: http
Interface: [::], port: 25672, protocol: clustering
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
AMQP端口:5672
管理界面端口:15672
集群端口:25672
Epmd端口:4369
安装目录:/usr/lib/rabbitmq
数据目录:/var/lib/rabbitmq
日志目录:/var/log/rabbitmq
配置目录:/etc/rabbitmq
Erlang环境:
Erlang版本:26.2
ERLANG_HOME:/usr/lib/erlang
1.3 RabbitMQ核心特性
1. 消息可靠性:支持消息确认、持久化和事务
2. 灵活路由:支持多种交换器类型和路由键
3. 集群支持:支持多节点集群和镜像队列
4. 多协议支持:支持AMQP、MQTT、STOMP等
5. 管理界面:提供Web管理控制台
6. 插件系统:丰富的插件生态系统
7. 高可用性:支持镜像队列和仲裁队列
8. 跨语言客户端:支持Java、Python、Go等多种语言
2. 硬件环境要求与检查
在安装RabbitMQ之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:2核心
内存:2GB
磁盘:10GB
推荐配置(生产环境):
CPU:4核心以上
内存:8GB以上
磁盘:50GB以上
高吞吐量配置:
CPU:8核心以上
内存:16GB以上
磁盘:100GB以上SSD
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 15Gi 1.0Gi 13Gi 256Mi 1.0Gi 14Gi
Swap: 7Gi 0B 7Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data
# 检查主机名解析
# hostname -f
fgedudb01.fgedu.net.cn
# 检查/etc/hosts
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
192.168.1.51 fgedudb01 fgedudb01.fgedu.net.cn
2.3 内核参数配置
# vi /etc/sysctl.d/99-rabbitmq.conf
# 添加以下参数
# 文件描述符限制
fs.file-max = 65535
# 网络参数
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65535
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-rabbitmq.conf
# 配置用户限制
# vi /etc/security/limits.conf
# 添加以下配置
rabbitmq soft nofile 65535
rabbitmq hard nofile 65535
rabbitmq soft nproc 65535
rabbitmq hard nproc 65535
3. RabbitMQ安装步骤
本节详细介绍RabbitMQ 3.13的安装过程。学习交流加群风哥QQ113257174
3.1 安装Erlang
# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | bash
# 安装Erlang
# dnf install -y erlang
# 验证Erlang安装
$ erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2.1
# 查看Erlang路径
$ which erl
/usr/bin/erl
# 查看Erlang版本
$ erl -eval ‘erlang:display(erlang:system_info(otp_release)), halt().’ -noshell
26
3.2 安装RabbitMQ
# curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | bash
# 安装RabbitMQ
# dnf install -y rabbitmq-server
# 验证安装
$ rabbitmqctl version
3.13.0
# 查看安装目录
$ ls -la /usr/lib/rabbitmq/
总用量 0
drwxr-xr-x. 2 root root 4096 4月 4 10:00 bin
drwxr-xr-x. 2 root root 4096 4月 4 10:00 lib
drwxr-xr-x. 2 root root 4096 4月 4 10:00 plugins
# 查看配置目录
$ ls -la /etc/rabbitmq/
总用量 0
drwxr-xr-x. 2 root root 4096 4月 4 10:00 conf.d
3.3 启动RabbitMQ
# systemctl start rabbitmq-server
# 查看服务状态
# systemctl status rabbitmq-server
# 输出示例:
rabbitmq-server.service – RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled)
Active: active (running) since Sat 2026-04-04 10:00:00 CST; 10s ago
Main PID: 12345 (beam.smp)
Status: “Initialized”
Tasks: 50 (limit: 4915)
Memory: 100.0M
CGroup: /system.slice/rabbitmq-server.service
└─12345 /usr/lib64/erlang/erts-14.2.1/bin/beam.smp -W w -MBio age…
# 设置开机自启动
# systemctl enable rabbitmq-server
# 检查端口
$ netstat -tlnp | grep beam
tcp6 0 0 :::5672 :::* LISTEN 12345/beam.smp
tcp6 0 0 :::25672 :::* LISTEN 12345/beam.smp
tcp6 0 0 :::4369 :::* LISTEN 12346/epmd
3.4 启用管理插件
# rabbitmq-plugins enable rabbitmq_management
# 输出示例:
Enabling plugins on node rabbit@fgedudb01:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@fgedudb01…
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
# 重启服务
# systemctl restart rabbitmq-server
# 检查管理端口
$ netstat -tlnp | grep 15672
tcp6 0 0 :::15672 :::* LISTEN 12345/beam.smp
# 配置防火墙
# firewall-cmd –permanent –add-port=5672/tcp
success
# firewall-cmd –permanent –add-port=15672/tcp
success
# firewall-cmd –permanent –add-port=25672/tcp
success
# firewall-cmd –reload
success
# 访问管理界面
# 浏览器访问: http://192.168.1.51:15672
# 默认用户名: guest
# 默认密码: guest
3.5 创建管理员用户
# rabbitmqctl add_user admin fgedu123
# 输出示例:
Adding user “admin” …
# 设置用户标签
# rabbitmqctl set_user_tags admin administrator
# 输出示例:
Setting tags for user “admin” to [administrator] …
# 授予所有权限
# rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”
# 输出示例:
Setting permissions for user “admin” in vhost “/” …
# 查看用户列表
# rabbitmqctl list_users
# 输出示例:
Listing users …
user tags
admin administrator
guest administrator
# 删除默认guest用户(生产环境建议)
# rabbitmqctl delete_user guest
4. RabbitMQ参数配置
RabbitMQ参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 配置rabbitmq.conf
# vi /etc/rabbitmq/rabbitmq.conf
# 添加以下配置
# 监听配置
listeners.tcp.default = 5672
management.tcp.port = 15672
# 内存配置
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.75
# 磁盘配置
disk_free_limit.relative = 2.0
# 连接配置
connection_max = 10000
channel_max = 2048
# 队列配置
queue_master_locator = min-masters
# 消息配置
default_vhost = /
default_user = admin
default_pass = fgedu123
# 日志配置
log.file.level = info
log.console = true
# 重启服务
# systemctl restart rabbitmq-server
4.2 配置advanced.config
# vi /etc/rabbitmq/advanced.config
# 添加以下配置
[
{rabbit, [
{tcp_listeners, [5672]},
{num_tcp_acceptors, 10},
{ssl_listeners, []},
{num_ssl_acceptors, 1},
{ssl_options, []},
{vm_memory_high_watermark, 0.6},
{vm_memory_high_watermark_paging_ratio, 0.75},
{disk_free_limit, 2000000000},
{frame_max, 131072},
{channel_max, 2048},
{heartbeat, 60},
{default_vhost, <<" /">>},
{default_user, <<"admin">>},
{default_pass, <<"fgedu123">>},
{default_user_tags, [administrator]},
{default_permissions, [<<".*">>, <<".*">>, <<".*">>]},
{collect_statistics, coarse},
{collect_statistics_interval, 5000}
]},
{rabbitmq_management, [
{listener, [{port, 15672}]}
]}
].
# 重启服务
# systemctl restart rabbitmq-server
4.3 配置环境变量
# vi /etc/rabbitmq/rabbitmq-env.conf
# 添加以下配置
# 节点名称
NODENAME=rabbit@fgedudb01
# 数据目录
RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq/mnesia
# 日志目录
RABBITMQ_LOG_BASE=/var/log/rabbitmq
# 配置文件
RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq
# Erlang Cookie
RABBITMQ_ERLANG_COOKIE=fgedu_rabbitmq_cookie
# 重启服务
# systemctl restart rabbitmq-server
5. 队列管理
RabbitMQ提供了丰富的队列管理功能,本节介绍常用的队列操作。from:www.itpux.com
5.1 创建虚拟主机
# rabbitmqctl add_vhost fgedu_vhost
# 输出示例:
Adding vhost “fgedu_vhost” …
# 查看虚拟主机列表
# rabbitmqctl list_vhosts
# 输出示例:
Listing vhosts …
name
/
fgedu_vhost
# 授予用户权限
# rabbitmqctl set_permissions -p fgedu_vhost admin “.*” “.*” “.*”
# 输出示例:
Setting permissions for user “admin” in vhost “fgedu_vhost” …
# 查看权限
# rabbitmqctl list_permissions -p fgedu_vhost
# 输出示例:
Listing permissions for vhost “fgedu_vhost” …
user configure write read
admin .* .* .*
5.2 创建交换器和队列
# rabbitmqadmin declare exchange name=fgedu_exchange type=direct durable=true
# 输出示例:
exchange declared
# 创建队列
# rabbitmqadmin declare queue name=fgedu_queue durable=true
# 输出示例:
queue declared
# 创建绑定
# rabbitmqadmin declare binding source=fgedu_exchange destination=fgedu_queue routing_key=fgedu_key
# 输出示例:
binding declared
# 查看交换器列表
# rabbitmqctl list_exchanges
# 输出示例:
Listing exchanges for vhost “/” …
name type
direct
amq.direct direct
amq.fanout fanout
amq.headers headers
amq.match headers
amq.rabbitmq.trace topic
amq.topic topic
fgedu_exchange direct
# 查看队列列表
# rabbitmqctl list_queues name messages consumers
# 输出示例:
Timeout: 60.0 seconds …
Listing queues for vhost “/” …
name messages consumers
fgedu_queue 0 0
5.3 发送和消费消息
# rabbitmqadmin publish exchange=fgedu_exchange routing_key=fgedu_key payload=”Hello RabbitMQ”
# 输出示例:
Message published
# 查看队列消息
# rabbitmqadmin get queue=fgedu_queue count=1
# 输出示例:
+————-+———-+—————+———————————-+—————+——————+————-+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | redelivered |
+————-+———-+—————+———————————-+—————+——————+————-+
| fgedu_key | | 0 | Hello RabbitMQ | 15 | string | False |
+————-+———-+—————+———————————-+—————+——————+————-+
# 消费消息
# rabbitmqadmin get queue=fgedu_queue ackmode=ack_requeue_false count=1
# 输出示例:
+————-+———-+—————+———————————-+—————+——————+————-+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | redelivered |
+————-+———-+—————+———————————-+—————+——————+————-+
| fgedu_key | | 0 | Hello RabbitMQ | 15 | string | False |
+————-+———-+—————+———————————-+—————+——————+————-+
6. 集群配置
RabbitMQ支持集群部署,提供高可用性和负载均衡能力。更多学习教程www.fgedu.net.cn
6.1 配置集群节点
# cat /var/lib/rabbitmq/.erlang.cookie
fgedu_rabbitmq_cookie
# 确保所有节点的Cookie一致
# chmod 600 /var/lib/rabbitmq/.erlang.cookie
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
# 在第二个节点停止服务
# systemctl stop rabbitmq-server
# 在第二个节点加入集群
# rabbitmqctl stop_app
# 输出示例:
Stopping rabbit application on node rabbit@fgedudb02 …
# 加入集群
# rabbitmqctl join_cluster rabbit@fgedudb01
# 输出示例:
Clustering node rabbit@fgedudb02 with rabbit@fgedudb01
# 启动应用
# rabbitmqctl start_app
# 输出示例:
Starting node rabbit@fgedudb02 …
# 查看集群状态
# rabbitmqctl cluster_status
# 输出示例:
Cluster status of node rabbit@fgedudb01 …
Basics
Cluster name: rabbit@fgedudb01
Disk Nodes
rabbit@fgedudb01
rabbit@fgedudb02
Running Nodes
rabbit@fgedudb01
rabbit@fgedudb02
Versions
rabbit@fgedudb01: RabbitMQ 3.13.0 on Erlang 26.2
rabbit@fgedudb02: RabbitMQ 3.13.0 on Erlang 26.2
6.2 配置镜像队列
# rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:”all”,”ha-sync-mode”:”automatic”}’
# 输出示例:
Setting policy “ha-all” for pattern “^” to “{“ha-mode”:”all”,”ha-sync-mode”:”automatic”}” with priority “0”
for vhost “/” …
# 查看策略
# rabbitmqctl list_policies
# 输出示例:
Listing policies for vhost “/” …
vhost name pattern apply-to definition
/ ha-all ^ all {“ha-mode”:”all”,”ha-sync-mode”:”automatic”}
# 创建特定队列的镜像策略
# rabbitmqctl set_policy ha-fgedu “^fgedu” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’
# 输出示例:
Setting policy “ha-fgedu” for pattern “^fgedu” to
“{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}” with priority “0” for vhost “/” …
6.3 配置仲裁队列
# rabbitmq-plugins enable rabbitmq_quorum_queue
# 输出示例:
Enabling plugins on node rabbit@fgedudb01:
rabbitmq_quorum_queue
The following plugins have been configured:
rabbitmq_quorum_queue
Applying plugin configuration to rabbit@fgedudb01…
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
# 重启服务
# systemctl restart rabbitmq-server
# 创建仲裁队列
# rabbitmqadmin declare queue name=fgedu_quorum_queue durable=true arguments='{“x-queue-type”:”quorum”}’
# 输出示例:
queue declared
# 查看队列类型
# rabbitmqctl list_queues name type
# 输出示例:
Timeout: 60.0 seconds …
Listing queues for vhost “/” …
name type
fgedu_quorum_queue quorum
7. 安全配置
RabbitMQ提供了完善的安全框架,本节介绍常用的安全配置方法。学习交流加群风哥微信: itpux-com
7.1 配置SSL/TLS
# openssl genrsa -out ca.key 2048
# openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj “/CN=RabbitMQ CA”
# 生成服务器证书
# openssl genrsa -out server.key 2048
# openssl req -new -key server.key -out server.csr -subj “/CN=fgedudb01.fgedu.net.cn”
# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
-sha256
# 复制证书到RabbitMQ目录
# mkdir -p /etc/rabbitmq/ssl
# cp server.key server.crt ca.crt /etc/rabbitmq/ssl/
# chown -R rabbitmq:rabbitmq /etc/rabbitmq/ssl
# chmod 600 /etc/rabbitmq/ssl/*
# 配置SSL
# vi /etc/rabbitmq/rabbitmq.conf
# 添加SSL配置
listeners.ssl.default = 5671
ssl_options.cacertfile = /etc/rabbitmq/ssl/ca.crt
ssl_options.certfile = /etc/rabbitmq/ssl/server.crt
ssl_options.keyfile = /etc/rabbitmq/ssl/server.key
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false
# 重启服务
# systemctl restart rabbitmq-server
# 检查SSL端口
$ netstat -tlnp | grep 5671
tcp6 0 0 :::5671 :::* LISTEN 12345/beam.smp
7.2 配置用户权限
# rabbitmqctl add_user fgedu_app fgedu123
# 输出示例:
Adding user “fgedu_app” …
# 设置用户标签
# rabbitmqctl set_user_tags fgedu_app management
# 输出示例:
Setting tags for user “fgedu_app” to [management] …
# 授予特定权限
# rabbitmqctl set_permissions -p fgedu_vhost fgedu_app “^fgedu.*” “^fgedu.*” “^fgedu.*”
# 输出示例:
Setting permissions for user “fgedu_app” in vhost “fgedu_vhost” …
# 查看用户权限
# rabbitmqctl list_user_permissions fgedu_app
# 输出示例:
Listing permissions for user “fgedu_app” …
vhost configure write read
fgedu_vhost ^fgedu.* ^fgedu.* ^fgedu.*
8. 监控与日志
RabbitMQ提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com
8.1 启用Prometheus监控
# rabbitmq-plugins enable rabbitmq_prometheus
# 输出示例:
Enabling plugins on node rabbit@fgedudb01:
rabbitmq_prometheus
The following plugins have been configured:
rabbitmq_prometheus
Applying plugin configuration to rabbit@fgedudb01…
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
# 重启服务
# systemctl restart rabbitmq-server
# 检查Prometheus端口
$ netstat -tlnp | grep 15692
tcp6 0 0 :::15692 :::* LISTEN 12345/beam.smp
# 访问指标端点
$ curl http://192.168.1.51:15692/metrics
# 输出示例:
# HELP rabbitmq_connections_total Total number of connections
# TYPE rabbitmq_connections_total gauge
rabbitmq_connections_total 10
# HELP rabbitmq_channels_total Total number of channels
# TYPE rabbitmq_channels_total gauge
rabbitmq_channels_total 20
# HELP rabbitmq_queues_total Total number of queues
# TYPE rabbitmq_queues_total gauge
rabbitmq_queues_total 5
8.2 配置日志
# vi /etc/rabbitmq/rabbitmq.conf
# 日志级别
log.file.level = info
log.console = true
log.console.level = info
# 日志轮转
log.file.rotation.date = $D0
log.file.rotation.count = 10
# 查看日志
# tail -f /var/log/rabbitmq/rabbit@fgedudb01.log
# 输出示例:
2026-04-04 10:00:00.123 [info] <0.123.0> Application rabbit started on node rabbit@fgedudb01
2026-04-04 10:00:00.456 [info] <0.456.0> RabbitMQ 3.13.0 is running
2026-04-04 10:00:01.789 [info] <0.789.0> accepting AMQP connection <0.789.0> (192.168.1.51:5672 ->
192.168.1.51:12345)
# 查看SASL日志
# tail -f /var/log/rabbitmq/rabbit@fgedudb01_sasl.log
8.3 健康检查
# rabbitmqctl node_health_check
# 输出示例:
Checking health of node rabbit@fgedudb01 …
Health check passed
# 查看节点状态
# rabbitmqctl status
# 输出示例:
Status of node rabbit@fgedudb01 …
Runtime
OS PID: 12345
OS: Linux
Uptime (seconds): 86400
RabbitMQ version: 3.13.0
Erlang version: 26.2.1
Memory
Total: 100.0 MB
Atom: 1.0 MB
Binary: 10.0 MB
Code: 30.0 MB
Ets: 5.0 MB
Processes: 50.0 MB
System: 4.0 MB
File Descriptors
Total: 100
Sockets: 50
Listeners
Interface: [::], port: 5672, protocol: amqp
Interface: [::], port: 15672, protocol: http
Interface: [::], port: 25672, protocol: clustering
9. 升级与迁移
RabbitMQ升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com
9.1 版本升级
# rabbitmqctl version
3.13.0
# 备份配置
# cp -r /etc/rabbitmq /backup/rabbitmq/etc_$(date +%Y%m%d)
# cp -r /var/lib/rabbitmq/mnesia /backup/rabbitmq/mnesia_$(date +%Y%m%d)
# 停止服务
# systemctl stop rabbitmq-server
# 升级RabbitMQ
# dnf upgrade -y rabbitmq-server
# 启动服务
# systemctl start rabbitmq-server
# 验证版本
# rabbitmqctl version
3.13.1
# 检查集群状态
# rabbitmqctl cluster_status
9.2 数据迁移
# rabbitmqctl export_definitions /backup/rabbitmq/definitions.json
# 输出示例:
Exporting definitions to “/backup/rabbitmq/definitions.json” …
# 导入定义
# rabbitmqctl import_definitions /backup/rabbitmq/definitions.json
# 输出示例:
Importing definitions from “/backup/rabbitmq/definitions.json” …
# 或者使用管理API
# curl -u admin:fgedu123 http://192.168.1.51:15672/api/definitions -o /backup/rabbitmq/definitions.json
# 导入定义
# curl -u admin:fgedu123 -X POST -H “Content-Type: application/json” -d @/backup/rabbitmq/definitions.json
http://192.168.1.51:15672/api/definitions
10. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解RabbitMQ的实际应用。更多学习教程www.fgedu.net.cn
10.1 生产环境完整配置
# vi /etc/rabbitmq/rabbitmq.conf
# 基础配置
listeners.tcp.default = 5672
listeners.ssl.default = 5671
management.tcp.port = 15672
# 内存配置
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.75
# 磁盘配置
disk_free_limit.relative = 2.0
# 连接配置
connection_max = 10000
channel_max = 2048
heartbeat = 60
# 队列配置
queue_master_locator = min-masters
# SSL配置
ssl_options.cacertfile = /etc/rabbitmq/ssl/ca.crt
ssl_options.certfile = /etc/rabbitmq/ssl/server.crt
ssl_options.keyfile = /etc/rabbitmq/ssl/server.key
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false
# 日志配置
log.file.level = info
log.console = true
log.file.rotation.date = $D0
log.file.rotation.count = 10
# 创建systemd服务配置
# vi /etc/systemd/system/rabbitmq-server.service.d/override.conf
[Service]
LimitNOFILE=65535
LimitNPROC=65535
# 重载配置
# systemctl daemon-reload
# systemctl restart rabbitmq-server
10.2 高可用集群配置
# 节点1: fgedudb01 (192.168.1.51)
# 节点2: fgedudb02 (192.168.1.52)
# 节点3: fgedudb03 (192.168.1.53)
# 在所有节点设置相同的Cookie
# echo “fgedu_rabbitmq_cookie” > /var/lib/rabbitmq/.erlang.cookie
# chmod 600 /var/lib/rabbitmq/.erlang.cookie
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
# 在节点2和节点3加入集群
# rabbitmqctl stop_app
# rabbitmqctl join_cluster rabbit@fgedudb01
# rabbitmqctl start_app
# 查看集群状态
# rabbitmqctl cluster_status
# 配置仲裁队列策略
# rabbitmqctl set_policy quorum-all “^” ‘{“queue-type”:”quorum”}’ –apply-to queues
# 配置镜像队列策略(可选)
# rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:”all”,”ha-sync-mode”:”automatic”}’
10.3 性能调优实战
# vi /etc/sysctl.d/99-rabbitmq.conf
# 网络优化
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 文件描述符
fs.file-max = 65535
# 使配置生效
# sysctl -p /etc/sysctl.d/99-rabbitmq.conf
# RabbitMQ配置优化
# vi /etc/rabbitmq/advanced.config
[
{rabbit, [
{num_tcp_acceptors, 20},
{num_ssl_acceptors, 10},
{connection_max, 50000},
{channel_max, 4096},
{frame_max, 1048576},
{heartbeat, 30},
{collect_statistics, coarse},
{collect_statistics_interval, 10000}
]}
].
# 重启服务
# systemctl restart rabbitmq-server
# 性能测试
# rabbitmq-perf-test -x 10 -y 10 -u fgedu_test -s 1024 -r 10000
# 输出示例:
id: test-123456, time: 60.000s, sent: 1000000 msg/s, received: 1000000 msg/s
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
