我读过aws elasticache redis的自动故障切换功能。该文档告诉我,故障转移过程需要至少有1个副本节点(即至少总共有2个节点),以便它可以使用副本节点替换发生故障的主节点。
但是如果我只有一个节点并且它失败了,我就找不到关于会发生什么的细节。它是自动重新创建的,还是需要手动删除并重新创建?
我打算使用下面的cloudformation模板在我的测试环境中创建一个只有1个节点的redis组(集群模式被禁用)。
"ReplicationGroup": {
"Type": "AWS::ElastiCache::ReplicationGroup",
"Properties": {
"ReplicationGroupId" : "my-redis",
"ReplicationGroupDescription" : "My Redis",
"NumCacheClusters": 1,
"AutomaticFailoverEnabled": false,
"CacheNodeType": "cache.t3.medium",
"CacheParameterGroupName" : "default.redis5.0",
"Engine": "redis",
"EngineVersion" : "5.0.6",
"Port": "6379",
"AtRestEncryptionEnabled" : true,
"TransitEncryptionEnabled" : true,
"AuthToken" : {"Ref": "AuthToken"},
"CacheSubnetGroupName": {"Ref": "SubnetGroup"},
"SecurityGroupIds": [
{"Ref": "RedisSecurityGroup"}
],
"SnapshotRetentionLimit": 0,
"MultiAZEnabled" : {"Fn::If": ["ConditionMultiAZEnabled", true, false]}
}
},
2条答案
按热度按时间piah890a1#
我们以前也遇到过这个问题。当aws试图安装一个重要的安全更新时,我们丢失了所有的数据(服务更新sla不符合要求)。它是一个单节点elasticache示例。以下是回复,包含了aws支持的所有细节;
如您所说,我发现集群上有事件消息,ByteUsedForCache被删除为0。当我调查redis节点时,我能够看到来自elasticache服务的健康检查失败,因为硬件故障和节点损坏
*****
被替换为健康的新节点以恢复redis服务。由于redis集群*****
只有一个节点*****
,每当节点像这种情况一样发生故障时,都可能发生数据丢失。为了提高redis集群的高可用性,并在节点故障的情况下保持数据,您应该通过向集群至少添加一个副本节点来创建复制组。请阅读此链接以详细了解复制组。https://docs.aws.amazon.com/amazonelasticache/latest/red-ug/replication.html
副本节点只能用于读取请求,但数据总是从主节点复制到副本节点。另外,当主节点出现故障时,可以将副本节点升级到新的主节点,然后您可以保护数据。此链接提供如何添加副本节点。https://docs.aws.amazon.com/amazonelasticache/latest/red-ug/replication.addreadreplica.html
此外,您还可以通过复制组启用具有自动故障切换功能的multi-az。它可以在主节点发生故障时自动进行故障切换。它还可以提高redis集群的高可用性。https://docs.aws.amazon.com/amazonelasticache/latest/red-ug/autofailover.html
xlpyo6sf2#
这一过程将取决于具体情况。
az中只有一个节点,因此如果az有问题,那么您的节点可能会受到影响,而您几乎无法采取任何措施来缓解它。如果要恢复访问权限,则需要在另一个az中创建另一个节点。
如果是基础主机故障(例如机架断电、物理服务器需要重新启动等),aws将尝试将其迁移到同一可用性区域中的另一台主机。
大多数托管服务都遵循与ec2主机相同的恢复过程,因为这些都是在后台运行的服务。