redis 安装
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf redis-4.0.1.tar.gz
cd redis-4.0.1
make && make install
创建集群目录
cd /usr
mkdir redis-cluster
创建节点目录:(6个redis进程)
cd /usr/redis-cluster
mkdir 6379
mkdir 6380
mkdir 6381
mkdir 6382
mkdir 6383
mkdir 6384
拷贝redis安装目录中的redis.conf到6个节点目录中,并修改如下
##修改配置文件中的下面选项,port要改为对应的节点目录名称
port 6379 //6380、6381、6382、6383、6384
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf //将会创建于启动时所在目录
cluster-node-timeout 5000
appendonly yes
启动6个redis节点
cd /usr/redis-cluster/
cd 6379
redis-server redis.conf
cd ../6380
redis-server redis.conf
cd ../6381
redis-server redis.conf
cd ../6382
redis-server redis.conf
cd ../6383
redis-server redis.conf
cd ../6384
redis-server redis.conf
查看节点情况:
启动集群需要ruby环境
- ruby安装(默认自带gem插件),集群要求版本要大于2.2.0。
- ruby安装redis依赖
gem install redis
这里如果出错,则需要linux配置如下环境,然后再执行gem install:
- 需要zlib库:
yum install zlib-devel
cd /opt/ruby-2.2.8
cd /ext/zlib
ruby extconf.rb
make && make install
- 需要openssl:
##先安装openssl
yum install openssl openssl-devel
##配置ruby的openssl
cd /opt/ruby-2.2.8
cd /ext/openssl
ruby extconf.rb
##将源码目录中的include目录软链接过来
ln -s /opt/ruby-2.2.3/include /
make && make install
基于节点创建redis集群
cd /opt/redis-4.0.1
src/redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
会创建三对redis主从节点M-S。
测试集群
//连接集群需要-c参数
redis-cli -c -p 6379
127.0.0.1:6379>set shuai ys
-> Redirected to slot [6441] located at 127.0.0.1:6380
OK
可以看到重定向到6380的节点了。
集群特点
1. 节点间彼此直连,不需要中心代理层。
2. 所有的节点一共分配16384个slot槽,不一定连续。
3. 增删节点时,所有节点的槽重新分配。
4. 存取数据时,key -> crc16(key)%16384 -> slot idx -> 对应redis节点。