はじめに
AWSでRedis(クラスターモードかつ暗号化)を作成した際、
接続が止まった状態でエラーログも何も出ない。。
ということで何に気を付ければいいか書いていく
サーバー内接続確認
まずは接続コマンドを入力する。
注意点として
-c
クラスターモードON
--tls
暗号化転送ON
このオプションがないと延々と接続待ちになるので注意
$ redis-cli -h [エンドポイント] -p [ポート番号] -c --tls
ただし、自身のredis-cliの4.0.10
をインストールしていたが、redis-cliのオプションである--tls
が使えなかった(ここで詰まった)
Unrecognized option or bad number of args for: '--tls'
なのでバージョン6をインストールする
$ sudo amazon-linux-extras install redis6
接続確認して完了
# キー"mykey"に値"Hello, Redis!"をセットする
xxx.x.x.x:6379> SET my_key "Hello, Redis!"
# キー"mykey"の値を取得する
xxx.x.x.x:6379> GET my_key
"Hello, Redis!"
アプリケーション(Rails)接続確認
使用gem
Gemfile
gem 'redis-objects', '>= 2.0.0.beta' # gem 'redis'でもok
gem 'redis-clustering' # クラスター接続用
rediss
はタイポではなく、暗号化認証(SSL)の場合はこのように書く。
config/initializers/redis.rb
Redis::Cluster.new(nodes: ["rediss://#{ENV["REDIS_URI"]}:#{ENV["REDIS_PORT"]}"])
まとめ
- 暗号化してクラスターを作成した場合は結構オプションやredis-cliのコマンドが通常と異なるので気をつけないといけない(公式にも接続方法載ってる)
- Railsによる接続も
gem redis-clustering
が必要になる(gem redis-objects
だけでも出来るのか調査してもわからなかった。)