在我们项目中客订不可能只是单纯的运行一个redis这个是非常危险的。所以这个时候我们就需要搭建一个redis集群来降低这种风险。
集群作用:
主从备份,防止宕机。
读写分离,分担master的任务。
任务分离,比如从服务器分担备份的工作或者计算的工作。
我们在这里说一下,集群和主从复制的关系,集群包含两个功能,一个是负载均衡,一个是主从复制。我们这里直说第二种的实现:
主从通信的过程:
(1)Slave服务器连接到Master服务器.
(2)Slave服务器发送SYCN命令,请求同步。打开自己的rdb文件存储master的发送过来的数据。创建读rdb的io事件。
(3)Master服务器备份数据库到.rdb文件.
(4)Master服务器把.rdb文件传输给Slave服务器.
(5)Slave服务器把先情况原来的数据,然后把.rdb文件数据导入到数据库中.
上面的这5步是同步的第一阶段, 接下来在Master服务器上调用每一个命令都使用replicationFeedSlaves()来同步到Slave服务器.这是增量同步。
具体的参考:http://blog.sina.com.cn/s/blog_7530db6f0100vegl.html
相关的配置:
master配置:
①关闭rdb快照(备份的工作交给slave)。
②可以开启aof.
slave:
①声明slave-of
②配置密码如果master有密码。
③某一个salve打开rdb快照功能。
④配置是否只读。
这时候我们上一节课说的持久化的繁重的IO操作就可以通过这种主从复制的原理,将其移到从服务器上面。
具体的配置属性这里不简绍了。
集群方式:
这里对于具体的在主机有了宕掉之后,的切换,我们可以使用相应的监控工sentinel
监控sentinel
sentinel工作原理:
Sentinel不断与master通信,获取master的slave信息.
监听master与slave的状态
如果某slave失效,直接通知master去除该slave.
如果master失效,,是按照slave优先级(可配置), 选取1个slave做 new master
,把其他slave--> new master
Sentinel选项配置
port 26379 # 端口
sentinel monitor mymaster 127.0.0.1 6379 2 ,
给主机起的名字(不重即可),
当2个sentinel实例都认为master失效时,正式失效
sentinel down-after-milliseconds mymaster 30000 多少毫秒后连接不到master认为断开
sentinel can-failover mymaster yes #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改./
sentinel parallel-syncs mymaster 1 , 一次性修改几个slave指向新的new master.防止一次所有的slave指向master这个时候,导致负载过高。
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh ,# 在重新配置new master,new slave过程,可以触发的脚本
监控具体的操作:
sentinel文件:
Copy从压缩包中sentinel
在从服务器中配置节点:
这个是优先级的意思,配置的数字越小,在master有问题之后马上数字最小的slave切换为master。
启动我们的监控:
在主机当掉的时候会自动切换的。
这里简单的简绍了一下。已做学习记录。