redis配置cluster分布式集群

#下载最新的redis5.0
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3
make
make install /usr/local/src/redis/redis-cluster

cd /usr/local/src/redis/redis-cluster
mv ./bin ./redis01
#把redis.conf 复制到redis01目录
cp redis-5.0.3/redis.conf /usr/local/src/redis/redis-cluster/redis01/redis.conf

#修改redis.conf配置文件,注意一下bind 的地址
daemonize yes #后台启动
port 6379 #修改端口号,从6379到6384
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes

#复制其他的目录作为节点
#redis02 redis03 redis04 redis05 redis06

##最新的5.0不使用ruby,使用redis-cli来构建cluster
##yum install ruby
##yum install rubygems

#在redis-cluster目录下,创建start.sh,启动redis,命令如下:
cd redis01  
./redis-server redis.conf  
cd ..  
cd redis02  
./redis-server redis.conf  
cd ..  
cd redis03  
./redis-server redis.conf  
cd ..  
cd redis04  
./redis-server redis.conf  
cd ..  
cd redis05  
./redis-server redis.conf  
cd ..  
cd redis06  
./redis-server redis.conf  
cd ..  


#启动start.sh redis全部  pkill -9 redis   //该命令杀死进程
chmod 777 start.sh
./start.sh

#最新的配置,5.0建议使用redis-cli来运行命令,启动任意节点的redis-cli
./redis01/redis-cli --cluster create 0.0.0.0:6379 0.0.0.0:6380 0.0.0.0:6381 0.0.0.0:6382 0.0.0.0:6383 0.0.0.0:6384 --cluster-replicas 1


##该命令适用于低版本
##./redis-trib.rb create --replicas 1 0.0.0.0:6379 0.0.0.0:6380 0.0.0.0:6381 0.0.0.0:6382 0.0.0.0:6383 0.0.0.0:6384

关于redis-cluster集群

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有 节点连接。
结构特点:
1.所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2.节点的fail是通过集群中超过半数的节点检测失效时才生效。
3.客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
4.redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。
5.Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

新增一个主节点:
新增一个节点D,redis cluster的这种做法是从各个节点的前面各拿取一部分slot到D上,我会在接下来的实践中实验。大致就会变成这样:
节点A覆盖1365-5460
节点B覆盖6827-10922
节点C覆盖12288-16383
节点D覆盖0-1364,5461-6826,10923-12287

redis-cluster的主从模式
redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,
就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

 

posted @ 2019-03-02 17:38  zhou_blog  阅读(281)  评论(0编辑  收藏  举报