devops/rocketmq/install-rocketmq.sh

66 lines
2.3 KiB
Bash
Raw Permalink Normal View History

2025-09-19 09:30:02 +08:00
#!/bin/bash
echo "开始安装 RocketMQ 到 Kubernetes 集群..."
# 检查 kubectl 是否可用
if ! command -v kubectl &> /dev/null; then
echo "错误: kubectl 命令未找到,请先安装 kubectl"
exit 1
fi
# 应用 RocketMQ 配置
echo "应用 RocketMQ ConfigMap..."
kubectl apply -f rocketmq-configmap.yaml
echo "应用 RocketMQ NameServer Deployment..."
kubectl apply -f rocketmq-nameserver-deployment.yaml
echo "应用 RocketMQ NameServer Service..."
kubectl apply -f rocketmq-nameserver-service.yaml
echo "应用 RocketMQ Broker Deployment..."
kubectl apply -f rocketmq-broker-deployment.yaml
echo "应用 RocketMQ Broker Service..."
kubectl apply -f rocketmq-broker-service.yaml
# 等待 Pod 启动
echo "等待 RocketMQ NameServer Pod 启动..."
kubectl wait --for=condition=ready pod -l app=rocketmq-nameserver -n default --timeout=300s
echo "等待 RocketMQ Broker Pod 启动..."
kubectl wait --for=condition=ready pod -l app=rocketmq-broker -n default --timeout=300s
# 检查状态
echo "检查 RocketMQ 部署状态..."
echo "=== NameServer Pods ==="
kubectl get pods -l app=rocketmq-nameserver -n default
echo "=== Broker Pods ==="
kubectl get pods -l app=rocketmq-broker -n default
echo "=== Services ==="
kubectl get svc -l app=rocketmq -n default
# 测试 RocketMQ 连接
echo "测试 RocketMQ NameServer 连接..."
NAMESERVER_POD=$(kubectl get pods -l app=rocketmq-nameserver -n default -o jsonpath='{.items[0].metadata.name}')
if [ ! -z "$NAMESERVER_POD" ]; then
echo "在 Pod $NAMESERVER_POD 中测试 NameServer..."
kubectl exec -it $NAMESERVER_POD -n default -- sh -c "netstat -tlnp | grep 9876"
if [ $? -eq 0 ]; then
echo "RocketMQ NameServer 连接测试成功!"
else
echo "RocketMQ NameServer 连接测试失败!"
fi
fi
echo "RocketMQ 安装完成!"
echo "NameServer 地址: rocketmq-nameserver.default.svc.cluster.local:9876"
echo "Broker 地址: rocketmq-broker.default.svc.cluster.local:10911"
echo ""
echo "使用示例:"
echo "1. 查看 NameServer 日志: kubectl logs -f <nameserver-pod-name> -n default"
echo "2. 查看 Broker 日志: kubectl logs -f <broker-pod-name> -n default"
echo "3. 进入 NameServer 容器: kubectl exec -it <nameserver-pod-name> -n default -- sh"
echo ""
echo "注意: 请确保已正确配置 RocketMQ 的存储和网络策略"