redis集群在启动的时候就自动在多个节点间分好片。同时提供了分片之间的可用性:当一部分redis节点故障或网络中断,集群也能继续工作。但是,当大面积的节点故障或网络中断(比如大部分的主节点都不可用了),集群就不能使用。
为了保证在部分节点故障或网络不通时集群依然能正常工作,集群使用了主从模型,每个哈希槽有一(主节点)到N个副本(N-1个从节点)。在我们刚才的集群例子中,有A,B,C三个节点,如果B节点故障集群就不能正常工作了,因为B节点中的哈希槽数据没法操作。但是,如果我们给每一个节点都增加一个从节点,就变成了:A,B,C三个节点是主节点,A1. B1. C1 分别是他们的从节点,当B节点宕机时,我们的集群也能正常运作。B1节点是B节点的副本,如果B节点故障,集群会提升B1为主节点,从而让集群继续正常工作。但是,如果B和B1同时故障,集群就不能继续工作了。
创建和使用redis集群
1.下载redis文件
[root@apollo dtadmin]# wget http://download.redis.io/releases/redis-3.2.9.tar.gz
2.解压redis到/opt/目录下
[root@apollo dtadmin]# tar -zxvf redis-3.2.9.tar.gz -C /opt/
3.编译redis
#进入目录/opt/redis-3.2.9
[root@apollo dtadmin]# cd /opt/redis-3.2.9/
[root@artemis redis-3.2.9]# make && make install #如果报错,说明缺少依赖包,要先执行以下命令
[root@artemis redis-cluster]# yum -y install ruby ruby-devel rubygems rpm-build gcc
配置redis集群
1.环境准备
2 在/opt/redis-3.2.9/目录下创建目录redis-cluster
3.配置子目录/opt/redis-3.2.9/redis-cluster/目录下三个子目录7000, 7001和7002下的redis.conf文件,主要修改内容为:
4.以相同方法配置其它两台务器
不同的是要用7003,7004,7005,7006,7007,7008端口号并创建相应的子目录。
启动redis集群
1.在第一台服务器上启动redis
[root@apollo redis-cluster]# redis-server 7001/redis.conf
[root@apollo redis-cluster]# redis-server 7002/redis.conf
[root@apollo redis-cluster]# redis-server 7003/redis.conf
2.在第二台机器启动redis
[root@artemis redis-cluster]# redis-server 7003/redis.conf
[root@artemis redis-cluster]# redis-server 7004/redis.conf
[root@artemis redis-cluster]# redis-server 7005/redis.conf
3 在第三台服务器上启动redis
[root@uranus redis-cluster]# redis-server 7006/redis.conf
[root@uranus redis-cluster]# redis-server 7007/redis.conf
[root@uranus redis-cluster]# redis-server 7008/redis.conf
验证各个服务器上的redis启动状态
1.第一台服务器
2.第二台服务器
3.第三台服务器
创建redis集群