在以下链接中:
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)
在上面,到最右边
有主要的'和' replica'
相反,我看到如下所示:
"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"
}
]
我尝试了各种命令,找不到。
以什么方式, 我能看到细节吗? 如果某个分片/节点是主/副本
提前致谢
答案 0 :(得分:0)
echo "cluster nodes" | redis-cli -c -h redis-cluster | grep master
答案 1 :(得分:0)
作为多节点设置创建时,AWS Elasticache Redis设置具有2种模式-启用和禁用集群模式,如here中所述。这对眼前的问题很重要。
如果您的Elasticache群集处于群集模式已禁用,则可以
aws 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集群模式下不可用
aws 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个选择:
如果您可以访问AWS Elasticache Redis集群的端口6379,请按照Abhishek的上一个答案获取主/从信息。
如果您无权访问群集,即,如果您编写的是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分钟内保持为主节点状态。