devops/rocketmq/README.md

5.0 KiB
Raw Permalink Blame History

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. 运行安装脚本:
    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

使用示例

查看服务状态

# 查看 NameServer Pod
kubectl get pods -l app=rocketmq-nameserver

# 查看 Broker Pod
kubectl get pods -l app=rocketmq-broker

# 查看服务
kubectl get svc -l app=rocketmq

查看日志

# NameServer 日志
kubectl logs -f <nameserver-pod-name>

# Broker 日志
kubectl logs -f <broker-pod-name>

进入容器

# 进入 NameServer 容器
kubectl exec -it <nameserver-pod-name> -- sh

# 进入 Broker 容器
kubectl exec -it <broker-pod-name> -- sh

测试连接

# 测试 NameServer 连接
kubectl exec -it <nameserver-pod-name> -- netstat -tlnp | grep 9876

# 测试 Broker 连接
kubectl exec -it <broker-pod-name> -- netstat -tlnp | grep 10911

应用集成

Java 应用配置

# application.properties
rocketmq.name-server=rocketmq-nameserver.default.svc.cluster.local:9876
rocketmq.producer.group=producer-group
rocketmq.consumer.group=consumer-group

Spring Boot 集成

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.3</version>
</dependency>
@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;
    }
}

监控和维护

健康检查

# 检查 NameServer 健康状态
kubectl get pods -l app=rocketmq-nameserver -o wide

# 检查 Broker 健康状态
kubectl get pods -l app=rocketmq-broker -o wide

性能监控

# 查看资源使用情况
kubectl top pods -l app=rocketmq

# 查看详细资源信息
kubectl describe pods -l app=rocketmq

数据备份

# 备份 Broker 数据
kubectl exec -it <broker-pod-name> -- tar -czf /tmp/rocketmq-backup.tar.gz /opt/rocketmq-4.9.7/store

# 复制备份文件到本地
kubectl cp <broker-pod-name>:/tmp/rocketmq-backup.tar.gz ./rocketmq-backup.tar.gz

故障排除

常见问题

  1. NameServer 启动失败

    • 检查内存配置
    • 查看启动日志
    • 验证端口占用
  2. Broker 连接 NameServer 失败

    • 检查网络连接
    • 验证 NameServer 地址配置
    • 查看 Broker 日志
  3. 消息发送失败

    • 检查 Topic 是否存在
    • 验证 Producer 配置
    • 查看 Broker 状态
  4. 消息消费失败

    • 检查 Consumer 配置
    • 验证 Topic 和 Tag 配置
    • 查看消费日志

日志分析

# 查看错误日志
kubectl logs <pod-name> | grep ERROR

# 查看警告日志
kubectl logs <pod-name> | grep WARN

# 实时查看日志
kubectl logs -f <pod-name>

生产环境建议

  1. 高可用部署: 部署多个 NameServer 和 Broker 实例
  2. 持久化存储: 使用 PersistentVolume 替代 emptyDir
  3. 资源监控: 集成 Prometheus 和 Grafana 监控
  4. 日志管理: 配置日志收集和分析
  5. 安全配置: 启用 ACL 和网络策略
  6. 备份策略: 定期备份消息数据
  7. 性能调优: 根据业务需求调整 JVM 参数

扩展功能

管理控制台

可以部署 RocketMQ Console 来管理消息队列:

# 部署 Console
kubectl apply -f rocketmq-console-deployment.yaml
kubectl apply -f rocketmq-console-service.yaml

集群部署

对于生产环境,建议部署 RocketMQ 集群:

  • 多个 NameServer 实例
  • 多个 Broker 实例Master-Slave
  • 负载均衡配置