ablog

不器用で落着きのない技術者のメモ

ElastiCache(Redis) のスケールアップ/アウト

スケールアップ/ダウン

  • クラスターを選択して、[アクション]-[変更] から [ノードのタイプ] で変更する。

f:id:yohei-a:20210827082038p:plain

参考

オンライン垂直スケーリングを使用してAmazon ElastiCache for Redisバージョン 3.2.10 以降では、最小限のダウンタイムで Redis クラスターを動的にスケーリングできます。これにより、Redis クラスターはスケーリング中であってもリクエストを処理できます。

以下の操作を行うことができます。

  • スケールアップ – より大きいノードタイプを使用するように Redis クラスターのノードタイプを調整することで、読み取りおよび書き込み容量を増やします。ElastiCache は、オンラインのままリクエストを処理しながら、クラスターのサイズを動的に変更します。
  • スケールダウン – より小さいノードを使用するようにノードタイプを調整することで、読み取りおよび書き込み容量を減らします。同様に、ElastiCache は、オンラインのままリクエストを処理しながら、クラスターのサイズを動的に変更します。この場合、ノードのサイズを小さくすることでコストを削減します。
オンラインスケールアップ - Amazon ElastiCache for Redis

レプリカをを追加する

クラスターモード:無効の場合
  • リストからクラスターを選択する
  • [ノードの追加]でレプリカを追加

f:id:yohei-a:20210827082448p:plain

クラスターモード:有効の場合
  • リストからクラスターを選択する
  • リストからシャードを選択する
  • [ノードの追加]でレプリカを追加

f:id:yohei-a:20210827082758p:plain

おまけ

レプリカは最大5ノードまでだが、6ノードを作成しようとすると以下のエラーになる。

Specified replication group redis-no-auth has already met the number of read replicas allowed. (Service: AmazonElastiCache; Status Code: 400; Error Code: InvalidReplicationGroupState; Request ID: 162940bf-fb52-482f-a78f-baf1641dcb67; Proxy: null)

f:id:yohei-a:20210827091741p:plain

参考

リードレプリカの作成を開始すると、Amazon ElastiCache は、お客様のプライマリキャッシュクラスターのスナップショットを撮り、レプリケーションを開始します。その結果、スナップショットの作成時に、プライマリキャッシュクラスターに軽度の入出力停止が発生します。一般的に、入出力の停止は 1 分ほど継続します。

よくある質問 - Amazon ElastiCache | AWS

Q: リードレプリカでは、プライマリノードに応じて最新状態が保たれますか?
プライマリキャッシュノードの更新は、あらゆる関連したリードレプリカに対して自動的にレプリケーションが実行されます。ただし、Redis の非同期レプリケーションテクノロジーを使うと、さまざまな理由によりリードレプリカがプライマリキャッシュノードより遅れることがあります。一般的な理由は以下のとおりです。

  • プライマリキャッシュノードに対する書き込みの入出力量が、変更をリードレプリカに適用できる速度を超えている
  • ネットワークパーティション、またはプライマリキャッシュノードとリードレプリカ間にレイテンシーがある

リードレプリカは、Redis レプリケーションの長所と短所の影響を受けます。リードレプリカを使う場合は、リードレプリカとそのプライマリキャッシュノードの間に遅延または「矛盾」が発生する可能性があることを理解しておく必要があります。 Amazon ElastiCache は、不整合を理解できるよう支援するメトリックを発行します。

よくある質問 - Amazon ElastiCache | AWS

レプリカへのアクセス

  • Reader endpoint にアクセスすると DNS ラウンドロビンする(複数レプリカがある場合)
    • Reader endpoint はクラスターモード無効の場合のみ利用可
$ for i in {1..10}
> do
> dig +short replica.saz-replica1.******.apne1.cache.amazonaws.com
> sleep 10
> done
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-003.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.19.143
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-003.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.19.143
saz-replica1-003.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.19.143
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-002.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.17.137
saz-replica1-003.saz-replica1.******.apne1.cache.amazonaws.com.
172.31.19.143

シャードを追加する(クラスターモード:有効)

  • リストからクラスターを選択する
  • [シャードの追加]でシャードを追加する

f:id:yohei-a:20210827092421p:plain

参考

Amazon ElastiCache for Redis バージョン 3.2.10 以降を用いたオンラインリシャーディングとシャードの再分散を使用することで、ElastiCache を Redis (クラスターモードが有効) 用にダウンタイムなしで動的にスケールできます。このアプローチでは、クラスターはスケーリングや再分散が処理中でもリクエストに対応し続けることができます。

オンラインリシャーディングとシャードリバランシングRedis (クラスターモードが有効) - Amazon ElastiCache for Redis