centos7 kubernetes 部署rocketmq主从
时间: 2025-02-02 08:13:41 浏览: 50
在CentOS 7上使用Kubernetes部署RocketMQ主从架构,可以通过以下步骤实现:
### 1. 准备工作
确保你的Kubernetes集群已经安装并配置好,并且你有`kubectl`命令行工具可以使用。
### 2. 创建命名空间
首先,创建一个新的命名空间来隔离RocketMQ的资源:
```bash
kubectl create namespace rocketmq
```
### 3. 创建持久化存储
为RocketMQ的主从节点创建持久化存储卷(Persistent Volume)和持久化存储卷声明(Persistent Volume Claim):
```yaml
# rocketmq-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: rocketmq-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/rocketmq
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rocketmq-pvc
namespace: rocketmq
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
```
应用配置:
```bash
kubectl apply -f rocketmq-pv.yaml
```
### 4. 部署RocketMQ主节点
创建一个Deployment来部署RocketMQ主节点:
```yaml
# rocketmq-master-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: rocketmq-master
namespace: rocketmq
spec:
replicas: 1
selector:
matchLabels:
app: rocketmq
role: master
template:
metadata:
labels:
app: rocketmq
role: master
spec:
containers:
- name: rocketmq
image: rocketmqinc/rocketmq:4.8.0
ports:
- containerPort: 9876
- containerPort: 10911
env:
- name: ROCKETMQ_NAME_SERVER
value: "rocketmq-master:9876"
- name: ROCKETMQ_BROKER_NAME
value: "broker-a"
- name: ROCKETMQ_BROKER_ID
value: "0"
volumeMounts:
- name: rocketmq-storage
mountPath: /root/rocketmq/store
volumes:
- name: rocketmq-storage
persistentVolumeClaim:
claimName: rocketmq-pvc
```
应用配置:
```bash
kubectl apply -f rocketmq-master-deployment.yaml
```
### 5. 部署RocketMQ从节点
创建一个Deployment来部署RocketMQ从节点:
```yaml
# rocketmq-slave-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: rocketmq-slave
namespace: rocketmq
spec:
replicas: 1
selector:
matchLabels:
app: rocketmq
role: slave
template:
metadata:
labels:
app: rocketmq
role: slave
spec:
containers:
- name: rocketmq
image: rocketmqinc/rocketmq:4.8.0
ports:
- containerPort: 9876
- containerPort: 10911
env:
- name: ROCKETMQ_NAME_SERVER
value: "rocketmq-master:9876"
- name: ROCKETMQ_BROKER_NAME
value: "broker-b"
- name: ROCKETMQ_BROKER_ID
value: "1"
volumeMounts:
- name: rocketmq-storage
mountPath: /root/rocketmq/store
volumes:
- name: rocketmq-storage
persistentVolumeClaim:
claimName: rocketmq-pvc
```
应用配置:
```bash
kubectl apply -f rocketmq-slave-deployment.yaml
```
### 6. 部署Service
创建一个Service来暴露RocketMQ的端口:
```yaml
# rocketmq-service.yaml
apiVersion: v1
kind: Service
metadata:
name: rocketmq
namespace: rocketmq
spec:
selector:
app: rocketmq
ports:
- name: namesrv
port: 9876
targetPort: 9876
- name: broker
port: 10911
targetPort: 10911
type: ClusterIP
```
应用配置:
```bash
kubectl apply -f rocketmq-service.yaml
```
### 7. 验证部署
使用`kubectl`命令查看RocketMQ的Pod状态:
```bash
kubectl get pods -n rocketmq
```
通过查看日志来验证RocketMQ是否正常运行:
```bash
kubectl logs <pod-name> -n rocketmq
```
阅读全文
相关推荐















