EC2二台が使用するキャッシュサーバーとしてElastiCacheを導入しました。
今まではセッションをsessionsテーブルに持っていたのをredisに移行するすることが主な目的だったのですが、将来的によく利用するデータはredisに持たせたりしたいなという目論みもありました。
redisのインスタンス作成
ElastiCacheの左側のメニューでredisを選択して「作成」からredisのインスタンスを作成します。
Amazon ElastiCache クラスターの作成 画面が表示されます。
入力すべきは以下の項目です。
- 名前
- ノードタイプ
パラメータグループもチューニングして設定すべきできすが、今のところデフォルトで困っていないので後回しにしています。
ElastiCacheの料金表は以下のリンクから確認してください。
https://aws.amazon.com/jp/elasticache/pricing/
詳細設定に進みます。
入力すべきは以下の項目です。
- サブネットグループ
- セキュリティグループ
セキュリティグループはインバウンドでredisのポート(6379)を開けてあげたものを設定します。
EC2からElastiCacheのredisへの疎通確認
$ redis-cli -h redis-name.xxx.xx.9999.xxxx.cache.amazonaws.com
$ ping
PONG
redis-cliが入っていない場合はインストールする必要があります。
(ubuntuの場合は $ sudo apt-get install redis-tools -y
)
Railsの設定変更
config/initializers/session_store.rb
Rails.application.config.session_store :redis_store, servers: ENV['REDIS_URL'], expire_after: 3.months
redisのURLは環境変数で設定しているので、各サーバーの環境変更(REDIS_URL)にredisのエンドポイント(portは不要)を入れてあげればOKです。
エンドポイントはダッシュボードのプライマリエンドポイントを見てください。
_この記事は[ElastiCacheのredisをEC2で使う](https://tackeyy.com/blog/posts/use-elasti-cache-with-ec2)をQiita用に加筆修正したものです_