我一直在搜索如何在 kubernetes 上部署具有高可用性的 redis。 我在使用redis集群模式时遇到了一些问题 并且在使用主从模式的时候我们还需要部署sentinel来处理master故障

我一直在评论this伟大的文档解释了如何做到这一点,但我认为缺少一些东西。

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

# 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 

毕竟我有两个问题

  • 首先,该文档仅为 sentinel 提供服务,所以我知道我应该为 redis 提供服务,但我什至不确定它们是否都是 master。

  • 第二个问题假设一个是 master,另一个是 slave,当发生故障并且 sentinel 选出一个新的 master 如何使新主服务器属于 redis 主服务器的服务而不是从服务(因为通常我们会制作 2 个服务,一个公开主服务器,另一个用于从服务器)

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

请您参考如下方法:

这可能已经很晚了,但据我了解,您并没有为 Redis 本身运行服务。您正在运行 redis 哨兵服务的复制,以便您的客户端可以连接到其中任何一个以查询主 redis pod 的 ip 地址。

每个有 master 的 pod 都有一个哨兵,它与哨兵服务对话。学习更新他们主人的状态。因此,每当发生故障转移时,sentinel 都会更新 sentinel 服务,sentinel 选择一个新的 master 并再次使用此信息更新 sentinel。因此,每当客户端再次查询 sentinel 时,它将获得新的 master 的 ip 地址。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!