# RocketMQ 安装指南 本目录包含在 Kubernetes 集群中安装 RocketMQ 的配置文件。 ## 文件说明 - `install-rocketmq.sh` - RocketMQ 安装脚本 - `rocketmq-nameserver-deployment.yaml` - NameServer Deployment 配置 - `rocketmq-broker-deployment.yaml` - Broker Deployment 配置 - `rocketmq-nameserver-service.yaml` - NameServer Service 配置 - `rocketmq-broker-service.yaml` - Broker Service 配置 - `rocketmq-configmap.yaml` - RocketMQ 配置文件 ## RocketMQ 架构 RocketMQ 由两个核心组件组成: ### 1. NameServer - **作用**: 注册中心,管理 Broker 和 Topic 的路由信息 - **端口**: 9876 - **服务地址**: `rocketmq-nameserver.default.svc.cluster.local:9876` ### 2. Broker - **作用**: 消息存储和转发 - **端口**: 10911 (主端口), 10912 (VIP端口) - **服务地址**: `rocketmq-broker.default.svc.cluster.local:10911` ## 安装步骤 1. 确保 kubectl 已安装并配置好集群连接 2. 运行安装脚本: ```bash chmod +x install-rocketmq.sh ./install-rocketmq.sh ``` ## 配置说明 ### 镜像配置 - **NameServer**: `registry.t-aaron.com/apache/rocketmq:4.9.7` - **Broker**: `registry.t-aaron.com/apache/rocketmq:4.9.7` ### 资源限制 - **NameServer**: 512Mi-1Gi 内存, 200m-500m CPU - **Broker**: 1Gi-2Gi 内存, 300m-1000m CPU ### 存储配置 - **日志目录**: `/opt/rocketmq-4.9.7/logs` - **数据目录**: `/opt/rocketmq-4.9.7/store` - **配置目录**: `/opt/rocketmq-4.9.7/conf` ## 使用示例 ### 查看服务状态 ```bash # 查看 NameServer Pod kubectl get pods -l app=rocketmq-nameserver # 查看 Broker Pod kubectl get pods -l app=rocketmq-broker # 查看服务 kubectl get svc -l app=rocketmq ``` ### 查看日志 ```bash # NameServer 日志 kubectl logs -f # Broker 日志 kubectl logs -f ``` ### 进入容器 ```bash # 进入 NameServer 容器 kubectl exec -it -- sh # 进入 Broker 容器 kubectl exec -it -- sh ``` ### 测试连接 ```bash # 测试 NameServer 连接 kubectl exec -it -- netstat -tlnp | grep 9876 # 测试 Broker 连接 kubectl exec -it -- netstat -tlnp | grep 10911 ``` ## 应用集成 ### Java 应用配置 ```properties # application.properties rocketmq.name-server=rocketmq-nameserver.default.svc.cluster.local:9876 rocketmq.producer.group=producer-group rocketmq.consumer.group=consumer-group ``` ### Spring Boot 集成 ```xml org.apache.rocketmq rocketmq-spring-boot-starter 2.2.3 ``` ```java @RestController public class MessageController { @Autowired private RocketMQTemplate rocketMQTemplate; @PostMapping("/send") public String sendMessage(@RequestParam String message) { rocketMQTemplate.convertAndSend("test-topic", message); return "Message sent: " + message; } } ``` ## 监控和维护 ### 健康检查 ```bash # 检查 NameServer 健康状态 kubectl get pods -l app=rocketmq-nameserver -o wide # 检查 Broker 健康状态 kubectl get pods -l app=rocketmq-broker -o wide ``` ### 性能监控 ```bash # 查看资源使用情况 kubectl top pods -l app=rocketmq # 查看详细资源信息 kubectl describe pods -l app=rocketmq ``` ### 数据备份 ```bash # 备份 Broker 数据 kubectl exec -it -- tar -czf /tmp/rocketmq-backup.tar.gz /opt/rocketmq-4.9.7/store # 复制备份文件到本地 kubectl cp :/tmp/rocketmq-backup.tar.gz ./rocketmq-backup.tar.gz ``` ## 故障排除 ### 常见问题 1. **NameServer 启动失败** - 检查内存配置 - 查看启动日志 - 验证端口占用 2. **Broker 连接 NameServer 失败** - 检查网络连接 - 验证 NameServer 地址配置 - 查看 Broker 日志 3. **消息发送失败** - 检查 Topic 是否存在 - 验证 Producer 配置 - 查看 Broker 状态 4. **消息消费失败** - 检查 Consumer 配置 - 验证 Topic 和 Tag 配置 - 查看消费日志 ### 日志分析 ```bash # 查看错误日志 kubectl logs | grep ERROR # 查看警告日志 kubectl logs | grep WARN # 实时查看日志 kubectl logs -f ``` ## 生产环境建议 1. **高可用部署**: 部署多个 NameServer 和 Broker 实例 2. **持久化存储**: 使用 PersistentVolume 替代 emptyDir 3. **资源监控**: 集成 Prometheus 和 Grafana 监控 4. **日志管理**: 配置日志收集和分析 5. **安全配置**: 启用 ACL 和网络策略 6. **备份策略**: 定期备份消息数据 7. **性能调优**: 根据业务需求调整 JVM 参数 ## 扩展功能 ### 管理控制台 可以部署 RocketMQ Console 来管理消息队列: ```bash # 部署 Console kubectl apply -f rocketmq-console-deployment.yaml kubectl apply -f rocketmq-console-service.yaml ``` ### 集群部署 对于生产环境,建议部署 RocketMQ 集群: - 多个 NameServer 实例 - 多个 Broker 实例(Master-Slave) - 负载均衡配置