本篇文章版权归博客园和做者吴双本人共同全部,转载和爬虫请注明原文系列地址http://www.cnblogs.com/tdws/tag/NoSql/html
集群方案 三主三从 http://www.cnblogs.com/tdws/p/7710545.htmlredis
以前有篇文章,讲到了redis主从复制,读写分离。然而留下的问题是当主服务器挂了,咱们就没法向客户端提供任何服务了呀,这样的方案,就不能称之为高可用方案。下面,提供一种Redis集群高可用方案,拙劣之处,欢迎指正和补充。服务器
Redis为咱们提供了哨兵,它就像一个为咱们的Redis服务站岗的人,当主服务器发生异常时,他会经过投票的方式,将从服务节点升为主服务节点。当咱们处理好主节点故障并重启时,原来挂掉的主节点,做为新的主节点的子节点。测试
为了在本机测试,首先我在6379,6380,6381节点上开启三个redis服务,6379作为master节点,6380和6381做为其从服务节点。关于主从的配置若是有疑问的话请看个人这篇文章http://www.cnblogs.com/tdws/p/5705782.html。spa
下面你须要再将redis文件夹机器内容复制出一份,我将其文件夹命名为Sentinel.3d
咱们将其配置文件最后,增长以下配置信息。配置信息配置了哨兵端口5000,咱们的redis客户端,好比C#的stackservice,stackExechange,能够从哨兵中读取当前集群状况,也就是说主挂后,咱们客户端均可以获取到信息,而且重新的服务节点及端口中进行键值的操做。另外配置文件说到,主服务节点为6379,而且多个哨兵时,获得哨兵们的投票为1票时就认为主节点失联,可切换从节点为主。code
down-after-milliseconds 指明尝试多少毫秒无反应,哨兵认为其失联。htm
parallel-sync指明当故障发生时,容许有多少个从节点,同时重新的主节点同步数据。这个配置意义在于,你这个值设置的越小,全部从节点同步时间也就越久,好比以下配置,每次只能同步一个,从节点越多,天然也就越久。那么这个值设置的大,或形成什么影响,这取决于咱们的配置文件,咱们能够配置在从同步主节点时,以旧的数据提供给客户端,在同步完成后,提供新数据,这样不会形成从节点同步期间不可用的状况。而然而,在同步完成后,须要删除旧的数据,加载新的数据,在这短暂的期间,仍是会有从节点不可用的状况发生。blog
port 5000 sentinel monitor mymaster 127.0.0.1 6379 1 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1
下面就到了咱们启动sentinel(哨兵)的时候了!get
一样切换到Sentinel文件夹目录下,执行命令
这样一来,哨兵"观察站"启动了。
首先咱们展现下正常状况,主从的复制以及读写状况。
上图主节点写入新键。下图在两个从节点读取数据。
接下来,咱们看一下主节点挂掉以后,会发生什么。我将主节点服务关闭。
咱们以前的只读从节点,如今已经升为可写的主节点了!
固然,想要作到高可用,哨兵也应该多个节点,有关更多哨兵命令,配置及其原理,下回分解。
若是个人点滴分享对您有点低帮助,欢迎点击下方红色关注,我将持续分享,共同进步