【问题标题】:How can we see which nodes are primary or replica, in aws elasticache redis-cluster?在 aws elasticache redis-cluster 中,我们如何查看哪些节点是主节点或副本?
【发布时间】:2022-02-19 04:14:32
【问题描述】:

在下面的链接:

http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/ClientConfig.ReplicationGroup.html

存在以下内容:

REPLICATIONGROUP  my-repgroup  My replication group  available

  CLUSTERID  my-redis-primary
  CLUSTERID  my-replica-1
  NODEGROUP  0001  my-repgroup.f310xz.ng.0001.cache.amazonaws.com  6379  available
        NODEGROUPMEMBER  my-redis-primary    0001  my-redis-primary.f310xz.0001.cache.amazonaws.com   6379  us-west-2a  primary
        NODEGROUPMEMBER  my-replica-1        0001  my-replica-1.f310xz.0001.cache.amazonaws.com       6379  us-west-2b  replica
Connecting to Clusters in a Replication Group (ElastiCache API)

在上面,在最右边
有“主”和“副本”

从今天开始,在 aws 控制台中,
当我给出“describe-replication-groups”命令时
我没有看到“主要”和“副本”

相反,我看到如下内容:

"NodeGroupMembers": [
    {
        "PreferredAvailabilityZone": "us-west-2b", 
        "CacheNodeId": "0001", 
        "CacheClusterId": "ec-redis-cluster1-0001-001"
    }, 
    {
        "PreferredAvailabilityZone": "us-west-2b", 
        "CacheNodeId": "0001", 
        "CacheClusterId": "ec-redis-cluster1-0001-002"
    }, 
    {
        "PreferredAvailabilityZone": "us-west-2b", 
        "CacheNodeId": "0001", 
        "CacheClusterId": "ec-redis-cluster1-0001-003"
    }
]

我尝试了各种命令,找不到。

以什么方式, 我可以看看详细信息吗 如果某个分片/节点是主/副本

提前致谢

【问题讨论】:

    标签: amazon-web-services amazon-elasticache redis-cluster


    【解决方案1】:

    echo "cluster nodes" | redis-cli -c -h redis-cluster | grep master

    【讨论】:

    • 我现在失去了问题的上下文,但是谢谢,它可能对其他人有用。
    【解决方案2】:

    AWS Elasticache Redis 设置在创建为多节点设置时有 2 种模式 - 集群模式启用和禁用,如 here 所述。这对手头的问题很重要。

    如果您的 Elasticache 集群处于集群模式已禁用,则执行

    aws elasticache describe-elasticache-replication-groups --replication-group-id test-1 
    

    将显示类似于此的输出:

    {
      "CurrentRole": "replica",
        "PreferredAvailabilityZone": "us-west-1c",
        "CacheNodeId": "0001",
        "ReadEndpoint": {
          "Port": 6379,
          "Address": "xxxx"
        },
        "CacheClusterId": "xxxx"
    },
    {
      "CurrentRole": "primary",
      "PreferredAvailabilityZone": "us-west-1c",
      "CacheNodeId": "0001",
      "ReadEndpoint": {
        "Port": 6379,
        "Address": "xxxx"
      },
      "CacheClusterId": "xxxx"
    }
                          
    

    帮助您确定目标节点的主节点或副本角色。 CurrentRole 键在 AWS Elasticache 集群模式中不可用 enabled 在哪里做

    aws elasticache describe-elasticache-replication-groups --replication-group-id test-2 
    

    将显示类似于以下内容的输出:

    {
        "PreferredAvailabilityZone": "us-west-1c",
            "CacheNodeId": "0001",
            "CacheClusterId": "xxxxx"
    },
    {
        "PreferredAvailabilityZone": "us-west-1c",
        "CacheNodeId": "0001",
        "CacheClusterId": "xxxxxxx"
    },
    

    上述输出没有 CurrentRole 或任何其他可以深入了解节点角色的相应键。在这种情况下,您有 2 个选择:

    1. 如果您有权访问 AWS Elasticache Redis 集群的 6379 端口 - 请按照 Abhishek 之前的回答获取主/从信息。

    2. 如果您无权访问集群,即如果您正在编写 AWS Lambda 或某些未在无法访问集群端口 6379 的机器上运行的代码,则迂回的方法是检查 IsMaster 每个分片的每个节点的指标:

       aws cloudwatch get-metric-data --cli-input-json file://test.json
      

    test.json 看起来像这样:

    {
      "MetricDataQueries": [
        {
          "Id": "is_master_test",
          "MetricStat": {
            "Metric": {
              "Namespace": "AWS/ElastiCache",
              "MetricName": "IsMaster",
              "Dimensions": [
                {
                  "Name": "CacheClusterId",
                  "Value": "xxxxx"
                },
                 {
                  "Name": "CacheNodeId",
                  "Value": "0001"
                }
              ]
            },
            "Period": 60,
            "Stat": "Minimum",
            "Unit": "Count"
          },
          "Label": "is_master_test",
          "ReturnData": true
        }
      ],
      "StartTime": "2019-06-12T10:08:0000",
      "EndTime": "2019-06-12T10:09:0000"
    }
    

    如果目标节点是主节点,输出将如下所示:

    {
        "MetricDataResults": [
            {
                "Timestamps": [
                  "2019-06-12T10:05:00Z"
                ],
                "StatusCode": "Complete",
                "Values": [
                  1.0
                ],
                "Id": "is_master_test",
                "Label": "is_master_test"
            }
        ]
    }
    

    如果目标节点不是主节点,输出将如下所示:

    {
        "MetricDataResults": [
            {
                "Timestamps": [
                    "2019-06-12T10:05:00Z"
                ],
                "StatusCode": "Complete",
                "Values": [
                    0.0
                ],
                "Id": "is_master_test",
                "Label": "is_master_test"
            }
        ]
    }
    

    请注意,我使用指标“最小值”来检查此节点是否至少在最后 1 分钟内保持为主节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-04-29
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 2012-03-30
      • 2022-01-12
      相关资源
      最近更新 更多