k8s部署redis主从 哨兵
时间: 2024-09-18 07:10:12 浏览: 59
在 Kubernetes (k8s) 部署 Redis 主从和哨兵模式时,你需要考虑以下几个步骤:
1. **安装Redis**: 首先,确保在集群上安装了 Redis,并配置好基础版本,如 Redis 5 或更高,支持哨兵模式。
2. **创建服务**: 使用 `kubectl` 创建两个服务,一个为主服务(Master),用于客户端连接;另一个为哨兵服务(Sentinel),用于监控和故障转移。
```yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 6379
targetPort: 6379
---
apiVersion: v1
kind: Service
metadata:
name: redis-sentinel
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 26379
targetPort: 26379
```
3. **配置 Sentinel 负责主从管理**:
- 创建哨兵 Pod,它们会监视 Master 的健康状态并自动切换到备选节点。
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-sentinel
spec:
replicas: 3
serviceName: redis-sentinel
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis-sentinel
image: bitnami/redis:latest
command: ["sentinel", "--master", "my-redis-cluster"]
```
4. **设置 Master 和 Replicas**:
- 使用 StatefulSet 或 Deployment 创建 Redis 数据库,标记其中的一个为 Master,并指定其它作为 Replicas。
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-master-replica
spec:
replicas: 2
serviceName: redis-master
selector:
matchLabels:
app: redis
role: master
template:
metadata:
labels:
app: redis
role: master
spec:
containers:
- name: redis
image: bitnami/redis:latest
env:
- name: REDIS_sentinel MASTER_URLS
value: "redis-master.service.consul:26379"
```
5. **连接客户端**:
客户端应用需要配置连接到主服务(`redis-master.service.cluster.local:6379`),哨兵服务提供了一种高可用的方式进行连接。
阅读全文