在生产环境中使用Supervisor运行Redis是否是一个好的实践?
我在Google上搜索了一下,但并没有看到许多这样做的例子。如果不行,那么在生产环境中运行Redis的正确方式是什么?
在生产环境中使用Supervisor运行Redis是否是一个好的实践?
我在Google上搜索了一下,但并没有看到许多这样做的例子。如果不行,那么在生产环境中运行Redis的正确方式是什么?
在生产中,我个人只使用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
这要看情况。如果我要在守护进程控制下使用redis,我会使用runit。我确实使用monit进行监控,但只是为了查看绿灯。
然而,为了充分利用redis的真正威力,你不应该将redis作为守护进程运行,特别是主节点。如果主节点出现故障,你将不得不将从节点切换为主节点。简单来说,我只需将节点关闭,然后使用chef配方启动一个新节点。
但是......这也取决于你多久进行一次快照。我不进行快照,因此不需要守护进程控制。
人们使用redis是为了获得强大的速度。这意味着不写入磁盘并将所有数据保存在内存中。如果一个节点出现故障......而你没有进行快照......数据就会丢失。