首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于超低延迟的Kubernetes上的Redis主/从复制

用于超低延迟的Kubernetes上的Redis主/从复制
EN

Stack Overflow用户
提问于 2021-12-22 16:40:21
回答 1查看 732关注 0票数 2

图总是比最后几句好,下面是我想做的事情:

总括而言:

  • --我希望有一个Redis主实例(或者在这里不相关)--我的K8S集群
  • --我希望每个节点都有一个Redis从实例来复制主实例
  • --当删除一个节点时,Redis从荚被取消注册,从主

H 110我希望当添加一个节点时,一个Redis从荚被添加到该节点并注册到主<代码>H 211H 112我希望一个节点中的所有pods只消耗本地Redis从站(我认为简单的部分)H 213代码>F 214/>代码。

我为什么想要这样的建筑?

  • 我想利用Redis的主/从复制来避免自己处理缓存失效的
  • ,我希望拥有对Redis缓存的超低延迟调用,所以每个节点拥有一个从节点是我所能得到的最好的(在本地主机网络上调用)

是否有可能自动化这些部署,例如使用Helm?是否有丰富的资源使这样的体系结构具有干净的动态主/从绑定/解绑定?

最重要的是,这个架构对我想要做的事情来说是个好主意吗?还有其他的办法可以同样快吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 19:41:56

我记得我们以前曾讨论过这个主题-- here,不用担心在这里添加更多内容。

了解更多关于Redis舵机图表的信息:https://github.com/bitnami/charts/tree/master/bitnami/redis#choose-between-redis-helm-chart-and-redis-cluster-helm-chart

,您还应该问我的应用程序将如何连接到同一个节点上而不使用Redis服务的问题。

为此,您可以使用“环境变量”,并将它们公开给应用程序

类似于:

代码语言:javascript
复制
env:
- name: HOST_IP
  valueFrom:
    fieldRef:
      fieldPath: status.hostIP

它将给出运行的Node IP 的值,然后您可以使用该IP连接到DeamonSet (如果正在运行,则为Redis从服务器)。

您可以在以下网址阅读更多内容:https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/

是否有可能自动化这样的部署,例如使用Helm?

是的,您可以编写自己的Helm图表并部署生成的YAML清单。

和最重要的是,这个体系结构对于我想要做的事情来说是个好主意吗?还有其他的办法可以同样快吗?

如果您认为这是一个好主意,按照我的考虑,这可能会导致$$$问题&更高的集群资源使用率。

如果您正在运行每个节点上的200个节点,那么您将运行Redis的奴隶怎么办?这可能会消耗每个节点上的资源,并将成本添加到中。

如果您正在计划特定的部署

上面的建议也不错,但如果您计划使用 Redis --只使用特定的部署--您也可以使用sidecar模式,并使用配置将多个Redis连接到一起。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: web
  labels:
    app: web
spec:
  ports:
  - port: 80
    name: redis
    targetPort: 5000
  selector:
    app: web
  type: LoadBalancer    
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 3
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: redis
        image: redis
        ports:
          - containerPort: 6379
            name: redis
            protocol: TCP        
      - name: web-app
        image: web-app
        env:       
          - name: "REDIS_HOST"
            value: "localhost"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70452338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档