Sentinel(哨兵)是Redis 的高可用性解决方案( 二 )

我们可以看到 , 现在的redis 是一个从服务的角色 , 连接着6380的服务 。
2、在服务启动后设置我们修改6382端口的服务器配置文件之后 , 启动服务
Sentinel(哨兵)是Redis 的高可用性解决方案文章插图
进入客户端 , 查看当前服务器的状态:
# Replicationrole:masterconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0 我们可以看到 , 当前服务器的状态是作为一个主服务的角色在运行 , 我们接下来修改他的状态:
127.0.0.1:6382> slaveof 127.0.0.1 6380//修改后状态# Replicationrole:slavemaster_host:127.0.0.1master_port:6380master_link_status:upmaster_last_io_seconds_ago:1master_sync_in_progress:0slave_repl_offset:617slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:03、总结我们先看一下目前master 的状态:
# Replicationrole:masterconnected_slaves:2slave0:ip=127.0.0.1,port=6381,state=online,offset=785,lag=0slave1:ip=127.0.0.1,port=6382,state=online,offset=785,lag=0master_repl_offset:785repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:784我们可以可以看到 , 两个从服务已经在连着主服务器 , 上面两种配置的区别在于 , 当salve 断线重连之后 ,
如果我们是修改类配置文件 , 重连之后会自己链接上去master , 并且同步master 上面的数据 , 如果我们是手动连接上去的主服务器 , 重连之后 , 从服务器会读取自己本地的 rdb 回复数据 , 而不会去自动链接主服务
我们如果需要设置读写分离 , 只需要在主服务器中设置:
# Note: read only slaves are not designed to be exposed to untrusted clients# on the internet. It's just a protection layer against misuse of the instance.# Still a read only slave exports by default all the administrative commands# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve# security of read only slaves using 'rename-command' to shadow all the# administrative / dangerous commands.slave-read-only yes3、Sentinel 哨兵1、配置端口在sentinel.conf 配置文件中 ,我们可以找到port 属性 , 这里是用来设置sentinel 的端口 , 一般情况下 , 至少会需要三个哨兵对redis 进行监控 , 我们可以通过修改端口启动多个sentinel 服务 。
# port # The port that this sentinel instance will run onport 263792、配置主服务器的ip 和端口我们把监听的端口修改成6380 , 并且加上权值为2 , 这里的权值 , 是用来计算我们需要将哪一台服务器升级升主服务器
# sentinel monitor ## Tells Sentinel to monitor this master, and to consider it in O_DOWN# (Objectively Down) state only if at least sentinels agree.## Note that whatever is the ODOWN quorum, a Sentinel will require to# be elected by the majority of the known Sentinels in order to# start a failover, so no failover can be performed in minority.## Slaves are auto-discovered, so you don't need to specify slaves in# any way. Sentinel itself will rewrite this configuration file adding# the slaves using additional configuration options.# Also note that the configuration file is rewritten when a# slave is promoted to master.## Note: master name should not include special characters or spaces.# The valid charset is A-z 0-9 and the three characters ".-_".sentinel monitor mymaster 127.0.0.1 6380 2 3、启动Sentinel/sentinel$ redis-sentinel sentinel.conf
Sentinel(哨兵)是Redis 的高可用性解决方案文章插图
sentinel 启动之后 , 就会监视到现在有一个主服务器 , 两个从服务器
当我们把其中一个从服务器器关闭之后 , 我们可以看到日志:
10894:X 30 Dec 16:27:03.670 # +sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380日志表示 , 6381这个从服务器已经从主服务器中脱离了出来 , 我们重新把6381 接回去 。
10894:X 30 Dec 16:28:43.288 * +reboot slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 638010894:X 30 Dec 16:28:43.365 # -sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 63804、关闭Master我们手动关闭Master 之后 , sentinel 在监听master 确实是断线了之后 , 将会开始计算权值 , 然后重新分配主服务器
Sentinel(哨兵)是Redis 的高可用性解决方案文章插图
我们可以看到 , 6380主服务器断了之后 , sentinel 帮我们选了6382作为新的主服务器
我们进到6382的客户端 , 查看他的状态: