[アップデート] Amazon ElastiCache for Memcached がオートスケーリングをサポートしました
いわさです。
先日、ElastiCache for Memcached がスケールアップをサポートするアップデートを紹介しました。
一方でスケールアウトについては従来から可能で、クラスターへノードを追加したり削除したりすることが出来ていました。
Memcached では複数のノードにまたがってデータパーティショニングがサポートされています。
ただし、これまで手動スケールアウト/スケールインはサポートされていましたが、自動スケールアウト/スケールインを行う仕組みが提供されておらず、独自実装が必要でした。
これが先日のスケールアップのアップデートとあわせて、オートスケーリングの機能がサポートされるようになりました。
仕組みとして、Application Auto Scaling が使われておりスケジュールあるいは動的なスケーリングポリシーを定義することで自動化が可能です。
また、ネイティブに統合されているので ElastiCache コンソール上から簡単に設定することもできるようになっています。
「自動スケーリング」タブが追加されている
ElastiCache for Memcached クラスターを作成すると、新しく「自動スケーリング」というタブが表示されるようになっていることが確認出来ます。
ここでスケーリングポリシーを管理することができるようです。
ドキュメント上の明記が見当たらなかったのですがcache.t3.micro
の場合は自動スケーリングタブが表示されなかったので、ノードタイプの制限がありそうです。
動的なスケーリング
動的なスケーリングはメトリクスをターゲットとしたスケーリングポリシーです。
特定のメトリクスが目標を満たすように、最小最大ノードの範囲内でスケールアウト/スケールインを自動で行ってくれます。
スケーラブルなディメンションはノード数のみなので、オートスケールアップ/ダウンはサポートされていません。
こちらで選択できるメトリクスは「プライマリ CPU 使用率」と「キャパシティ」の 2 つでした。
また CPU 使用率には範囲チェックが入っており、35 % 以上 70 % 以下である必要があります。
スケジュールされたスケーリング
スケジュールされたスケーリングはワンショットあるいは一定間隔で定期実行されるスケジュールによってノード数を上下させるポリシーです。
週末に負荷が大きくなるなどあらかじめ需要が予測できるワークロードの場合こちらのポリシーを採用しやすいです。
設定時間は UTC で設定する必要があります。
スケーリングポリシーを試してみる
今回は次のようにある時点でスケールアウトさせるスケジュールされたポリシーを試してみました。
まず、1回限りのポリシーで時間を迎えた場合、次のように新規ノードがクラスターに追加されることを確認しました。
同じようにあるタイミングでスケールインさせるポリシーも作成してみました。
こちらも時間を迎えたタイミングで不要なノードの削除がされていることが確認出来ました。
また、ElastiCache コンソール上で設定した時に Application Auto Scaling の RegisterScalableTarget API が呼び出されていることを確認しています。
ただ、Application Auto Scaling コンソール上からは設定が出来ませんでした。ElastiCache コンソール上から設定できれば不自由はなさそうですが、Application Auto Scaling から設定したい方はドキュメントで API での設定方法が紹介されているのでそちらを参照してください。
さいごに
本日は Amazon ElastiCache for Memcached がオートスケーリングをサポートしたので試してみました。
ここ数日は ElastiCache for Memcached のスケーリング周りが柔軟になりましたね。
運用されている方は是非使ってみてください。