未加星标

redis-sentinel

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二03 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

redis-sentinel: 解决的是主从切换的的问题,其已经被集成在redis2.4+的版本中

过程以及效果:

1):Master状态检测

2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave

3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

配置:sentinel.conf 配置 (在redis包的根目录下有)

####master sentinel.conf
##sentinel实例之间的通讯端口
port 26379
####sentinel需要监控的master信息:<mastername> <masterIP> <masterPort> <quorum>.
####<quorum>应该小于集群中slave的个数,只有当至少<quorum>个sentinel实例提交"master失效" 才会认为master为ODWON("客观"失效) .
sentinel monitor mymaster 127.0.0.1 6381 2
sentinel down-after-milliseconds mymaster 1000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

启动:(redis-sentinel 在编译后的src文件夹里有)

sudo ./redis-sentinel sentinel_A.conf --sentinel
sudo ./redis-sentinel sentinel_B.conf --sentinel

(注意:如果配置的quorum为2,要启动两个sentinel进程)

实验验证:

准备当前环境:

master port:6379

slaver port:6380,6381

杀死master进程:

sudo netstat -anplut|grep "6379"
sudo kill -9 26394

redis-sentinel的控制台日志:

[26590] 09 Jan 11:08:01.984 # +sdown master mymaster 127.0.0.1 6379
[26590] 09 Jan 11:08:02.139 # +new-epoch 1
[26590] 09 Jan 11:08:02.140 # +vote-for-leader a0850358ee7cfbded6ad3943ee1d17410abc7f7e 1
[26590] 09 Jan 11:08:03.090 # +odown master mymaster 127.0.0.1 6379 #quorum 2/2
[26590] 09 Jan 11:08:03.090 # Next failover delay: I will not start a failover before Mon Jan 9 11:14:02 2017
[26590] 09 Jan 11:08:03.216 # +config-update-from sentinel 127.0.0.1:26379 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
[26590] 09 Jan 11:08:03.216 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6381
[26590] 09 Jan 11:08:03.216 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381
[26590] 09 Jan 11:08:03.217 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381
[26590] 09 Jan 11:08:03.239 * +slave slave 127.0.0.1:6382 127.0.0.1 6382 @ mymaster 127.0.0.1 6381
[26590] 09 Jan 11:08:33.283 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381

查看当前各个redis 实例的状态:

[[email protected] ~/redis]$ sudo ./redis-cli -h 127.0.0.1 -p 6380 info Replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6381
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:740121
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

6380 继续为 slaver,但是master 已经改为 6381

[[email protected] ~/redis]$ sudo ./redis-cli -h 127.0.0.1 -p 6381 info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6382,state=online,offset=748997,lag=1
slave1:ip=127.0.0.1,port=6380,state=online,offset=749130,lag=0
master_repl_offset:749130
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:749129

此时:6381 被修改为了master,并且可以看到从的实例,6380,6382

另外:此时port 为 6379的 redis的实例不存在了

观察下 6380,6381,6382的 redis 配置,发现slaveof 配置项发生了变化

其中:6381 过去是slaver,现在是master, slaveof 配置项删除了

6380 过去是slaver,现在还是,配置从 slaveof 127.0.0.1 6379 改为slaveof 127.0.0.1 6381

验证结束!

本文数据库(综合)相关术语:系统安全软件

主题: 删除
分页:12
转载请注明
本文标题:redis-sentinel
本站链接:http://www.codesec.net/view/522249.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(36)