当前位置: 首页 > 知识库问答 >
问题:

如何确定Redis(启用群集模式)复制组中的主要endpoint

严阳秋
2023-03-14

我们有一个群集Redis设置(引擎版本5.04),其中有三个节点组,每个节点组位于各自的AZ中,每个组包含三个节点,在传输和静止时启用加密。Stunnel是在bastion主机上配置的,它允许我运行bash脚本,以便在需要时(在升级应用程序期间)刷新每个主副本。

通过控制台应用最新的Redis软件补丁后,由于自动故障切换,每个节点组中的主要endpoint都发生了更改,我正在寻找确定新主要endpoint的最佳方法,以便相应地更新我的bash脚本。

留档声明运行aws elasticache描述-复制-组-复制-组ID my-复制-组应指示节点组成员的MONtRole,例如。

"NodeGroupMembers": [
   {
      "CurrentRole": "primary", 
      "PreferredAvailabilityZone": "us-west-2a", 
      "CacheNodeId": "0001", 
      "ReadEndpoint": {
         "Port": 6379, 
         "Address": "myreplgroup-001.1abc4d.0001.usw2.cache.amazonaws.com"
      }, 
      "CacheClusterId": "myreplgroup-001"
   }, 
   {
      "CurrentRole": "replica", 
      "PreferredAvailabilityZone": "us-west-2b", 
      "CacheNodeId": "0001", 
      "ReadEndpoint": {
         "Port": 6379, 
         "Address": "myreplgroup-002.1abc4d.0001.usw2.cache.amazonaws.com"
      }, 
      "CacheClusterId": "myreplgroup-002"
   }, 
   {
      ...
   }
]

我对此命令的响应根本不包含CurrentRole:

"NodeGroupMembers": [
    {
        "PreferredAvailabilityZone": "ap-southeast-2c",
        "CacheNodeId": "0001",
        "CacheClusterId": "my-replication-group-0001-001"
    },
    {
        "PreferredAvailabilityZone": "ap-southeast-2b",
        "CacheNodeId": "0001",
        "CacheClusterId": "my-replication-group-0001-002"
    },
    {
        "PreferredAvailabilityZone": "ap-southeast-2a",
        "CacheNodeId": "0001",
        "CacheClusterId": "my-replication-group-0001-003"
    }
]

是否有可用于确定主endpoint的替代aws cli命令?通过控制台故障转移主节点很容易,但由于我无法通过控制台/cli识别哪个节点是当前的主节点,这意味着猜测需要在我的刷新脚本中定位哪些节点。

共有1个答案

淳于健
2023-03-14

我在Elasticache的文档中找到了以下段落:

Redis(启用集群模式)具有副本的集群,因为它们有多个分片(API/CLI:节点组),这意味着它们也有多个主节点,与Redis(禁用集群模式)集群具有不同的endpoint结构。Redis(启用集群模式)有一个配置endpoint,它“知道”集群中的所有主endpoint和节点endpoint。您的应用程序连接到配置endpoint。每当您的应用程序写入或读取集群的配置endpoint时,Redis都会在幕后确定密钥属于哪个分片以及使用该分片中的哪个endpoint。这对您的应用程序来说非常透明。

我猜您给出的示例输出是针对一个禁用了群集模式的复制组的,原因是上面同一篇文章中的这段代码:

Redis(禁用群集模式)具有副本的群集有三种类型的endpoint;主endpoint、读取器endpoint和节点endpoint。

我知道这可能是一个没有实际意义的问题(两年前你问过这个问题),但如果你需要刷新集群中的主节点(启用集群模式),只需使用配置endpoint,更改就会传播到每个节点。

 类似资料:
  • 我有1个VPC——在1个EC2实例(amazon ami)和1个Redis(支持群集模式)下,使用Auth(密码)和对所有IP:端口开放的安全组(仅用于测试)——设置非常简单。 telnet在我的EC2实例(配置endpoint)的6379端口工作 无法使用Redis CLI连接到Redis服务器-无论是配置endpoint还是节点endpoint都无关紧要;使用v.5.0.4版本的Redis C

  • 我是Docker Swarm的新手。我试图用compose文件在Docker swarm上部署redis集群。我希望redis集群使用端口6380,所以我配置了端口,并让它在compose文件中挂载redis配置文件。 但是当我运行时,我得到了一个错误的声明,“对不起,集群配置文件redis-node.conf已经被不同的Redis集群节点使用了。请确保不同的节点使用不同的集群配置文件。” 这是我

  • Redis streams是否受益于群集模式?假设您有10个流,它们是分布在集群中还是全部分布在同一个节点上?我计划使用Redis streams实现真正的高吞吐量(每秒200万条消息),因此我担心Redis streams在这种规模下的性能。 如果Redis streams不能在集群模式下进行开箱即用的扩展,那么任何关于水平扩展Redis streams的指导都会非常棒。

  • 我们最近选择在应用程序中使用Amazon elastic cache redis,但在查阅文档时,有些事情还不清楚。 1) 禁用群集模式的Redis群集在群集的AWS控制台中有主endpoint,当我们使用jedis客户端连接到主endpoint时,该主endpoint是否将读取流量分配给群集的读取副本?或者应用程序必须显式连接才能读取群集中的副本?绝地武士的客户 2) 为redis启用的群集模式

  • 问题内容: 有人知道Redis复制和Redis分片之间的区别吗? 它们有什么用?Redis将数据存储在内存中,这如何影响复制/分片? 可以同时使用它们吗? 问题答案: 分片几乎是复制的对立面,尽管它们是正交的概念并且可以很好地协同工作。 分片,也称为分区,是通过密钥对数据进行拆分。复制(也称为镜像)是复制所有数据。 分片有助于提高性能,减少任何一种资源的命中和内存负载。复制对于获得高可用性的读取很

  • 问题内容: 我已经在这个问题中尝试过方法,但是由于我在集群模式下工作,因此它不起作用,redis告诉我: (错误)CROSSSLOT请求中的键未哈希到同一插槽 问题答案: 该问题的答案尝试在一个中删除多个键。但是,与给定模式匹配的键可能不会位于同一插槽中,并且如果这些键不属于同一插槽,则Redis Cluster不支持多键命令。这就是为什么您收到错误消息。 为了解决此问题,您需要一对一地使用以下密