设为首页 收藏本站
查看: 938|回复: 0

[经验分享] redis HA策略

[复制链接]

尚未签到

发表于 2016-12-18 06:49:37 | 显示全部楼层 |阅读模式
  Redis提供的HA策略包括master-slave配置和sentinel策略。其中master-slave能够进行主从配置,redis支持异步的主从配置,性能不是问题,参考:http://www.redis.cn/topics/replication.html  。sentinel策略,也称为哨兵模式,可以理解为单独开了一个线程监控master-slave的运行状态,在master出现故障时实现自动切换,参考:http://www.redis.cn/topics/sentinel.html 。
  redis版本号3.0,客户端jedis2.5.2。在一台虚拟机进行测试,master分配端口6379和26379,slave1分配端口6378和26378,slave2分配端口6377和26377。
  安装redis,参考http://lpyyn.iyunv.com/blog/2199433 ,安装完成之后复制redis安装目录下的src/redis-server、src/redis-sentinel、redis.conf、sentinel.conf到目录/usr/local/redis-master-slave,分别放到三个文件夹下master6379、slave6377和slave6378,将6379为master,6378和6377为slave。


  • 配置master和slave,只需要配置redis.conf
         master配置,只需要改下端口

#端口
port 6379
         slave6377配置

#端口
port 6377
#作为6379的slave
slaveof 172.16.230.61 6379
         slave6378配置 

#端口
port 6378
#作为6379的slave
slaveof 172.16.230.61 6379
         配置完成之后,先启动master,然后分别启动slave,通过redis-cli对master进行set操作,再分别在slave中通过get查看master中set的值,至此master-slave配置完成,但是他们之间是没有failover机制。


  • 配置sentinel,主要配置sentinel.conf
  master配置

#sentinel检测端口号
port 26379
#sentinel供外放访问的IP
sentinel announce-ip 172.16.230.61
#初始监控的master地址和端口,以及需要多少个sentinel同意才能判断一个master失效,并启用failover
sentinel monitor mymaster 172.16.230.61 6379 1
  slave6377配置,相对于master的配置只是改下port。

#sentinel检测端口号
port 26377
#sentinel供外放访问的IP
sentinel announce-ip 172.16.230.61
#初始监控的master地址和端口,以及需要多少个sentinel同意才能判断一个master失效,并启用failover
sentinel monitor mymaster 172.16.230.61 6379 1
  slave6378配置。

#sentinel检测端口号
port 26378
#sentinel供外放访问的IP
sentinel announce-ip 172.16.230.61
#初始监控的master地址和端口,以及需要多少个sentinel同意才能判断一个master失效,并启用failover
sentinel monitor mymaster 172.16.230.61 6379 1
  sentinel的其它配置,例如:[size=1.1em]down-after-milliseconds、[size=1.1em]failover-timeout等,保持默认。
  [size=1.1em] 
  [size=1.1em]   通过以下命令分别启动master、slave以及sentinel。

./redis-server redis.conf
./redis-sentinel sentinel.conf
  [size=1.1em] 启动后,可以看到三个sentinel的界面如下,由日志中可以看到6379、6378和6377已经被sentinel监视了。
DSC0000.png
 
DSC0001.png
 
DSC0002.png

  [size=1.1em]  使用redis-cli连到sentinel端口查看当前的master-slave信息。
  [size=1.1em]  查看整个master-slave:

# ./redis-cli -p 26377
127.0.0.1:26377> sentinel master mymaster
  [size=1.1em]  
DSC0003.png
 查看当前的master:


# ./redis-cli -p 26377
127.0.0.1:26377> sentinel get-master-addr-by-name mymaster
  [size=1.1em] 
DSC0004.png  

  [size=1.1em]
  [size=1.1em]通过控制台停止6379,./redis-cli -p 6379 shutdown , 由sentinel控制台可以看到打出了failover的时间点。 
DSC0005.png
 

  [size=1.1em]基于spring-data-redis 和 jedis-2.5.2的连接工厂配置如下:

RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration() ;
//配置redis的sentinel
redisSentinelConfiguration.master("mymaster").sentinel("172.16.230.61", 26379).sentinel("172.16.230.61", 26378).sentinel("172.16.230.61", 26377) ;
//通过RedisSentinelConfiguration配置JedisConnectionFactory
jedisConnectionFactory = new JedisConnectionFactory(redisSentinelConfiguration) ;
  [size=1.1em]通过JedisConnectionFactory获取Connection时,会首先会由sentinel获取master信息,然后建立和master的连接,参考日志如下:

八月 26, 2015 4:49:46 下午 redis.clients.jedis.JedisSentinelPool initSentinels
INFO: Trying to find master from available Sentinels...
八月 26, 2015 4:49:46 下午 redis.clients.jedis.JedisSentinelPool initSentinels
INFO: Redis master running at 172.16.230.61:6378, starting Sentinel listeners...
八月 26, 2015 4:49:46 下午 redis.clients.jedis.JedisSentinelPool initPool
INFO: Created JedisPool to master at 172.16.230.61:6378
  [size=1.1em] 
  [size=1.1em]注:相关配置打包,见附件redis-master-slave.rar

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-315645-1-1.html 上篇帖子: redis 性能测试 下篇帖子: redis 学习笔记3--set
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表