|
|
||
|---|---|---|
| .. | ||
| README.md | ||
| install-rocketmq.sh | ||
| rocketmq-broker-deployment.yaml | ||
| rocketmq-broker-service.yaml | ||
| rocketmq-compose-style.tar.gz | ||
| rocketmq-configmap.yaml | ||
| rocketmq-nameserver-deployment.yaml | ||
| rocketmq-nameserver-service.yaml | ||
README.md
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
安装步骤
- 确保 kubectl 已安装并配置好集群连接
- 运行安装脚本:
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
故障排除
常见问题
-
NameServer 启动失败
- 检查内存配置
- 查看启动日志
- 验证端口占用
-
Broker 连接 NameServer 失败
- 检查网络连接
- 验证 NameServer 地址配置
- 查看 Broker 日志
-
消息发送失败
- 检查 Topic 是否存在
- 验证 Producer 配置
- 查看 Broker 状态
-
消息消费失败
- 检查 Consumer 配置
- 验证 Topic 和 Tag 配置
- 查看消费日志
日志分析
# 查看错误日志
kubectl logs <pod-name> | grep ERROR
# 查看警告日志
kubectl logs <pod-name> | grep WARN
# 实时查看日志
kubectl logs -f <pod-name>
生产环境建议
- 高可用部署: 部署多个 NameServer 和 Broker 实例
- 持久化存储: 使用 PersistentVolume 替代 emptyDir
- 资源监控: 集成 Prometheus 和 Grafana 监控
- 日志管理: 配置日志收集和分析
- 安全配置: 启用 ACL 和网络策略
- 备份策略: 定期备份消息数据
- 性能调优: 根据业务需求调整 JVM 参数
扩展功能
管理控制台
可以部署 RocketMQ Console 来管理消息队列:
# 部署 Console
kubectl apply -f rocketmq-console-deployment.yaml
kubectl apply -f rocketmq-console-service.yaml
集群部署
对于生产环境,建议部署 RocketMQ 集群:
- 多个 NameServer 实例
- 多个 Broker 实例(Master-Slave)
- 负载均衡配置