ElastiCache(Redis)をクラスターモードの有効と無効があるが、どっちを選んでもElastiCacheとしてはクラスターとなり、Redisの経験も浅い自分としてはよくわからなかったので調べた。
ElastiCache(Redis)を構成するコンポーネント
下記ドキュメントに書かれている。
登場するコンポーネントは下記。
- ノード
- シャード
- クラスター
ElastiCacheの最小の構成要素。メモリとかCPUが割り当てられている。(≒インスタンスみたいなものだと思っている。)
複数のノードをまとめたグループ。データをシャードごとに分散して保存できる。シャードにはID(NodeGroupId)が割り当てられている。
1つのシャード内に複数のノードが存在することで、シャード内のノード間でデータが同期(レプリケーション)される。
クラスターモードが無効のElastiCacheクラスターではシャードは常に1つとなる。クラスターモードが有効のElastiCacheクラスターではシャードは最大90個となる。
シャードをまとめたグループ。クラスターにもID(ReplicationGroupID)が割り当てられる。
クラスターモードが有効のElastiCacheクラスターでは、複数のシャードを作ることでデータがシャード間で分割される。
なるほど、わかるようでよくわからんけど、クラスターは複数のシャードから成り、シャードは複数のノードから成るというのはわかった。
クラスターモードを有効/無効とRedis Cluster
クラスターモードを無効にした場合、ElastiCacheとしてはMaster/Slave構成のクラスターとなる(≒Redis (クラスターモードが無効) クラスター)。
クラスターモードを有効にした場合、ElastiCacheとしてはRedis Clusterとなる(≒Redis (クラスターモードが有効) クラスター)。
Redis (クラスターモードが有効) クラスター(≒Redis Cluster)の場合は、Redis Clusterの制約がそのまま当てはまる。
マルチマスター構成となるが、可用性を考えると最低3ノード、可用性を考えると6つのノードが推奨らしい。マスターとスレーブの2台1セットが3つで計6つ。
この場合、ElastiCache上の構成としては、ノードが6つ、シャードはマスターとスレーブの2台1セットが1シャードとなり計3つ、クラスターは1つとなる。
これでシャード(マスターとスレーブの2台1セット)毎にデータを分割して保存していける。
Redis (クラスターモードが無効) クラスター(≒Master/Slave構成のクラスター)ではマスターが1台のスレーブ複数台の構成しかとれない。
ノードは複数台いけるがマスターは1台、シャードとクラスターは1つとなる。
いずれの構成もElastiCacheとしての制約もあるので、どっちが良いかは要件次第だと思う。
まとめ
ElastiCache Redisのクラスターモードの有効/無効の違いについて、ElastiCache Redisの構成要素を調べて整理した。
Cluster Modeの有効と無効を選択できるが、どちらにしてもElastiCacheとしてはクラスターである。
Cluster Modeの有効の場合はRedis Cluster(≒Redis (クラスターモードが有効) クラスター)、Cluster Modeの有効の場合はMaster/Slave構成のクラスター(≒Redis (クラスターモードが無効) クラスター)となる。
最初は、ElastiCache(Redis)としての用語と、Redisとしての用語がごちゃごちゃにならないように理解する必要があると思う。