Redis Sentinel可以通过心跳检测的方式监视多个主服务器以及它们属下的所有从服务器,并在某个主服务器下线时自动对其实施故障转移。
1启动Sentinel
一个Sentinel配置文件至少需要包含以下选项,用于指定Sentinel要监视的主服务器:
sentinel monitor
选项中的master-name参数用于指定主服务器的名字,这个名字在执行各种Sentinel操作的时候会经常用到;ip参数和port参数用于指定主服务器的IP地址和端口号;而quorum参数则用于指定判断这个主服务器下线所需的Sentinel数量。
Sentinel开始监视一个主服务器之后,就会去获取被监视主服务器的从服务器名单,并根据名单对各个从服务器实施监视,整个过程是完全自动的,所以用户只需要输入待监视主服务器的地址就可以了,并不需要输入从服务器的地址。除此之外,Sentinel还会对每个被监视的主从服务器实施心跳检测,并记录各个服务器的在线状态、响应速度等信息,当Sentinel发现被监视的主服务器进入下线状态时,它就会开始对下线的主服务器实施故障转移。
1.1 处理重新上线的旧主服务器
Sentinel可以同时监视多个主服务器;Sentinel在对下线的主服务器实施故障转移之后,仍然会继续对它进行心跳检测,当这个服务器重新上线的时候,Sentinel将把它转换为当前主服务器的从服务器。
1.2 设置从服务器优先级
用户可以通过replica-priority配置选项来设置各个从服务器的优先级,优先级较高的从服务器在Sentinel选择新主服务器的时候会优先被选择。replica-priority的默认值为100,这个值越小,从服务器的优先级就越高。举个例子,如果现在有3个从服务器,它们的优先级分别为100、50和10,那么Sentinel将优先选用优先级为10的从服务器作为新的主服务器。replica-priority值为0的从服务器永远不会被选为主服务器,用户可以通过这一设置将不适合用作主服务器的从服务器排除在新主服务器的候选名单之外。
1.3新主服务器的挑选规则
当Sentinel需要在多个从服务器中选择一个作为新的主服务器时,首先会根据以下规则从候选名单中剔除不符合条件的从服务器:1)否决所有已经下线以及长时间没有回复心跳检测的疑似已下线从服务器。2)否决所有长时间没有与主服务器通信,数据状态过时的从服务器。3)否决所有优先级为0的从服务器。
然后根据以下规则,在剩余的候选从服务器中选出新的主服务器:1)优先级最高的从服务器获胜。2)如果优先级最高的从服务器有两个或以上,那么复制偏移量最大的那个从服务器获胜。3)如果符合上述两个条件的从服务器有两个或以上,那么选出它们当中运行ID(运行ID是服务器启动时自动生成的随机ID,这条规则可以确保条件完全相同的多个从服务器最终得到一个有序的比较结果)最小的那一个。
2 Sentinel网络
只使用单个Sentinel监视主服务器和它属下的从服务器,容易造成单点故障。为了避免单点故障,可以使用多个Sentinel组建一个分布式Sentinel网络。对主服务器的状态进行投票,决定是否进行故障转移,因此至少需要使用3个Sentinel才能构建一个可信的Sentinel网络。
2.1 组建Sentinel网络
需要启动多个Sentinel,并使用sentinel monitor配置选项指定Sentinel要监视的主服务器,那些监视相同主服务器的Sentinel就会自动发现对方,并组成相应的Sentinel网络。
将Sentinel和被监视的Redis服务器放到不同的机器上运行,并且各个Sentinel也应该放到不同的机器上运行,这样Sentinel网络才能够更准确、有效地判断出服务器的实际状态。
3 Sentinel管理命令
3.1 SENTINEL masters:获取所有被监视主服务器的信息
向Sentinel发送以下命令
SENTINEL masters
3.2 SENTINEL master:获取指定被监视主服务器的信息
SENTINEL master
3.3 SENTINEL slaves:获取被监视主服务器的从服务器信息
SENTINEL slaves
3.4SENTINEL sentinels:获取其他Sentinel的相关信息
SENTINEL sentinels
3.5 SENTINEL get-master-addr-by-name:获取给定主服务器的IP地址和端口号
SENTINEL get-master-addr-by-name
3.6SENTINEL reset:重置主服务器状态
SENTINEL reset
//重置名称为website_db的主服务器
SENTINEL reset website_db
//重置名称为website_为前缀的主服务器
SENTINEL reset website_*
SENTINEL reset命令可以让Sentinel忘掉主服务器之前的记录,并重新开始对主服务器进行监视,所以它通常只会在Sentinel网络或者被监视主从服务器的结构出现重大变化时使用。
3.7SENTINEL failover:强制执行故障转移
SENTINEL failover
3.8SENTINEL ckquorum:检查可用Sentinel的数量
检查Sentinel网络当前可用的Sentinel数量是否达到了判断主服务器客观下线并实施故障转移所需的数量:
服务器托管网 服务器托管网 SENTINEL ckquorum
SENTINEL ckquorum命令一般用于检查Sentinel网络的部署是否成功。
3.9SENTINEL flushconfig:强制写入配置文件
通过向Sentinel发送以下命令,让Sentinel将它的配置文件重新写入硬盘中:
SENTINEL flushconfig
Sentinel在被监视服务器的状态发生变化时就会自动重写配置文件,所以这个命令的作用就是在配置文件基于某些原因或错误而丢失时,立即生成一个新的配置文件。此外,当Sentinel的配置选项发生变化时,Sentinel内部也会使用这个命令创建新的配置文件来替换原有的配置文件。
4在线配置Sentinel
4.1SENTINEL monitor:监视给定主服务器
通过执行以下命令,用户可以让Sentinel开始监视一个新的主服务器:
SENTINEL monitor
4.2SENTINEL remove:取消对给定主服务器的监视
当用户想要在线取消Sentinel对某个主服务器的监视时,可以使用以下命令:
SENTINEL remove
4.3SENTINEL set:修改Sentinel配置选项的值
通过使用以下命令,用户可以在线修改Sentinel配置文件中与主服务器相关的配置选项值:
SENTINEL set
//修改投票个数
SENTINEL set website_db quorum 3
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 科技云报道:云原生是大模型“降本增效”的解药吗?
科技云报道原创。 在过去一两年里,以GPT和Diffusion model为代表的大语言模型和生成式AI,将人们对AI的期待推向了一个新高峰,并吸引了千行百业尝试在业务中利用大模型。 国内各家大厂在大模型领域展开了激烈的军备竞赛,如:文心大模型、通义千问、混元…