复述中怎么实现低成本高可用方案

  介绍

这篇文章将为大家详细讲解有关复述中怎么实现低成本高可用方案,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<节>

哨兵介绍

哨兵是复述,官方为集群提供的高可用解决方案。在实际项目中可以使用哨兵去做复述,自动故障转移,减少人工介入的工作量。另外哨兵也给客户端提供了监控消息的通知,这样客户端就可根据消息类型去判断服务器的状态,去做对应的适配操作。

下面是哨兵主要功能列表:

    <李> <节>

    监控:哨兵持续检查集群中的主人,奴隶状态,判断是否存活。

    <李> <节>

    通知:在发现某个复述,实例死的情况下,哨兵能通过API通知系统管理员或其他程序脚本。

    <李> <节>

    自动故障转移:如果一个主挂掉后,哨兵立马启动故障转移,把某个奴隶提升为大师。其他的奴隶重新配置指向新主人。

    <李> <节>

    配置提供者:对于客户端来说前哨通知是有效可信赖的。客户端会连接哨兵去请求当前主人的地址,一旦发生故障哨兵会提供新地址给客户端。

,

哨兵配置

哨兵本质上只是一个运行在特殊模式下的复述,服务器,通过不同配置来区分提供服务.sentinel.conf配置:

 <代码>//,[监控名称],[ip],[港口],[多少哨兵同意才发生故障转移]
sentinel  monitor  mymaster  127.0.0.1  6379年,2
//,[监控名称],[大师多少毫秒后不回应平命令,就认为大师是主观下线状态]
sentinel  down-after-milliseconds  mymaster  60000年
//,[故障转移超时时间]
sentinel  failover-timeout  mymaster  180000年
//[在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步]
sentinel  parallel-syncs  mymaster  1
  ,

哨兵需要使用redis2.8版本以上,启动如下:

 <代码> redis-sentinel  sentinel.conf 
  ,

启动后前哨会:

    <李> <节>

    以10秒一次的频率,向被监视的主发送信息命令,根据回复获取主人当前信息。

    <李> <节>

    以1秒一次的频率,向所有复述,服务器,包含哨兵在内发送平命令,通过回复判断服务器是否在线。

    <李> <节>

    以2秒一次的频率,通过向所有被监视的主人,奴隶服务器发送包含当前哨兵,主信息的消息。

另外建议哨兵至少起3个实例以上,并配置2个实例同意即可发生转移5个实例,配置3个实例同意以此类推。

,

故障转移消息接收的3种方式

复述,服务器一旦发送故障后,哨兵通过筏算法投票选举新主人。故障转移过程可以通过哨兵的API获?订阅接收事件消息。

搜索Java知音公众号,回复”后端面试”,送你一份Java面试题宝典. pdf

,

脚本接收

    <李> <节>当故障转移期间,可以指定一个“通”知脚本用来告知系统管理员,当前集群的情况。 <李> <>节脚本被允许执行的最大时间为60秒,如果超时,脚本将会被终止(杀死)
 <代码> sentinel  notification-script  mymaster /var/复述/notify.sh  
  ,
    <李> <节>故障转移期之后,配置通知客户端的脚本。
 <代码> sentinel  client-reconfig-script  mymaster /var/复述/notifyReconfig.sh  
  ,   ,

客户端直接接收

前哨的故障转移消息通知使用的是复述,发布订阅。就是说在故障转移期间所有产生的事件信息,都通过频道(频道)发布出去。比如我们加台奴隶服务器,哨兵监听到后会发布加奴隶的消息到“+ slave"频道上,客户端只需要订阅“+ slave"频道即可接收到对应消息。

其消息格式如下:
[实例类型][事件服务器名称][服务器ip][服务器端口]@(主名称][ip][端口)

 <代码> & lt; instance-type>, & lt; name>, & lt; ip>, & lt; port>, @  & lt; master-name>, & lt; master-ip>, & lt; master-port> 
  ,

通知消息格式示例:

 <代码> *,,,,,,,,,,//订阅类型,,*即订阅所有事件消息。
-sdown ,,,,//消息类型
slave  127.0.0.1:6379  127.0.0.1  6379年,@  mymaster  127.0.0.1  6381

复述中怎么实现低成本高可用方案