LoginSignup
7
1

自己紹介

はじめまして、はる(@lemonade_37)と申します。
駆け出しエンジニアとして働き始めて約3ヶ月が経過しました🐣

概要

Sidekiqを使ってバックグラウンド処理を実装し、
本番環境のRedisでElastiCacheを使っていましたが、
一旦ElastiCacheを削除する運びとなったので、設定項目について備忘録を残します。
経緯については下記記事を参照ください🙇‍♀️

〜使わなくなった経緯〜

〜ローカルでの実装手順〜

環境

  • Docker
  • Ruby 3.2.3
  • Rails 7.1.3

手探りで実装したものの備忘録のため、紹介した方法よりも良い設定方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇

全体像

このようなインフラ構成です。
ElastiCache以外のインフラ環境はすでに構築されている前提とします。

73b3f23d6bab57afb2d161730a86bc72.png

AWS側の設定

ElastiCache用のセキュリティグループを作成

  1. EC2にアクセスし、セキュリティグループからセキュリティグループを作成を選択。
      
  2. 以下のように設定し、作成する。
    セキュリティグループ名:任意
    説明:任意
    VPC:そのセキュリティグループを適用するVPCを選択する
    インバウンドルール:
      タイプ:カスタムTCP
      プロトコル:TCP
      ポート範囲:6379
      ソース:デフォルト
    アウトバウンドルール:なし
    
    ap-northeast-1.console.aws.amazon.com_ec2_home_region=ap-northeast-1.jpeg
    14f9e5ecb671b2d4a9fc380d0febd23c.png

ElastiCacheのRedisキャッシュを作成

  1. ElastiCacheにアクセスし、使用を開始のセレクトボックスでRedisを選択。
    1d9fed8c987bf557ef7a1e23a3746012.png
      

  2. 1ページ目の設定は以下の通り。

    設定:
      デプロイオプション:独自のキャッシュを設計
      作成方法:クラスターキャッシュ
    クラスターモード:無効
    クラスター情報:
      名前:任意
      説明:任意
    ロケーション:
      ロケーション:AWSクラウド
      マルチAZ:有効化
      自動フェイルオーバー:有効化(デフォルト)
    クラスター設定:
      エンジンバージョン:7.1
      ポート:6379
      パラメータグループ:default.redis7
      ノードのタイプ:cache.t2.micro(一番小さくて安い)
      レプリケーション数:2
    サブネットグループの設定:
      サブネットグループ:新しいサブネットグループを作成
      名前:任意
      説明:任意
      VPC ID:クラスターを実行するVPCを選択
    アベイラビリティゾーンの配置:デフォルト
    

    ap-northeast-1.console.aws.amazon.com_elasticache_home_region=ap-northeast-1.jpeg
    ap-northeast-1.console.aws.amazon.com_elasticache_home_region=ap-northeast-1.jpeg
      

  3. 2ページ目の設定で、最初に作成したセキュリティグループを選択。他の項目は以下の通り。(ほとんどデフォルト)
    ap-northeast-1.console.aws.amazon.com_elasticache_home_region=ap-northeast-1 (2).jpeg
    ap-northeast-1.console.aws.amazon.com_elasticache_home_region=ap-northeast-1 (2).jpeg

アプリ側の設定

  1. 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
    
      
  2. 本番環境の.envファイルに下記を追加
    .env
    SIDEKIQ_ENDPOINT=redis://プライマリエンドポイント
    
    エンドポイントは、下記からコピーできる。
    f17e225b7c81d29b6b988397faca6cff.jpeg

プライマリエンドポイントと、リーダーエンドポイントがあるが、それぞれ読み取り用、書き取り用。
Sidekiqで使用する場合においてはプライマリエンドポイントのみで良さそう。

 

参考記事

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1