Redis的哨兵部署(sentinel)(实验)

首先感谢“吧喱公路”的引导,打开了我对哨兵的理解思路,再次谢谢。

Redis的哨兵(sentinel)

哨兵适用于非集群结构的redis环境,比如:redis主从环境。

关于哨兵集群,我这里就不做实验了,网上有大量的配置方法。

哨兵集群的核心思想,就是解决哨兵的单点故障问题。

个人认为,有做哨兵集群的经费,不如直接做个redis集群了。

环境描述:(主从从结构)

master:192.168.2.100:6379      #单节点sentinel运行在这个环境上

slave:192.168.2.200:6379

savle:192.168.2.201:6379

redis安装路径:/usr/local/redis-3.0.6-6379

redis.conf关键配置:(这里不絮诉基本配置了,主从配置参考:http://blog.51cto.com/13690439/2118890)

master:

# vim redis.conf

requirepass "123456"        //设置连接master密码

masterauth "123456"       //登录master时,调用该参数

slave:

# vim etc/redis.conf

slaveof 192.168.2.100 6379          //指定主库IP和端口

requirepass "123456"        //之所以3个redis都这样写,是为了故障切换后,info replication显示slave0信息

masterauth 123456          //登录master时,调用该参数

哨兵关键配置:(sentinel.conf)

# vim sentinel.conf

port 26379        //端口

sentinel monitor mymaster 192.168.2.100 6379 1

//master-name可以自定义、监听IP:port  几个sentinel认为故障时,才算真正的故障

sentinel down-after-milliseconds mymaster 3000

//哨兵发送PING消息,等待PONG消息的时间,超过设定时间表示故障;毫秒

sentinel failover-timeout mymaster 10000

//故障转移(failover)超时时间,超过设定时间表示故障转移失败;毫秒

sentinel auth-pass mymaster 123456          //设置连接master需要的密码

启动master的redis:

# redis-server redis.conf

启动哨兵:(新开一个xshell)

# redis-sentinel sentinel.conf

启动slave的redis:

# redis-server redis.conf

哨兵的输出:

# Sentinel runid is e49df1197325687d9a40508c00f466a8c6e596db

//哨兵ID

# +monitor master mymaster 192.168.2.100 6379 quorum 1

//+monitor:增加了一个master监控,后面就是master的信息

* +slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379

//+salve:增加了一个salve监控,后面是salve的信息

* +slave slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379

//+salve:增加了一个salve监控,后面是salve的信息

master上登录redis:

# redis-cli -h 192.168.2.100 -p 6379 -a 123456

192.168.2.100:6379> set name zhangsan

OK

192.168.2.100:6379> set age 26

OK

192.168.2.100:6379> set home beijing

OK

192.168.2.100:6379> keys *

1) "name"

2) "home"

3) "age"

salve上登录redis:(两个salve登录查看,数据同步正常)

# redis-cli -h 192.168.2.200 -p 6379 -a 123456

192.168.2.200:6379> keys *

1) "name"

2) "home"

3) "age"

停止master的redis:(注意观察哨兵的输出)

# ps -ef |grep redis

root      11467      1  0 17:12 ?        00:00:00 redis-server *:6379

root      11473   4650  0 17:12 pts/1    00:00:00 redis-sentinel *:26379 [sentinel]

root      11513   4339  0 17:16 pts/0    00:00:00 grep --color=auto redis

# kill 11467

哨兵的输出:

# +sdown master mymaster 192.168.2.100 6379

//+sdown:master节点挂了。后面是master信息

# +odown master mymaster 192.168.2.100 6379 #quorum 1/1

# +new-epoch 14

# +try-failover master mymaster 192.168.2.100 6379

//开始恢复故障

# +vote-for-leader e49df1197325687d9a40508c00f466a8c6e596db 14

//投票选举节点的哨兵信息,因为我们就一个哨兵,所以就是自己 leader

# +elected-leader master mymaster 192.168.2.100 6379

//选举节点后替换谁

# +failover-state-select-slave master mymaster 192.168.2.100 6379

//开始为故障的master选举

# +selected-slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379

//节点选举结果,选中192.168.2.200:6379来替换master

* +failover-state-send-slaveof-noone slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379

//确认节点选举结果

* +failover-state-wait-promotion slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379

//选中的节点正在升级为master

# +promoted-slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379

//选中的节点已成功升级为master

# +failover-state-reconf-slaves master mymaster 192.168.2.100 6379

//切换故障master的状态

* +slave-reconf-sent slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379

//

* +slave-reconf-inprog slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379

//其他节点同步故障master信息

* +slave-reconf-done slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379

//其他节点完成故障master的同步

# +failover-end master mymaster 192.168.2.100 6379

//故障恢复完成

# +switch-master mymaster 192.168.2.100 6379 192.168.2.200 6379

//master从192.168.2.100:6379  变为 192.168.2.200:6379

* +slave slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.200 6379

//其他节点指定新的master

* +slave slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379

//故障master指定新的master

# +sdown slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379

//192.168.2.100:6379宕机,待恢复

启动master的redis(注意观察哨兵的输出)

# redis-server redis.conf

哨兵的输出:

# -sdown slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379

//故障master节点已经恢复

* +convert-to-slave slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379

//故障master节点变为salve,他的master为192.168.2.200:6379

现在我们查看主从的状态:

192.168.2.100上查看:

# redis-cli -h 192.168.2.100 -p 6379 -a 123456

192.168.2.100:6379> info replication

# Replication

role:slave

master_host:192.168.2.200

master_port:6379

master_link_status:up

192.168.2.100:6379> set ab 123

(error) READONLY You can't write against a read only slave.

192.168.2.100:6379> get name

"zhagnsan"

192.168.2.201上查看:

# redis-cli -h 192.168.2.201 -p 6379 -a 123456

192.168.2.201:6379> info replication

# Replication

role:slave

master_host:192.168.2.200

master_port:6379

master_link_status:up

192.168.2.201:6379> set ab 123

(error) READONLY You can't write against a read only slave.

192.168.2.201:6379> get name

"zhagnsan"

192.168.2.200上查看:

# redis-cli -h 192.168.2.200 -p 6379 -a 123456

192.168.2.200:6379> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.2.201,port=6379,state=online,offset=24990,lag=1

slave1:ip=192.168.2.100,port=6379,state=online,offset=24990,lag=0

192.168.2.200:6379> set ab 123

OK

192.168.2.200:6379> keys *

1) "name"

2) "home"

3) "age"

4) "ab"

 总结:通过哨兵(sentinel)实现了主从从环境高可用效果。

master在宕机后,通过哨兵自动将其中一个salve提升为master,切换过程中,数据保存完整。

但我们也发现,原master不能继续插入key了, 而客户端连接还是会连原master,

这时,我们就需要在数据库连接池做一些规则设置了。

由于目前我能力有限,无法解释连接池问题,还请见谅。

原文地址:http://blog.51cto.com/13690439/2120640

时间: 2024-10-09 23:15:13

Redis的哨兵部署(sentinel)(实验)的相关文章

Redis的哨兵(sentinel)(概念)

Redis的哨兵(sentinel) redis的sentinel系统用于管理多个redis服务器实例(instance). 哨兵适用于非集群结构的redis环境,比如:redis主从环境. 在redis集群中,节点担当了哨兵的功能,所以redis集群不需要考虑sentinel. sentinel主要功能: 1.监控(monitoring) sentinel会不断的检查master和slave运行状态是否正常. 2.提醒(notification) 当监控发现问题时,sentinel会通过API

Redis之哨兵模式Sentinel配置与启动(五)

一.介绍 上一篇我们已经介绍了Redis的主从复制,传送门:<Redis高可用之主从复制实践(四)>,想必大家对redis已经有一个概念了,那么问题来了,如果redis主从复制的master服务器挂掉了,那么整体redis就崩溃了,因为master无法进行写数据,导致slave中无法更新数据. 那么为了解决这个问题我们就需要有一种方案让redis宕机后可以自动进行故障转移,还好redis给我们提供一种高可用解决方案 Redis-Sentinel.Redis-sentinel本身也是一个独立运行

Redis哨兵模式(Sentinel)的搭建

一.Redis的哨兵模式 Sentinel是Redis官方提供的一种高可用方案(除了Sentinel,Redis Cluster是另一种方案),它可以自动监控Redis master/slave的运行状态,如果发现master无法访问了,就会启动failover把其中一台可以访问的slave切换为master,并且通过pub/sub事件通知Redis客户端新的master的ip地址. 支持Sentinel的Redis客户端(例如java的Jedis)会在连接Redis服务器的时候向Sentine

Redis集群redis主从自动切换Sentinel(哨兵模式)

Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave3):Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即mast

Redis哨兵(Sentinel)模式

Redis哨兵(Sentinel)模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行.其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例. Redis哨兵 这里的哨兵有两个作用 通过发送命令,让Re

redis集群(Sentinel)

问题 Redis 主哨兵模式是如何保证高可用的 主要依赖主哨兵的发现故障和故障转移 概述 本文假设读者对redis 的主从复制已经进行了了解 . Redis 主哨兵集群为Redis 提供了高可用,即高可用是猪哨兵模式的主要目的,这是宏观上Sentinel功能的完整列表 Monitoring :监视实例的情况 Notification : 通知 Automatic failover : 当Master异常下线后,自动会通过选举 Configuration provider : 提供配置信息. 注意

redis应用之使用sentinel实现主从复制高可用

一.redis的高可用管理工具sentinel介绍 sentinel是一个管理redis实例的工具,它可以实现对redis的监控.通知.自动故障转移.sentinel不断的检测redis实例是否可以正常工作,通过API向其他程序报告redis的状态, 如果redis master不能工作,则会自动启动故障转移进程,将其中的一个slave提升(通过选举)为master,其他的slave重新设置新的master服务器.而故障的master再次启动后 会被sentinel自动降级为slave服务器加入

redis之主从以及sentinel的创建

主redis:192.168.1.155:6379 从redis:192.168.1.155:6380 sentinel:192168.1.155:26379 将/usr/local/redis目录复制为如下图所示 修改里面的配置文件,数据文件目录等等 主redis port:6379 从redis port:6380 sentinel:26379 将从redis配置文件中进行此处修改: #slaveof masterip masterport slaveof  192.168.1.155 63

Redis高可用部署及监控

Redis高可用部署及监控 目录                        一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 1.单M-S结构 2.双M-S结构 3.优劣对比 四.配置部署 1.Redis配置 2.Redis Sentinel配置 3.启动服务 4.故障模拟检测 五.备份恢复 1.备份策略 2.灾难恢复 六.运维监控 1.安全监控 2.性能监控   一.           Redis Sentinel简介   Redis Sentinel是redis自带的集