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.iteye.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的其它配置,例如:down-after-milliseconds、failover-timeout等,保持默认。
通过以下命令分别启动master、slave以及sentinel。
./redis-server redis.conf ./redis-sentinel sentinel.conf
启动后,可以看到三个sentinel的界面如下,由日志中可以看到6379、6378和6377已经被sentinel监视了。
使用redis-cli连到sentinel端口查看当前的master-slave信息。
查看整个master-slave:
# ./redis-cli -p 26377 127.0.0.1:26377> sentinel master mymaster
查看当前的master:
# ./redis-cli -p 26377 127.0.0.1:26377> sentinel get-master-addr-by-name mymaster
通过控制台停止6379,./redis-cli -p 6379 shutdown , 由sentinel控制台可以看到打出了failover的时间点。
基于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) ;
通过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
注:相关配置打包,见附件redis-master-slave.rar
相关推荐
2. 配置Keepalived:在每个Redis实例上都需要安装并配置Keepalived,定义虚拟IP、监控状态检查和故障转移策略。 3. 故障检测:Keepalived会定期对主节点进行健康检查,如TCP连接或自定义脚本。若主节点失败,...
【keepalived_redis_ha方案】是用于实现高可用性(HA)的解决方案,结合了Keepalived和Redis两个组件,以确保在主服务器故障时能够无缝切换到备份服务器,保持服务的连续性和数据的完整性。 **Keepalived** 是一个...
Redis作为一个高性能的键值存储系统,其服务端的实现涉及多个关键环节,包括服务器启动流程、命令执行流程、事件循环机制以及高可用性(HA)策略。接下来,我们将深入探讨这些核心内容。 **1. Redis服务端启动流程*...
Redis集群的高可用性(HA)架构是分布式系统设计中的关键组成部分,确保数据服务的持续性和可靠性。在Redis中,通常采用哨兵(Sentinel)系统或者Cluster集群来实现HA。哨兵系统监控主从节点状态,当主节点故障时,...
在Kubernetes(简称K8s)...综上所述,Kubernetes集群部署Redis高可用读写分离数据库涉及到K8s的核心组件、主从复制、故障转移机制以及读写分离策略。通过理解这些概念和实践,可以构建出健壮且灵活的数据库解决方案。
Redis-HA-Client通过特定的策略保证读写操作的一致性。 4. **兼容性**:Redis-HA-Client兼容多种Redis部署模式,如哨兵系统和Redis Cluster,使得用户可以根据实际需求选择合适的架构。 5. **易于集成**:作为Java...
1. **startup-sentinel-26379.bat 和 startup-sentinel-26380.bat**:这两个批处理文件是用来启动Redis Sentinel服务的,Sentinel是Redis的高可用性(HA)解决方案,它可以监控主从复制集群,当主节点故障时自动进行...
在规划容量时需要考虑业务需求、所采用的数据类型、预先进行容量规划、选择合适的sharding策略和高可用性(HA)架构。使用pipeline技术可以减少网络IO的压力,从而提高性能。 适用场景: Redis适用于多种场景,其中...
在IT行业中,构建高可用(HA)的系统是至关重要的,因为它可以确保服务在面对硬件故障、网络问题或其他潜在中断时仍然能够持续运行。在这个"zookeeper+redis高可用完整实例"中,我们将探讨如何利用Zookeeper来实现...
【标题】"keepalived-redis高可用配置脚本"涉及的是在IT系统中实现高可用性和负载均衡的策略,特别是针对Redis缓存服务。Keepalived是一个开源项目,主要功能是提供网络服务的高可用性,而Redis是一种高性能的键值...
在现代互联网应用中,“高可用性”(High Availability, HA)至关重要。一个具有高可用性的系统能够确保在各种情况下服务的持续稳定运行,即使面对硬件故障或软件错误,也能最大限度地减少服务中断时间。例如,在...
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> host="localhost" port="6379" database="0" password="" maxActiveSessions="-1"/> ... ``` 2. 添加依赖 在项目中引入Redis...
【标题】中的“精品软件工具--通用的ha管理工具”是指一种高质量的高可用性(HA)管理系统,它被设计成可适用于多种软件环境。HA管理工具的主要目标是确保服务的持续性和可靠性,即使在单个组件出现故障时也能保持...
Sentinel是Redis的一个高可用性(HA)解决方案,它可以监控主从复制集群的状态,自动故障转移,确保服务的连续性。 2. `run-cluster.bat`:同样是一个批处理脚本,用于启动Redis集群。Redis集群支持数据分区,可以...
Redis Sentinel(哨兵)模式是Redis的一个高可用性(HA)解决方案,用于监控、故障检测以及主从切换。在这个配置中,我们有三台服务器,其中一台作为主节点,一台作为从节点,另一台作为哨兵节点。哨兵系统通过监控...
因此,可能需要设置合理的session过期时间,以及考虑使用Redis的持久化策略,防止数据丢失。 总的来说,通过集成Redis和Tomcat 7集群,我们可以有效地解决session共享问题,提升Web应用的可用性和可扩展性。在实际...
在构建高可用性(HA)系统时,`keepalived`和`redis`的结合使用是一种常见的解决方案。`keepalived`主要用于网络服务的故障切换和负载均衡,而`redis`则是一个高性能的键值存储数据库,常用于缓存和数据持久化。以下是...
总的来说,`watchdog` 是 Redis 高可用性策略的重要组成部分,通过实时监控节点状态,自动触发故障转移,提高了系统的可靠性和稳定性。理解并正确使用 `watchdog` 功能,有助于构建更加健壮的分布式应用。
Redis Sentinel是Redis高可用性(HA)解决方案的关键组件,它提供了主从监控、故障检测、自动故障转移以及配置传播等功能。在本压缩包文件中,包含了一套完整的Redis Sentinel部署配置,包括一个主节点和两个从节点...