文档章节

高可用之redis主从failover

Mr_Qi
 Mr_Qi
发布于 2017/05/10 12:32
字数 719
阅读 75
收藏 0

redis在2.4+即提供了Sentinel模式。(不过还是2.8+ || 3.0+ 稳定些)

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:

  • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 RedisSentinel 。

 

现给出redis哨兵模式最小集配置

1台master 1台slave 以及2台Sentinel

##redis.conf##redis-0,默认为master
port 6380
##暂且禁用指令重命名
##rename-command
##开启AOF,禁用snapshot
appendonly yes
slave-read-only yes
##redis.conf##redis-0,默认为master
port 6379
##暂且禁用指令重命名
##rename-command
##开启AOF,禁用snapshot
appendonly yes
slave-read-only yes
slaveof 127.0.0.1 6380
port 26379sentinel monitor mymaster 127.0.0.1 6379 1
sentinel failover-timeout mymaster 150000
port 26380sentinel monitor mymaster 127.0.0.1 6379 1
sentinel failover-timeout mymaster 150000

需要确保所有配置文件均可读写,哨兵模式需要rewrite对应的配置文件。

配置文件应当除了端口号其余均保持一致。

在启动哨兵模式之前需要先启动master(防止出现sentinel找不到master)

执行命令

redis-server  redis.conf
redis-server  redis_slave.conf
redis-sentinel  sentinel.conf
redis-sentinel  sentinel_2.conf

此时master的端口为6380

执行命令

redis-cli -p 6380 DEBUG sleep 300

可以使得master fail.此时需要哨兵将会自动切换slave为master

可以看到此时6379已经被提升为master

而哨兵也会重写配置文件持久化配置。

使用jedis做哨兵配置也比较简单

Set<String> sentinels = new HashSet<String>();sentinels.add("127.0.0.1:26379");
sentinels.add("127.0.0.1:26380");       
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster",
      sentinels);
 Jedis jedis = sentinelPool.getResource();

 

© 著作权归作者所有

Mr_Qi

Mr_Qi

粉丝 286
博文 12
码字总数 13288
作品 0
南京
程序员
私信 提问
redis高可用之redis sentinel(哨兵)的搭建以及应用

redis的sentinel可以监控redis一个和多个redis的主从复制架构。 主要实现的功能有: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification)...

liuhuang9496
2017/04/26
0
0
redis应用之使用sentinel实现主从复制高可用

一、redis的高可用管理工具sentinel介绍 sentinel是一个管理redis实例的工具,它可以实现对redis的监控、通知、自动故障转移。sentinel不断的检测redis实例是否可以正常工作,通过API向其他程...

xingliguang
2016/10/14
0
0
Linux运维-搭建高可用Redis缓存

前言 是一个高性能的数据库,现时越来越多企业与应用使用作为缓存服务器。楼主是一枚后端程序员,也算是半个运维工程师了。在服务器上搭建,怎么可以不会呢?下面楼主就带着大家从0开始,依次...

liangzzz
2017/12/07
0
0
Linux Redis 高可用之主从复制

Redis主从复制简介 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或...

我最喜欢三大框架
02/18
0
0
redis的主从搭建与sentinel高可用服务的搭建

  以下内容是记录在公司的测试服务器上安装redis 3.0.7并搭建主从和配置了sentinel服务的过程,验证了一遍当redis主实例宕机后是否会发生主库自动转移,并探究了在故障转移过程中redis实例...

一直是小学生
2018/08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何远程调试部署在CloudFoundry平台上的nodejs应用

网络上关于如何本地调试nodejs应用的教程已经很多了,工具有Chrome开发者工具,Visual Studio Code,和nodejs周边的一些小工具等等。 在实际情况中,我们可能遇到本地运行良好,但是部署到C...

JerryWang_SAP
20分钟前
0
0
微信扫码访问网站调用默认浏览器打开如何实现?

我们在微信内分享链接或二维码的时候,我们会发现我们的网站是可以在浏览器里正常打开的,但就是不能在微信里打开,提示 “ 已停止访问该网页 ”,无论是聊天框也一样。说是系统检测到您的网...

明尼苏达哈士奇
28分钟前
1
0
一份Java程序员进阶架构师的秘籍,你离架构师还差多远

一、如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并...

我最喜欢三大框架
36分钟前
0
0
想说再见不容易,win7最新市占率依然超36%

微软正在通过努力让Windows 7用户升级至Windows 10,不过从目前的市占率来看,他们还是要加把劲了。 据最新的市场份额看,Windows 10在本月的市场份额有所提升,从43.62%增长到44.10%。另一...

linuxCool
47分钟前
4
0
SQL的优化

对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 对查询进行优化,要尽量避免全表扫描,首先应考虑在进行条件判断的字段上创建了索引。 应尽量避...

咸鱼-李y
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部