Redis集群和高可用
Contents
参考文档
sentinel集群的配置
https://www.cnblogs.com/LiZhiW/p/4851631.html
官网的配置集群的文档说明
https://redis.io/topics/cluster-tutorial
中文版的集群配置说明
https://www.cnblogs.com/cjsblog/p/9048545.html
Cluster和Sentinel的区别
- Sentinel出现的比Cluster早,解决的是高可用,Master节点挂了,通过sentinel实现自动把slave节点升级为Master
- Cluster除了有HA的功能,还有分片的功能,而Sentinel没有这个功能
- Cluster的Master节点至少要3个,因为至少半数master可用整个系统才可用
集群的原理
- 任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。
- 它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态
集群的配置
- 端口,集群中每个结点需要配置2个端口,一个用于暴露给客户端连接,另外一个用户集群间通讯
- 槽slot,槽的算法(取模):key的CRC16 % 16384
- 集群的模式和solr_Cloud一样,多节点和主从模式,如果某个结点的主备都挂了,就停止对外服务
一致性
- 不保证强一致性:默认主从模式下是异步的执行写操作,A结点写成功后直接返回客户端,再通知各个Slave一起同步,如果A确认了客户端的写操作,然后A挂了,那么A1结点成为Master,但是丢失了新的内容
- 通过设置timeout时间为减低不一致的情况,集群节点不可用的最大时间。如果一个master节点不可到达超过了指定时间,则认为它失败了。注意,每一个在指定时间内不能到达大多数master节点的节点将停止接受查询请求
Ubutun下 redis集群的配置
https://www.cnblogs.com/cjsblog/p/9048545.html
安装redis(ubutun)
下载最新的压缩包 redis-4.0.2.tar.gztar xzf redis-4.0.2.tar.gz//移动到 usr/developer路径下面去mv redis-4.0.2 /usr/developer/redis-4.0.2cd /usr/developer/redis-4.0.2make//安装到系统当中就可以直接使用redis-server了make install配置集群和复制
port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yesdaemonize yes安装ruby 2.4
sudo apt-add-repository ppa:brightbox/ruby-ngsudo apt-get updatesudo apt-get install ruby2.2启动各个节点
cd /usr/developer/cluster-test/7000; ./redis-server redis.confcd /usr/developer/cluster-test/7001; ./redis-server redis.confcd /usr/developer/cluster-test/7002; ./redis-server redis.confcd /usr/developer/cluster-test/7003; ./redis-server redis.confcd /usr/developer/cluster-test/7004; ./redis-server redis.confcd /usr/developer/cluster-test/7005; ./redis-server redis.conf启动集群
cd /usr/developer/redis-4.0.2/src./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
集群的扩展
- 新启动一个配置好了的Redis节点
- 扩展的方式分为添加Master节点,或者添加Master的slave节点
- +Master时需要rehash,然后从某某节点上分配solt
- 查看当前槽的分配情况redis-cli -c -p 7000 cluster nodes
Sentinel 高可用
sentinel集群的配置
https://www.cnblogs.com/LiZhiW/p/4851631.html