Redis 集群的正确关闭顺序
Correct shutdown sequence for Redis cluster
假设我有以下 Redis 复制设置:
- 3 台机器
- 每台机器都有一个Redis服务器和一个Redis sentinel。
- 其中一台服务器设置为master,另外两台为其slave。
正常关闭此设置的正确顺序和命令是什么,同时保持现有的主服务器作为主服务器,现有的从服务器作为从服务器(意思是,不应发生故障转移或重新配置)
谢谢。
Shutdown sequence
您应该先关闭哨兵,以避免 alarms/notifications 和故障转移。然后就可以关闭slaves和master了。
Shutdown command
您可以使用 shutdown 命令正常关闭 Redis 实例(sentinel、slave 和 master)。
对于 3.0 之前的 Redis 版本(不是很确定),Redis sentinel 没有 shutdown
命令。但是你可以直接使用 killall
或 kill -9 process_id
来杀死它而没有任何副作用。
============================================= ===============================
更新
在我原来的回答中,我建议先关闭slaves和master,以避免哨兵报警。事实上,还有另一种避免警报的方法。您可以在关闭 master 之前简单地从 sentinel 中删除 master:SENTINEL REMOVE <name>
。去掉master后,就不用再关心关机顺序了
How about the startup order?
如果使用SENTINEL MONITOR <name> <ip> <port> <quorum>
命令动态添加master到monitor,可以启动sentinel,动态添加master。相反,如果你用sentinel的配置文件添加master,你可以先启动Redis,避免sentinel的告警。
假设我有以下 Redis 复制设置:
- 3 台机器
- 每台机器都有一个Redis服务器和一个Redis sentinel。
- 其中一台服务器设置为master,另外两台为其slave。
正常关闭此设置的正确顺序和命令是什么,同时保持现有的主服务器作为主服务器,现有的从服务器作为从服务器(意思是,不应发生故障转移或重新配置)
谢谢。
Shutdown sequence
您应该先关闭哨兵,以避免 alarms/notifications 和故障转移。然后就可以关闭slaves和master了。
Shutdown command
您可以使用 shutdown 命令正常关闭 Redis 实例(sentinel、slave 和 master)。
对于 3.0 之前的 Redis 版本(不是很确定),Redis sentinel 没有 shutdown
命令。但是你可以直接使用 killall
或 kill -9 process_id
来杀死它而没有任何副作用。
============================================= ===============================
更新
在我原来的回答中,我建议先关闭slaves和master,以避免哨兵报警。事实上,还有另一种避免警报的方法。您可以在关闭 master 之前简单地从 sentinel 中删除 master:SENTINEL REMOVE <name>
。去掉master后,就不用再关心关机顺序了
How about the startup order?
如果使用SENTINEL MONITOR <name> <ip> <port> <quorum>
命令动态添加master到monitor,可以启动sentinel,动态添加master。相反,如果你用sentinel的配置文件添加master,你可以先启动Redis,避免sentinel的告警。