redis集群搭建的方式有多种,但从redis3.0之后版本支持redis-cluter集群,至少需要3(master)+3(slave)才能建立集群,redis-cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其结构图如下:
为什么叫无中心结构,redis集群是为了解决高可用和高并发的通常redis的主从复制和哨兵模式都是有一个主节点和几个从节点,主节点要是出了问题都会出现问题而redis-cluster集群是没有主节点的它们之间都是互相连通的状态,即是一两台宕机了也不影响集群的工作只有在集群一半以上都宕机后集群才会停止运作
redis-cluster集群的特点有一下几点:
既然说了特点那redis的容错又是哪些机制是如何:
redis-cluster集群是采用哈希槽的方式来分配16384个slot,而集群中三个master节点是如何分配slot的:
介绍完集群的基本概念后,开始搭建和部署redis-cluster集群在这里就搭建一个伪集群来作讲解,在工作中是需要六台真是的物理机来搭建在六台ip不同的物理机上分别安装redis以实现集群的搭建,而伪集群是通过在一台物理机上修改访问的端口ip地址是一样的启动六个不同端口的redis服务来实现集群的搭建。
第一步先在/usr/local/创建redis_cluster的文件夹用来放集群的配置文件,并在目录下创建7个文件夹7001到7006
[root@nginx ~]# mkdir -p /usr/local/redis_cluster
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7001
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7002
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7003
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7004
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7005
[root@nginx ~]# mkdir -p /usr/local/redis_cluster/7006
[root@nginx redis_cluster]# ll
total 0
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7001
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7002
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7003
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7004
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7005
drwxr-xr-x. 2 root root 6 Sep 14 11:18 7006
[root@nginx redis_cluster]# pwd
/usr/local/redis_cluster
第二步把redis目录下的redis.conf分为拷贝到刚才创建的redis_cluster下的1到6个目录中并加以修改
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7001/
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7002/
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7003/
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7004/
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7005/
[root@nginx ~]# cp /usr/local/redis/redis.conf /usr/local/redis_cluster/7006/
redis.conf中都需要修改那些配置呢:前期跟主从复制修改的差不多关闭绑定ip,允许其他主机的客户端连接到Redis,修改端口,修改pid文件,添加日志文件的保存路径和目录的储存路径,重要的是要打开集群节点,打开集群的conf文件和集群的超时时间
#bind