前提・実現したいこと
複数のウェブサーバ(CentOS7, nginx使用)で負荷分散およびセッション同期を
実現したいと考えています。
発生している問題・エラーメッセージ
redisを使用してセッション同期をしていますが、頻繁に同期が取れなくなります。
/var/log/redis/redis.logには以下のようなエラーが表示されます。(タイムスタンプ等省略)
10 changes in 300 seconds. Saving...
Background saving started by pid xxxxx
Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Permission denied
Background saving error
このログの例では
dir:/var/lib/redis→/etc/cron.d
dbfilename:dump.rdb→root
に書き換えられています。書き換えられる値は上記に限りませんが
dirがroot権限のディレクトリに書き換えられてしまうとredis ID
がRDBファイルを書き込めなくなりこのエラーになっているようです。
該当のソースコード
ソースコード
試したこと
現状ではredis-cliコマンドを使用してdirおよびdbfilenameの
値が/var/lib/redisおよびdump.rdb以外に書き換えられていたら
デフォルトに戻すツールを作成し、crontabで5分毎に実行する
ということで、エラーを抑止しています。
なぜこのような状況が発生し、どうすれば解決できるのか
ご教授いただけないかと考えます。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
redis.confの修正について(マスター、スレーブ×1)
bind 127.0.0.1→#bind 127.0.0.1
protected-mode yes→protected-mode no
timeout 0→timeout 60
tcp-keepalive 300→tcp-keepalived 0
stop-writes-on-bgsave-error yes→stop-writes-on-bgsave-error no
↑変更した記憶がないのでredisが自分で変更したのではないかと(かつ2台中マスター側のみ)
slave-read-only yes→slave-read-only no
slaveof (スレーブ側のみ)
redis-sentinel.confの設定について(redisとは別サーバ×1)
protected-mode no
daemonize no
sentinel monitor redis_www_session (マスターIP) 6379 1
sentinel down-after-milliseconds redis_www_session 3000
Generated by CONFIG REWRITE
sentinel failover-timeout redis_www_session 90000
sentinel known-slave redis_www_session (スレーブIP) 6379
回答2件
あなたの回答
tips
プレビュー