是否建议使用Supervisor运行Redis?

4

在生产环境中使用Supervisor运行Redis是否是一个好的实践?

我在Google上搜索了一下,但并没有看到许多这样做的例子。如果不行,那么在生产环境中运行Redis的正确方式是什么?

2个回答

9

在生产中,我个人只使用Monit监控Redis。如果Redis崩溃,Monit将重新启动它,但更重要的是,Monit将能够监视(并在达到阈值时发出警报)Redis当前占用的RAM数量(这是最大的问题)。

配置可能类似于以下内容(如果Redis中的maxmemory设置为1GB)

check process redis
  with pidfile /var/run/redis.pid
  start program = "/etc/init.d/redis-server start"
  stop program = "/etc/init.d/redis-server stop"
  if 10 restarts within 10 cycles
    then timeout
  if failed host 127.0.0.1 port 6379 then restart
  if memory is greater than 1GB for 2 cycles then alert

1

这要看情况。如果我要在守护进程控制下使用redis,我会使用runit。我确实使用monit进行监控,但只是为了查看绿灯。

然而,为了充分利用redis的真正威力,你不应该将redis作为守护进程运行,特别是主节点。如果主节点出现故障,你将不得不将从节点切换为主节点。简单来说,我只需将节点关闭,然后使用chef配方启动一个新节点。

但是......这也取决于你多久进行一次快照。我不进行快照,因此不需要守护进程控制。

人们使用redis是为了获得强大的速度。这意味着不写入磁盘并将所有数据保存在内存中。如果一个节点出现故障......而你没有进行快照......数据就会丢失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接