devops/rocketmq/README.md

217 lines
5.0 KiB
Markdown
Raw Normal View History

2025-09-19 09:30:02 +08:00
# 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 <nameserver-pod-name>
# Broker 日志
kubectl logs -f <broker-pod-name>
```
### 进入容器
```bash
# 进入 NameServer 容器
kubectl exec -it <nameserver-pod-name> -- sh
# 进入 Broker 容器
kubectl exec -it <broker-pod-name> -- sh
```
### 测试连接
```bash
# 测试 NameServer 连接
kubectl exec -it <nameserver-pod-name> -- netstat -tlnp | grep 9876
# 测试 Broker 连接
kubectl exec -it <broker-pod-name> -- 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
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.3</version>
</dependency>
```
```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 <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 配置
- 查看消费日志
### 日志分析
```bash
# 查看错误日志
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 来管理消息队列:
```bash
# 部署 Console
kubectl apply -f rocketmq-console-deployment.yaml
kubectl apply -f rocketmq-console-service.yaml
```
### 集群部署
对于生产环境,建议部署 RocketMQ 集群:
- 多个 NameServer 实例
- 多个 Broker 实例Master-Slave
- 负载均衡配置