はじめに
猫大好きエンジニアの福田です。
抜け落ちた猫のひげを集めて、いつか筆を作りたいと思っている今日この頃です。
さて、ElastiCache for Redis を Multi-AZ (マルチAZ)で構築しようとした時に、少し詰まったため備忘として構築方法を残しておきます。
前提条件
- 実装時のCDKバージョン:2.37.1
うまくいかないやり方
- CfnCacheCluster を利用し
azMode
をcross-az
、numCacheNodes
を2
にする
new elasticache.CfnCacheCluster(this, 'MyCfnCacheCluser', {
engine: "redis",
engineVersion: "6.2",
cacheNodeType: "cache.t4g.micro",
azMode: "cross-az",
numCacheNodes: 2,
// ...
})
cdk deploy
すると以下のようなエラーが出ます。
18:23:22 | CREATE_FAILED | AWS::ElastiCache::CacheCluster | MyCfnCacheCluser
NumCacheNodes should be 1 if engine is redis
エラーメッセージに従って、NumCacheNodesを1に変更すると、また別のエラーが出てしまいます。
18:28:35 | CREATE_FAILED | AWS::ElastiCache::CacheCluster | MyCfnCacheCluser
Must specify at least two cache nodes in order to specify AZ Mode of 'cross-az'. (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 68de40a8-8068-455d-8d22-0782f24c5
c00; Proxy: null)
そもそも azMode
は Memcached
のみサポートされているようで、Redis
は未対応でした。
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticache.CfnCacheCluster.html#azmode
This parameter is only supported for Memcached clusters.
うまくいくやり方
- CfnReplicationGroupを利用し
multiAzEnabled
をtrue
にする
new elasticache.CfnReplicationGroup(this, 'MyCfnReplicationGroup', {
engine: "redis",
engineVersion: "6.2",
cacheNodeType: "cache.t4g.micro",
multiAzEnabled: true,
// ...
})
まとめ
すでにCfnCacheCluster
のazMode: 'single-az'
で構築されていたRedisがあり、それをMulti-AZ対応すべく、安直にazMode: 'cross-az'
と変更してもうまくいかなかったため、備忘として残させていただきました。
あらかじめMulti-AZ構成が見込まれている場合は「うまくいくやり方」で構築しておくと良いと思います。
ElastiCache for Redis で Multi-AZ を CDK で構築する方法をご紹介しました。
どなたかの参考になれば幸いです。