一、redis的模式
1.单节点模式
2.主从模式
3.哨兵模式
4.集群模式
二、今天主要给大家讲解互联网行业,redis集群的部署---redis-cluster(基于linux服务器部署)。
Redis-Cluster 分布存储机制-槽
(1)redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护 node<->slot<->value
例如三个节点:槽分布的值如下: SERVER1: 0-5460 SERVER2: 5461-10922 SERVER3: 10923-16383 |
容错机制-投票
(1)选举过程是集群中所有master参与,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作. 故障节点对应的从节点自动升级为主节点 (2)什么时候整个集群不可用(cluster_state:fail)? 如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. |
搭建Redis-Cluster
①搭建要求: 需要 6 台 redis 服务器。搭建伪集群。 需要 6 个 redis 实例。 需要运行在不同的端口 7001-7006 |
②安装gcc yum install gcc-c++ 安装ruby yum install ruby yum install rubygems |
③下载redis(必须3.0以上的版本,只有3.0以上的版本才支持redis-cluster),并把redis传到linux服务器 |
④解压 tar zxvf redis-3.0.0.tar.gz 安装redis cd redis-3.0.0 make
创建目录/usr/local/redis-cluster目录 mkdir /usr/local/redis-cluster make install PREFIX=/usr/local/redis-cluster/redis-1 make install PREFIX=/usr/local/redis-cluster/redis-2 make install PREFIX=/usr/local/redis-cluster/redis-3 make install PREFIX=/usr/local/redis-cluster/redis-4 make install PREFIX=/usr/local/redis-cluster/redis-5 make install PREFIX=/usr/local/redis-cluster/redis-6
复制配置文件 将 /redis-3.0.0/redis.conf 复制到redis下的bin目录下 cp redis-conf /usr/local/redis-cluster/redis-1/bin cp redis-conf /usr/local/redis-cluster/redis-2/bin cp redis-conf /usr/local/redis-cluster/redis-3/bin cp redis-conf /usr/local/redis-cluster/redis-4/bin cp redis-conf /usr/local/redis-cluster/redis-5/bin cp redis-conf /usr/local/redis-cluster/redis-6/bin
修改每个redis节点的配置文件redis.conf(真正的集群端口是一样的) vim redsi.conf 分别将port改为7001-7006 将cluster-enabled 改为yes
启动6个redis实例: ./redis-server redis.conf
检查redis是否启动合适: ps -aux|grep redis
上传redis-3.0.0.gem ,安装 ruby用于搭建redis集群的脚本。 安装gem(必须得安装ruby) gem install redis-3.0.0.gem
进入redis源码目录中的src目录 执行下面的命令 ./redis-trib.rb create --replicas 1 192.168.25.140:7001 192.168.25.140:7002 192.168.25.140:7003 192.168.25.140:7004 192.168.25.140:7005 192.168.25.140:7006 注意:(这里的IP地址是你真的linux服务器的ip地址,这是一个伪集群,主要是我的电脑开6个虚拟机就卡死了,真真的集群是在6个服务器上,端口一样,只要改变ip地址就可以了) |