问题描述
codis配置了由三个实例组成的哨兵集群,当某个Group中的master挂掉后,slave不会自动切换为master。
解决思路
因为在redis主从集群中,哨兵机制是实现主从库自动切换的关键机制。通过codis-fe面板发现,sentinel相互发现存在问题,因为部署了三个实例,但sentinels却显示了一个,如图中所示:
通过sentinel三个实例的配置文件发现,其runid是一样的。停掉其中俩个sentinel实例,将配置文件中涉及runid的那行去掉(类似:sentinel myid 981e49fbf1483aa3ec28bacc7ed11),重新启动sentinel的俩个实例,确保三个sentinel实例的runid不同,发现此时sentinel变为了3。经过试验,将某个group的master手动kill,其slave会自动切换为master,当重新启动kill掉的原master,发现其变为了现master的slave。