AWS-EC2 Redis服务器RDB快照写入错误

Jay*_*dya 6 amazon-ec2 amazon-web-services redis laravel-5

我有一个在Laravel5.2框架上运行的Web应用程序,并且通过以下AWS设置将会话驱动程序设置为redis。

  • 实例1:运行Web应用程序,并在.env文件中使用Redis配置,如下所示

    1. Redis主机: aws-private-ip-of-instance-2
    2. Redis密码: NULL
    3. Redis端口: 6379
  • 实例2:运行以下配置的Redis服务器

    1. 绑定aws-private-ip-of-instance-2和127.0.0.1
    2. 工作目录/var/lib/redis具有775许可,并且ower-group是redis。
    3. dump.rdb具有660许可权的RDB快照名称,而ower-group为redis。

注意:在AWS入站规则中,6379为实例2配置了端口。

一切正常,直到redis尝试将数据写入RDB文件。前端显示以下错误。

MISCONF Redis配置为保存RDB快照,但当前无法持久保存在磁盘上。禁用了可能修改数据集的命令。请检查Redis日志以获取有关该错误的详细信息。

在Redis服务器的日志中,我得到了以下数据。

4873:M 23 Sep 10:08:15.028 * 1 changes in 900 seconds. Saving...
4873:M 23 Sep 10:08:15.028 * Background saving started by pid 7392
7392:C 23 Sep 10:08:15.028 # Failed opening .rdb for saving: Read-only file system
4873:M 23 Sep 10:08:15.128 # Background saving error
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情

  • vm.overcommit_memory = 1按照Redis-administraition-blog中的建议添加到/etc/sysctl.conf
  • dump.rdb文件路径更改为文件tmp夹,并将权限更改为777

Jay*_*dya 0

好吧,发布自己问题的答案是非常尴尬的,这是一个非常愚蠢的错误。但希望这里的新人也能从我的错误中吸取教训。

  • 所以我做的第一件事就是通过将选项/etc/redis/redis.conf更改为 来启用文件中的 redis-server 的详细日志。log_leveldebug

  • 观察日志并了解我的 redis 端口6379对互联网上的所有人开放。

因此,从日志中我观察到其他人的服务器正在欺骗我的 redis 服务器并使其成为它的奴隶。由于我的 redis 服务器是以从属服务器的方式配置的read-only,当我尝试访问我的 redis 服务器时,它会抛出只读错误。

  • 对redis服务器端口应用防火墙后,我就没有再遇到这个问题了。