Apusic文档中心
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
文档中心
  • 金蝶Apusic应用服务器

  • 金蝶Apusic负载均衡器

  • 金蝶Apusic分布式消息队列

    • 产品白皮书
    • 产品更新说明
    • 统一管控台

    • V2.0.6(最新)

    • V2.0.6_for_kafka

    • V2.0.6_for_rabbitmq

      • 产品简介
      • 功能与技术规格
      • 安装手册
      • 快速使用手册
      • 管控台用户手册
      • 消息引擎用户手册
      • 开发手册
      • 迁移手册
      • 运维手册
      • 性能优化手册
      • 极简运维手册
    • V2.0.6_for_rocketmq

    • V2.0.6_for_MQTT

    • V2.0.5

    • V2.0.4

    • V2.0.3

  • 金蝶Apusic分布式缓存

  • 金蝶Apusic分布式配置中心

  • 金蝶Apusic Java开发工具包软件

  • 金蝶Apusic全文检索

极简运维手册

# 一、部署架构

# 整体架构

┌─────────────────────────────────────────────────────────────┐
│                        客户端层                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │ 生产者应用   │  │ 消费者应用   │  │ 管控台/Web管理       │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │ AMQP/MQTT/STOMP
┌────────────────────────▼────────────────────────────────────┐
│                     消息引擎层                                │
│  ┌───────────────────────────────────────────────────────┐  │
│  │              ADMQ for RabbitMQ 节点                    │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐  │  │
│  │  │  连接层      │  │  交换机      │  │   队列        │  │  │
│  │  │ Connection  │  │  Exchange   │  │   Queue      │  │  │
│  │  └─────────────┘  └─────────────┘  └──────────────┘  │  │
│  │                                                        │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐  │  │
│  │  │   路由层     │  │  镜像队列    │  │  持久化存储   │  │  │
│  │  │   Router    │  │Mirror Queue │  │  Mnesia/ETS  │  │  │
│  │  └─────────────┘  └─────────────┘  └──────────────┘  │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                         │
┌────────────────────────▼────────────────────────────────────┐
│                      集群通信层                               │
│  ┌───────────────────────────────────────────────────────┐  │
│  │              Erlang Distribution 网络                  │  │
│  │            (节点间元数据同步与心跳检测)                  │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 部署模式

部署模式 节点数 适用场景 高可用性
单机部署 1 节点 开发测试 无
普通集群 2+ 节点 生产环境 元数据高可用
镜像队列集群 3+ 节点 生产环境 元数据+数据高可用

# 二、快速安装

# 1. 环境准备

组件 最低要求 推荐配置
CPU 4 核 8 核及以上
内存 8 GB 16 GB 及以上
磁盘 100 GB SSD 500 GB 及以上 SSD
操作系统 CentOS 7+, Ubuntu 18.04+, 麒麟, 统信 -

端口要求:

端口 用途
5672 AMQP 协议
15672 Web 管理界面
25672 集群节点间通信

# 2. 单机安装

# 创建目录
mkdir -p /apusic && cd /apusic

# 解压安装包
tar zxvf ADMQ-V2.0.6.xxx.tar.gz
cd admq-rabbitmq

# 放置 license.xml 授权文件到根目录
# 修改主机名(只能包含字母、数字、连字符)
hostname node1

# 启动服务
bin/admq-daemon start rabbitmq server
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3. 集群安装(3 节点)

所有节点执行:

mkdir -p /apusic && cd /apusic
tar zxvf ADMQ-V2.0.6.xxx.tar.gz
cd admq-rabbitmq

# 放置 license.xml
# 修改主机名
hostname node171  # node172, node173

# 配置 /etc/hosts
172.20.140.171 node171
172.20.140.172 node172
172.20.140.173 node173

# 启动服务
bin/admq-daemon start rabbitmq server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Node 1 执行集群创建:

bin/admq rabbitmq cluster add -s 172.20.140.172:58181 -u monitor -p apusic_123
bin/admq rabbitmq cluster add -s 172.20.140.173:58181 -u monitor -p apusic_123
1
2

开启镜像队列(可选):

bin/admq rabbitmq admin ctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
1

# 三、核心概念

# 消息模型

Producer -> Exchange -> [Binding/Routing Key] -> Queue -> Consumer
1

# 交换机类型

类型 路由方式 适用场景
Direct 精确匹配 Routing Key 点对点消息
Fanout 广播到所有队列 广播通知
Topic 模式匹配 * # 日志分类、事件路由
Headers 基于消息头匹配 复杂条件路由

# 队列类型

类型 特点 适用场景
Classic Queue 传统队列,支持镜像 一般业务场景
Quorum Queue 基于 Raft,自动多副本 高可用场景
Stream Queue 只追加日志,支持多次读取 高吞吐、日志场景

# 四、常用命令速查

# 服务管理

# 启动/停止/重启
bin/admq-daemon start rabbitmq server
bin/admq-daemon stop rabbitmq server
bin/admq-daemon restart rabbitmq server

# 应用启停
bin/admq rabbitmq admin ctl start_app
bin/admq rabbitmq admin ctl stop_app
1
2
3
4
5
6
7
8

# 状态查看

# 节点状态
bin/admq rabbitmq admin ctl status

# 集群状态
bin/admq rabbitmq admin ctl cluster_status

# 健康检查
bin/admq rabbitmq admin diagnostics health_check

# 内存使用
bin/admq rabbitmq admin diagnostics memory_breakdown
1
2
3
4
5
6
7
8
9
10
11

# 用户管理

# 创建用户
bin/admq rabbitmq admin ctl add_user username password
bin/admq rabbitmq admin ctl set_user_tags username administrator
bin/admq rabbitmq admin ctl set_permissions -p /vhost username ".*" ".*" ".*"

# 修改密码
bin/admq rabbitmq admin ctl change_password username newpassword

# 删除用户
bin/admq rabbitmq admin ctl delete_user username

# 查看用户
bin/admq rabbitmq admin ctl list_users
1
2
3
4
5
6
7
8
9
10
11
12
13

# 队列管理

# 查看队列
bin/admq rabbitmq admin ctl list_queues
bin/admq rabbitmq admin ctl list_queues name messages consumers

# 查看交换机
bin/admq rabbitmq admin ctl list_exchanges name type

# 查看连接
bin/admq rabbitmq admin ctl list_connections peer_host state

# 查看通道
bin/admq rabbitmq admin ctl list_channels connection consumer_count
1
2
3
4
5
6
7
8
9
10
11
12

# 集群管理

# 查看集群状态
bin/admq rabbitmq admin ctl cluster_status

# 查看队列详情(含镜像)
bin/admq rabbitmq admin ctl list_queues name pid slave_pids synchronised_slave_pids

# 移除故障节点
bin/admq rabbitmq admin ctl forget_cluster_node rabbit@node2
1
2
3
4
5
6
7
8

# 策略管理

# 查看策略
bin/admq rabbitmq admin ctl list_policies

# 设置镜像策略
bin/admq rabbitmq admin ctl set_policy ha-all "^" '{"ha-mode":"all"}' --priority 0 --apply-to queues

# 清除策略
bin/admq rabbitmq admin ctl clear_policy ha-all
1
2
3
4
5
6
7
8

# 备份恢复

# 导出配置
bin/admq rabbitmq admin ctl export_definitions /backup/definitions.json

# 导入配置
bin/admq rabbitmq admin ctl import_definitions /backup/definitions.json

# 备份 Mnesia
bin/admq rabbitmq admin ctl eval 'rabbit_mnesia:backup("/backup/mnesia.backup").'
1
2
3
4
5
6
7
8

# 五、日常运维

# 日志位置

日志类型 路径
服务日志 ./log/rabbitmq/rabbit@hostname.log
启动日志 ./log/rabbitmq/rabbit@hostname-sasl.log
管控台日志 ./logs/

# 日常检查清单

检查项 命令 正常标准
节点状态 bin/admq rabbitmq admin ctl status 运行正常
集群状态 bin/admq rabbitmq admin ctl cluster_status 所有节点在线
队列堆积 bin/admq rabbitmq admin ctl list_queues messages 无异常堆积
内存使用 bin/admq rabbitmq admin ctl status 低于水位线
磁盘空间 df -h 高于 disk_free_limit

# 健康检查脚本

#!/bin/bash
# 节点健康检查
bin/admq rabbitmq admin diagnostics health_check

# 内存检查
bin/admq rabbitmq admin diagnostics memory_breakdown

# 告警队列检查(消息数 > 10000)
bin/admq rabbitmq admin ctl list_queues name messages consumers | awk '$2 > 10000 {print "WARNING: Queue "$1" has "$2" messages"}'

# 连接数检查
CONN_COUNT=$(bin/admq rabbitmq admin ctl list_connections | wc -l)
if [ $CONN_COUNT -gt 1000 ]; then
    echo "WARNING: Connection count $CONN_COUNT exceeds threshold"
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 六、配置优化

# rabbitmq.conf 核心配置

# 网络
listeners.tcp.default = 5672
listeners.ssl.default = 5671

# 内存(推荐 0.6-0.7)
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.5

# 磁盘(推荐绝对值 1GB)
disk_free_limit.relative = 1.5
disk_free_limit.absolute = 1GB

# 连接
channel_max = 2047
heartbeat = 30

# 队列
queue_master_locator = min-masters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 系统优化

# 文件描述符
ulimit -n 65535

# 内核参数(/etc/sysctl.conf)
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 65535
vm.swappiness = 10

# 磁盘调度
echo deadline > /sys/block/sda/queue/scheduler
1
2
3
4
5
6
7
8
9
10
11

# 七、故障排查

# 服务无法启动

现象 可能原因 解决方案
端口被占用 5672/15672 被占用 停止占用进程或修改端口
Cookie 不一致 集群节点 Cookie 不匹配 同步 .erlang.cookie
内存不足 系统内存不足 增加内存或降低水位线
磁盘不足 低于 disk_free_limit 清理磁盘或调整限制

# 消息消费异常

现象 可能原因 解决方案
消息堆积 消费者过慢或离线 增加消费者或优化逻辑
消息丢失 未启用持久化 启用 delivery_mode=2
重复消费 确认超时 优化处理逻辑,及时确认

# 集群异常

现象 可能原因 解决方案
节点离线 网络故障 检查网络,重启服务
脑裂 网络分区 使用 forget_cluster_node 清理
队列不可用 节点离线 使用镜像队列或 Quorum Queue

# 诊断命令

# 查看详细信息
bin/admq rabbitmq admin ctl status
bin/admq rabbitmq admin ctl cluster_status
bin/admq rabbitmq admin ctl list_connections peer_host peer_port state
bin/admq rabbitmq admin ctl list_queues name messages consumers memory

# 查看内存/进程
bin/admq rabbitmq admin diagnostics memory_breakdown
bin/admq rabbitmq admin diagnostics processes
bin/admq rabbitmq admin diagnostics connections
1
2
3
4
5
6
7
8
9
10

# 八、安全加固

# 修改默认用户

# 删除默认 guest 用户
bin/admq rabbitmq admin ctl delete_user guest

# 创建新管理员
bin/admq rabbitmq admin ctl add_user admin strongpassword
bin/admq rabbitmq admin ctl set_user_tags admin administrator
bin/admq rabbitmq admin ctl set_permissions -p / admin ".*" ".*" ".*"
1
2
3
4
5
6
7

# 防火墙配置

firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --reload
1
2
3
4

# SSL 配置

listeners.ssl.default = 5671
ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false
1
2
3
4
5
6

# 九、性能优化要点

# 队列优化

Map<String, Object> args = new HashMap<>();
// 队列长度限制
args.put("x-max-length", 100000);
args.put("x-max-length-bytes", 1073741824);  // 1GB

// 消息 TTL
args.put("x-message-ttl", 3600000);  // 1小时

// 惰性队列(减少内存)
args.put("x-queue-mode", "lazy");
1
2
3
4
5
6
7
8
9
10

# 客户端优化

// 连接池 + 自动恢复
factory.setAutomaticRecoveryEnabled(true);
factory.setNetworkRecoveryInterval(5000);

// 单连接多通道
Connection connection = factory.newConnection();
for (int i = 0; i < 10; i++) {
    Channel channel = connection.createChannel();
}

// QoS 预取
channel.basicQos(100);

// 批量确认
channel.basicAck(deliveryTag, true);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 监控指标

指标 说明
rabbitmq_connections 连接数
rabbitmq_queue_messages 总消息数
rabbitmq_node_mem_used 内存使用量
rabbitmq_node_disk_free 磁盘剩余空间

# 十、运维最佳实践

  1. 定期检查:建立日常检查机制
  2. 监控告警:配置完善的监控告警体系
  3. 备份策略:定期备份配置和数据
  4. 容量规划:提前评估并扩容
  5. 安全更新:及时更新安全补丁
  6. 最小权限:为业务用户分配最小必要权限
  7. 灾难演练:定期进行故障恢复演练

技术支持:

  • 网址:www.apusic.com
  • 电话:400-855-5800
  • 邮箱:support@apusic.com
编辑页面 (opens new window)
#运维手册

← 性能优化手册 产品简介→

  • 浅色模式