如何在Kubernetes上进行可靠的,可扩展的Redis

问题描述 投票:2回答:1

我一直在大量研究如何在kubernetes上部署具有高可用性的Redis。我在使用Redis集群模式时遇到一些问题当使用主从模式时,我们还需要部署哨兵以能够处理主故障

我一直在审查this很棒的文档,该文档解释了如何执行此操作,但我认为还缺少一些内容。

我已经部署了这里提到的内容,但是,我需要对哨兵容器进行一些更改,以使其在哨兵模式下运行,现在主要的redis-master pod清单具有主要的redis主人,哨兵看起来像这样。

# redis-master.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    name: redis
    redis-sentinel: "true"
    role: master
  name: redis-master
spec:
  containers:
    - name: master
      image: redis
      env:
        - name: MASTER
          value: "true"
      ports:
        - containerPort: 6379
      resources:
        limits:
          cpu: "0.1"
      volumeMounts:
        - mountPath: /redis-master-data
          name: data
    - name: sentinel
      image: redis
      command:
        - redis-sentinel
        - "/redis-master-data/redis.conf"
      env:
        - name: SENTINEL
          value: "true"
      ports:
        - containerPort: 26379
      volumeMounts:
        - mountPath: /redis-master-data
          name: data
        - mountPath: /redis-master
          name: config
  initContainers:
  - name: copy
    image: redis
    command: ["bash", "-c", "cp /redis-master/redis.conf /redis-master-data/"]
    volumeMounts:
    - mountPath: /redis-master
      name: config
    - mountPath: /redis-master-data
      name: data
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: example-redis-config
        items: 
        - key: redis-config
          path: redis.conf

现在毕竟我有2个问题

  • [首先,此文档仅为哨兵提供服务,所以我知道我应该为Redis提供服务,但我什至不确定他们是否都是大师。

  • 第二个问题,假设一个是主机,另一个是从机,发生故障并且哨兵选出新的主机如何使新的主机属于redis主机的服务而不是从属服务(因为通常我们将创建2个服务,其中一个公开主机,而另一个供从属使用)

我希望我足够清楚如果您需要其他信息,请发表评论也

注意: 请阅读上面提到的文档,以更好地理解我的问题。

提前感谢

kubernetes redis high-availability fault-tolerance
1个回答
0
投票

这可能很晚了,但据我了解,您本身并未运行Redis服务。您正在运行Redis前哨服务的复制,因此您的客户端可以连接到其中任何一个,以查询主Redis Pod的IP地址。

带有主控权的每个吊舱都有一个哨兵,与哨兵服务进行对话。学习有关其主人状态的更新。因此,每当发生故障转移时,哨兵都会更新哨兵服务,哨兵会选择一个新的主服务器,然后再次使用此信息来更新哨兵。因此,每当客户端再次查询哨兵时,它将获得新主人的IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.