简述
- Redis3.0 开始支持集群,在每个 Master 上存放着各不相同的数据,即分布式存储的思想。 集群中的每个节点都需要知道集群中自己之外的其它节点
- 三主三从结构指三个主Master的Redis服务和从属于Master的Slave的Redis服务,主服务主要负责数据写入操作,从服务负责数据读取操作,一共需要6台服务器
- 整个 Redis 集群将集群存储空间分为 16384 个 Slot(槽),将 16384 个 Slot 分散到集群中的每个服务器节点
- 在集群存储数据的时候,首先进行 CRC16(key) % 16384=0…16383计算 , 然后根据运算结果将 key 对应的执行保存到对应的 Slot槽中,比如有三个Redis服务器,则0…16383会分布在三个Redis服务器节点中,这是一种分布式存储的体现。官网说明:
Node A contains hash slots from 0 to 5500.
Node B contains hash slots from 5501 to 11000.
Node C contains hash slots from 11001 to 16383.- 客户端不需要连接集群所有的节点,连接集群中任何一个可用的节点即可,redis-cluster把所有的物理节点映射到[0~16383]slot 上,cluster 负责维护 node<->slot<->value
环境说明
- liunx服务器
- CentOs7
- redis5.0.5
- 本次示例采用在一台服务器上创建6个节点构建集群,实际环境可将6个节点随意分配至不同服务器
安装步骤
安装redis
1、安装gcc
yum -y install gcc
2、下载redis
打开redis官网https://redis.io/下载最新版http://download.redis.io/releases/redis-5.0.5.tar.gz
3、编译安装Redis
#解压
tar -zxvf /usr/local/packages/redis-5.0.5.tar.gz -C
/usr/local/redis
#进入解压文件目录
cd /usr/local/redis
#安装到指定目录/usr/local/redis/redis-cluster install
make && make PREFIX=/usr/local/redis/redis-cluster install
#或者安装在当前目录
make && make install
#查看redis-server的版本
cd /usr/local/redis/redis-cluster
./bin/redis-server --version
#查看redis-cli的版本
./bin/redis-cli --version
创建集群
1、在redis-cluster目录下创建6个目录6001-6006
mkdir 6001
...
2、复制redis.conf 至 6001目录下
cp /usr/local/redis/redis-5.0.5/redis.conf /usr/local/redis/redis-cluster/6001
3、修改6001下配置文件
bind 0.0.0.0 //开启网络,保证其他网络可以访问该机子
port 6001 //每个节点的端口号
daemonize yes //守护线程 ,后台运行redis
pidfile /var/run/redis_6001.pid
appendonly yes //aof日志每一个操作都记录模式
cluster-enabled yes //开启集群模式
cluster-config-file nodes_6001.conf //集群节点的配置
cluster-node-timeout 5000 //节点请求超时时间
4、复制6001下文件至6002-6006文件夹下,并修改各个节点的配置文件port、pidfile、cluster-config-file
cp /usr/local/redis/redis-cluster/6001/redis.conf /usr/local/redis/redis-cluster/6002/redis.conf
...
5、启动6个节点
cd /usr/local/redis/redis-cluster
./bin/redis-server ./6001/redis.conf
./bin/redis-server ./6002/redis.conf
./bin/redis-server ./6003/redis.conf
./bin/redis-server ./6004/redis.conf
./bin/redis-server ./6005/redis.conf
./bin/redis-server ./6006/redis.conf
6、构建集群
redis5.0集群创建方式改为了C编写的redis-cli创建,不用再安装麻烦的ruby了
如果配置了密码则加上密码信息 -a 密码
cd /usr/local/redis/redis-cluster
./bin/redis-cli -a 密码 --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
7、进入redis客户端
连接任意一个客户端即可,注意这里可能会redirected进入到其它server
#提示:-a访问服务端密码,-c表示集群模式,指定ip地址和端口号
./bin/redis-cli -a 密码 -c -h 127.0.0.1 -p 6001
8、验证集群
127.0.0.1:6001> cluster info
127.0.0.1:6001> cluster nodes
9、数据验证
127.0.0.1:6001> set key value
-> Redirected to slot [12539] located at 127.0.0.1:6003
127.0.0.1:6003> get key
"value"
127.0.0.1:6003> del key
(integer) 1
127.0.0.1:6003> get key
(nil)
10、退出客户端
127.0.0.1:6003> exit
11、关闭集群需要逐个进行关闭
./bin/redis-cli -a 密码 -c -h 127.0.0.1 -p 6001 shutdown
总结
redis分布式集群至此已搭建完成