自己紹介
はじめまして、はる(@lemonade_37)と申します。
駆け出しエンジニアとして働き始めて約3ヶ月が経過しました🐣
概要
Sidekiqを使ってバックグラウンド処理を実装し、
本番環境のRedisでElastiCacheを使っていましたが、
一旦ElastiCacheを削除する運びとなったので、設定項目について備忘録を残します。
経緯については下記記事を参照ください🙇♀️
〜使わなくなった経緯〜
〜ローカルでの実装手順〜
環境
- Docker
- Ruby 3.2.3
- Rails 7.1.3
手探りで実装したものの備忘録のため、紹介した方法よりも良い設定方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
全体像
このようなインフラ構成です。
ElastiCache以外のインフラ環境はすでに構築されている前提とします。
AWS側の設定
ElastiCache用のセキュリティグループを作成
- EC2にアクセスし、セキュリティグループから
セキュリティグループを作成
を選択。
- 以下のように設定し、作成する。
セキュリティグループ名:任意 説明:任意 VPC:そのセキュリティグループを適用するVPCを選択する インバウンドルール: タイプ:カスタムTCP プロトコル:TCP ポート範囲:6379 ソース:デフォルト アウトバウンドルール:なし
ElastiCacheのRedisキャッシュを作成
-
1ページ目の設定は以下の通り。
設定: デプロイオプション:独自のキャッシュを設計 作成方法:クラスターキャッシュ クラスターモード:無効 クラスター情報: 名前:任意 説明:任意 ロケーション: ロケーション:AWSクラウド マルチAZ:有効化 自動フェイルオーバー:有効化(デフォルト) クラスター設定: エンジンバージョン:7.1 ポート:6379 パラメータグループ:default.redis7 ノードのタイプ:cache.t2.micro(一番小さくて安い) レプリケーション数:2 サブネットグループの設定: サブネットグループ:新しいサブネットグループを作成 名前:任意 説明:任意 VPC ID:クラスターを実行するVPCを選択 アベイラビリティゾーンの配置:デフォルト
アプリ側の設定
- config/initializers/sidekiq.rbを以下のように修正
sidekiq.rb
Sidekiq.configure_server do |config| config.redis = { url: ENV["SIDEKIQ_ENDPOINT"] } end Sidekiq.configure_client do |config| config.redis = { url: ENV["SIDEKIQ_ENDPOINT"] } end
- 本番環境の.envファイルに下記を追加
.env
SIDEKIQ_ENDPOINT=redis://プライマリエンドポイント
プライマリエンドポイントと、リーダーエンドポイントがあるが、それぞれ読み取り用、書き取り用。
Sidekiqで使用する場合においてはプライマリエンドポイントのみで良さそう。