官方文档:https://github.com/bitnami/charts/tree/master/bitnami/redis
本文使用bitnami的helm模板搭建redis集群,并启用哨兵
编写redis.yaml
启用redis的哨兵模式
设置哨兵访问时不需要密码
关闭哨兵的保护模式
image:
repository: bitnami/redis
master:
persistence:
size: "4Gi"
storageClass: longhorn
slave:
persistence:
storageClass: longhorn
size: "4Gi"
cluster:
slaveCount: 3
sentinel:
enabled: true
usePassword: false
configmap: |
protected-mode no
metrics:
enabled: true
password: xxxxx
添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
安装
helm upgrade --install redis bitnami/redis -n [database] -f values.yaml
卸载
helm uninstall redis -n database
redis高可用最佳实践配置
备注的配置是关键
cluster:
enabled: true
slaveCount: 2
usePassword: true
password: xxx
# 设置存活探针
livenessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 5
# 设置探针
readinessProbe:
enabled: true
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 5
service:
type: ClusterIP
redisPort: 6379
master:
configmap: |
timeout 300
databases 16
rdbcompression no # 指定存储至本地数据库时是否压缩数据
maxmemory 2GB # 最大内存
maxmemory-policy allkeys-lru # 最大内存策略
disableCommands: # 禁用高危指令
- "FLUSHDB"
- "FLUSHALL"
- "KEYS"
- "CONFIG"
persistence:
enabled: true
path: /data
size: 10Gi
storageClass: glusterfs-sc
resources:
requests:
cpu: 500m
memory: 1024Mi
limits:
cpu: 500m
memory: 1024Mi
slave:
configmap: |
timeout 300
databases 16
rdbcompression no
maxmemory 2GB
maxmemory-policy allkeys-lru
disableCommands:
- "FLUSHDB"
- "FLUSHALL"
- "KEYS"
- "CONFIG"
persistence:
enabled: true
path: /data
size: 10Gi
storageClass: glusterfs-sc
resources:
requests:
cpu: 500m
memory: 1024Mi
limits:
cpu: 500m
memory: 1024Mi
metrics:
enabled: true # 如果有使用prometheus做监控就开启
sentinel:
enabled: true # 开启哨兵
usePassword: false # 对哨兵容器是否使用密码
downAfterMilliseconds: 5000 # 检查redis节点宕机的超时时间(单位是毫秒)
configmap: |
protected-mode no # 关闭少哨兵的保护模式