nobu blog

プログラミングやゲームの話など。

*



【Rails】HerokuのRedisプラグインがバージョンアップ後に接続できなくなった時の解決メモ

   

概要

Heroku上でRedisのバージョンアップを実施後に、Railsアプリで接続が不可能になった際の解決メモ。

スポンサーリンク

背景

HerokuではRedisを利用可能なプラグインが提供されおり、Railsアプリ等でRedisを使用可能です。
Hobby Devプランといった無料で使用可能なプランも提供されており、ちょっとしたWEBサイトで使用する分には問題ないレベルで使用できます。
Hobby DevプランのRedisに関して、下記のようなバージョン4と5のサポート停止がアナウンスされておりバージョン6への移行がアナウンサれています。
https://devcenter.heroku.com/articles/heroku-redis-hobby-deprecation

今回、バージョン6への移行を行ったのですが、移行後に下記のようなエラーがRailsのログに出力されるようになってしまい、Redisに接続が出来ていない事がわかりました。

スポンサーリンク

解決方法

どうやら、Redis6からTLSでの接続が要求されるように変わったようです。
ですが、Heroku内部ではSSLを無効化してHTTPにフォアワードして接続しているため、SSLでの接続をOFFにして接続すれば良いようです。
https://stackoverflow.com/questions/65834575/how-to-enable-tls-for-redis-6-on-sidekiq

という事で、下記のようにssl_paramsを追加して実施してみました。

結果として、残念ながら症状が変わらず。
公式のドキュメントを見ると、どうやらこれだけでは足らないようです。
https://devcenter.heroku.com/ja/articles/securing-heroku-redis

スポンサーリンク

要約すると、下記のようにする必要がある。

  • URLはredisではなく、redissとする。
  • 使用するRedisのポートに+1した番号を使用する。

heroku config | grep REDIS でREDIS関係のURL設定を確認すると下記のようになっていた。

Reids関係の環境変数は、Redis作成時に自動で設定されるようで、色の名前(CYAN)が付いたものが自動で作成されるようです。
HEROKU_REDIS_CYAN_TLS_URLがそのまま使えそうなので、そのまま使うかREDIS_URLを書き換えて、redissで接続するようにすれば良さそうです。

スポンサーリンク

上記の通り正しいURLとssl_paramsを設定する事でエラーが発生せずに接続する事ができました。

 - heroku, Ruby on Rails