按照此文档一步步做就可以实现集群
请使用 3.0 以上版本,低于 3.0 的 REDIS 没有集群功能
解压安装
tar -vxf redis-3.0.0-beta5.tar.gz
cd redis-3.0.0-beta5
编译
make
有时候会遇到#error "Newer version of jemalloc required",使用 make MALLOC=libc 即可
首先尝试单机 REDIS 的启动和停止
启动
cd /usr/local/redis-3.0.0-beta5
./src/redis-server &
关闭
./src/redis-cli shutdown
或指定端口关闭
./src/redis-cli -p 7000 shutdown
复制出 6 个 REDIS 实例(官方要求不得少于 6 个实例)
修改配置文件 redis.conf,找到 appendonly 这一项,默认是 NO,改成 yes,再追加另外几个项,变成
如下内容
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
以此启动 6 个 redis,注意集群数目必须大于 6
./src/redis-server redis.conf &
启动集群
./src/redis-trib.rb create --replicas 1 192.168.1.75:7000 192.168.1.75:7001
192.168.1.75:7002 192.168.1.16:7000 192.168.1.16:7001 192.168.1.16:7002
--replicas 1 的意思是每个 MASTER 分配一个 SLAVE
此外,启动后 redis 会询问是否需要保存集群配置信息,敲 yes
然后系统会自动选择谁做主机谁备份
查看终端
./src/redis-cli -p 7000
查看集群信息
cluster info
cluster nodes
重新规划 slot 的 hash 值
./src/redis-trib.rb reshard 192.168.1.75:7000
系统会询问:
How many slots do you want to move (from 1 to 16384)?
输入 1000,系统接着询问
What is the receiving node ID?
6bd328f46940b6b91f45e9a7606ac6f2a8c9840e(这是一个节点的 ID)
然后系统问这是不是全部的接收节点,输入 all,系统开始迁移缓存数据
弄完后可以用这个命令查看结果
./src/redis-trib.rb check 192.168.1.75:7000
但是我切割的时候意外的出错了,
[ERR] Not all 16384 slots are covered by nodes.
*** Please fix your cluster problems before resharding
因此需要修复
./src/redis-trib.rb fix 192.168.1.75:7000
相关文档
评论