Redisを使用してelasticacheインスタンスを作成したいと思います。
すべてが1つのサーバーに収まるので、「クラスターモード無効」で使用する必要があると思います。 SPOFを持たないようにするために、マスターに障害が発生した場合にAWSによってプロモートされるリードレプリカを作成したいと思います。可能であれば、マスターとスレーブの間で読み取り専用操作のバランスを取るのは素晴らしいことですが、必須ではありません。
Awsコンソールを使用して機能するマスター/リードレプリカを作成し、cloudformerを使用してcloudformation jsonconfを作成しました。 Cloudformerは、リンクされていない2つのAWS::ElastiCache::CacheCluster
を作成しましたが、ドキュメントを読んでいます。それらをリンクする方法がわかりません...今のところ私はこの構成を持っています:
{
"cachehubcache001": {
"Type": "AWS::ElastiCache::CacheCluster",
"Properties": {
"AutoMinorVersionUpgrade": "true",
"AZMode": "single-az",
"CacheNodeType": "cache.t2.small",
"Engine": "redis",
"EngineVersion": "3.2.4",
"NumCacheNodes": "1",
"PreferredAvailabilityZone": { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "Az1B"]},
"PreferredMaintenanceWindow": "Sun:04:00-Sun:05:00",
"CacheSubnetGroupName": {
"Ref": "cachesubnethubprivatecachesubnetgroup"
},
"VpcSecurityGroupIds": [
{
"Fn::GetAtt": [
"sgiHubCacheSG",
"GroupId"
]
}
]
}
},
"cachehubcache002": {
"Type": "AWS::ElastiCache::CacheCluster",
"Properties": {
"AutoMinorVersionUpgrade": "true",
"AZMode": "single-az",
"CacheNodeType": "cache.t2.small",
"Engine": "redis",
"EngineVersion": "3.2.4",
"NumCacheNodes": "1",
"PreferredAvailabilityZone": { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "Az1A"]},
"PreferredMaintenanceWindow": "Sun:02:00-Sun:03:00",
"CacheSubnetGroupName": {
"Ref": "cachesubnethubprivatecachesubnetgroup"
},
"VpcSecurityGroupIds": [
{
"Fn::GetAtt": [
"sgiHubCacheSG",
"GroupId"
]
}
]
}
},
}
私はそれが間違っていることを知っていますが、正しいレプリカを作成する方法を理解できません。 AWSのドキュメントを理解できません。まず、次の間に使用するタイプがわかりません。
CloudformerがAWS::ElastiCache::CacheCluster
を作成したので、それを使用しますが、1つのリソースのみを作成し、2つのリソースを作成するためにNumCacheNodes
パラメーターを使用する必要があると感じました。
redisは使用できません:
NumCacheNodes
AZMode
およびPreferredAvailabilityZones
したがって、このソリューションをマルチAZにする方法がわかりません...
AWS::ElastiCache::ReplicationGroup
を使用してこれを行うことができました。NumCacheClusters
パラメーターは、多数のサーバーを持つ可能性を提供します。注意:マスター/スレーブへの接続を自分で処理する必要があるようです(ただし、マスターに障害が発生した場合、awsは通常それを検出し、スレーブのDNSを変更して、ポイントが構成を変更しないようにする必要があります)。ここにサンプルがあります:
"hubElastiCacheReplicationGroup" : {
"Type" : "AWS::ElastiCache::ReplicationGroup",
"Properties" : {
"ReplicationGroupDescription" : "Hub WebServer redis cache cluster",
"AutomaticFailoverEnabled" : "false",
"AutoMinorVersionUpgrade" : "true",
"CacheNodeType" : "cache.t2.small",
"CacheParameterGroupName" : "default.redis3.2",
"CacheSubnetGroupName" : { "Ref": "cachesubnethubprivatecachesubnetgroup" },
"Engine" : "redis",
"EngineVersion" : "3.2.4",
"NumCacheClusters" : { "Ref" : "ElasticacheRedisNumCacheClusters" },
"PreferredMaintenanceWindow" : "Sun:04:00-Sun:05:00",
"SecurityGroupIds" : [ { "Fn::GetAtt": ["sgHubCacheSG", "GroupId"] } ]
}
},