分布式

redis使用sentinel高可用配置

字号+ 作者:风潇潇 来源:原创 2016-03-31 21:39 我要评论( )

这是sentinal的配置文件,配置比较简单,说简单又没全弄清。不过这个可以用了

#配置sentinel.conf的例子
#端口
port 26379
 
#配置外部匿名ip和端口
#sentinel用来告诉其他,此sentinel的存在
# sentinel announce-ip <ip>
#如果有端口,sentinel会宣称指定此端口
# sentinel announce-port <port>
 
#工作目录临时
dir /tmp
#指定 sentinel监控的master的 master-name ip redis-port  quorum 
#master-name 给主命名,ip 主master的ip redis-port 主master的端口  quorum 当多少sentinel发现master挂了就算真正挂掉了
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
#Slaves 是被自动发现的,所以没必要去指定那个是slaves。Sentinel可以
#Sentinel 它会自动重写的配置文件 ,添加slaveds 使用额外的配置选项
#Slaves当提升为master的时候,slaves的配置文件也会被重写
#master-name 不应该包含特殊的字符比如'.-_';
 
sentinel monitor mymaster 127.0.0.1 6379 2
# 权限验证的秘密,这个密码用在master和slaves之间,所以slaves和master的密码是一样的。当使用sentinel时应该避免不同密码的情况,当然也可以关掉权限验证
# sentinel auth-pass <master-name> <password>
#关闭权限验证
# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
 
#在ping没答复,持续多少时间之后 判定master为down状态 ,也就是数再多少毫秒之后Sentinel开始作故障转移
# sentinel down-after-milliseconds <master-name> <milliseconds>
#默认为 30s
# Default is 30 seconds.
sentinel down-after-milliseconds mymaster 30000
 
#有多少slaves可以被配置指向新的slave 在master挂掉之后.如果你在使用slaves 作为查询时,可以使用少一点的,因为在和master同步时,slave将会不可查询.
# sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs mymaster 1
 
 
#指定故障超时,默认时3分钟,并且这个超时在多方面使用,这个时间可以设短一点
#1、再翻译
# sentinel failover-timeout <master-name> <milliseconds>
#
# Specifies the failover timeout in milliseconds. It is used in many ways:
 
 
#故障超时 使用的地方
# - The time needed to re-start a failover after a previous failover was
#   already tried against the same master by a given Sentinel, is two
#   times the failover timeout.
#
# - The time needed for a slave replicating to a wrong master according
#   to a Sentinel current configuration, to be forced to replicate
#   with the right master, is exactly the failover timeout (counting since
#   the moment a Sentinel detected the misconfiguration).
#
# - The time needed to cancel a failover that is already in progress but
#   did not produced any configuration change (SLAVEOF NO ONE yet not
#   acknowledged by the promoted slave).
#
# - The maximum time a failover in progress waits for all the slaves to be
#   reconfigured as slaves of the new master. However even after this time
#   the slaves will be reconfigured by the Sentinels anyway, but not with
#   the exact parallel-syncs progression as specified.
#
# Default is 3 minutes.
sentinel failover-timeout mymaster 180000
 
#下面就是脚本,这个我们项目暂时没用到
# SCRIPTS EXECUTION
# Example:
#
# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

启动Sentinel的方式有两种,Sentinel既可以作为单独的进程启动,又可以和redis服务一起启动
第一种方式:redis-sentinel /path/to/sentinel.conf
第二种方式:
redis-server /path/to/sentinel.conf --sentinel
那sentinel是怎么做高可用的呢?Sentinel会改配置文件,将其中一个slave改为master,然后通知客户端master改。
我们的java端也不能连接redis了,而应该去连接sentinel

 sentinels.add(new HostAndPort("localhost", 26379).toString());
        sentinels.add(new HostAndPort("localhost", 26380).toString());
        sentinels.add(new HostAndPort("localhost", 26381).toString());
        JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
        System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString());
        Jedis master = sentinelPool.getResource();
        master.set("username","username");
像上面这样。所以数,Sentinel也应该是分布式的。如果只有一个,那这个Sentinel挂掉了会导致服务不可用。多个Sentinel,如果其中一个出问题了,其他也会知道。
截图如下:

这里 的sentinel和redis-server是单独启动的。先启动Redis,再启动两个sentinel程序
 

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Redis内存优化

    Redis内存优化

    2016-04-29 09:38

  • Redis基本知识以及管理

    Redis基本知识以及管理

    2016-03-29 15:52

  • ehcache配置

    ehcache配置

    2015-12-18 16:16

  • redis主从复制+keepalived的高可用配置

    redis主从复制+keepalived的高可用配置

    2016-01-03 11:16

网友点评
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)