CacheClusterとReplicationGroup
コンソールでは意識することがないが、CloudFormationでElastiCacheクラスターを構築する場合は CacheClusterと ReplicationGroupという概念が存在する。 プライマリノードとリードレプリカノードは別のCacheClusterに作成され、それらをカプセル化したのがReplicationGroup。
Cluster Mode
有効にすると最大90までシャードを増やせるようになる。作成後にCluster Modeを有効にはできない。
シャードには1つのPrimary Nodeと0-5つのReplica Nodeが含まれる。 Replica NodeはPrimary NodeのデータをレプリケーションするRead Onlyなノード。手動でPrimary Nodeに昇格させたり、NodeやAZの障害時に自動で昇格したりする。
CloudFormationではシャード数はReplicationGroupのNumNodeGroupsで、レプリカノードの数はReplicasPerNodeGroupで設定できる。
リクエストはキーから計算されるハッシュスロットによって各シャードに分散され、 ClUSTER SLOTSコマンドでハッシュスロットとノードのマッピングが取れる。 go-redisのようなCluster対応クライアントは内部でこのマッピングと計算したハッシュスロットからリクエストを送るノードを決定している。
Node Size
少なくとも総アイテムサイズをシャード数で割った分がメモリに乗るようにする。
これに加えてスナップショットを作成する際にフォークしたプロセスで実行されるBGSAVEや、フェイルオーバーで使うメモリが必要。
reserved-memory-percent
パラメータ(以前のバージョンではreserved-memory
だった)でmaxmemory
の25%を予約することが推奨されており、デフォルトは25になっている。
Subnet Group
クラスタに設定するVPCのサブネットの集合。クラスタ作成後には変更できない。