目录
- redis 下载
- 创建目录 + 配置文件
- 关联所有节点
- 分配 slot
- 主从复制
总结
1. redis 下载
请使用 brew install redis 工具或从官网下载 Redis 4.0.11 is the latest stable version。
2. 创建目录 + 配置文件
我们准备创建 6 个节点,方便起见,创建 6 个工作目录。
cd ~
mkdir redisCluter
cd redisCluster
mkdir 7000 7001 7002 7003 7004
目录创建好了,目录名就是端口号。接下来,需要给每个节点配置“配置文件”。
集群模式下,需要修改下面这些配置。
# 端口号,每个目录都不同
port 700X
# 开启集群模式
cluster-enabled yes
#节点超时实际,单位毫秒
cluster-node-timeout 5000
#集群内部配置文件(默认为 nodes.conf)
cluster-config-file nodes.conf
# 启动 AOF
appendonly yes
将你下载的 redis 目录下的配置文件(通常在 /usr/local/redis-XXX/redis.conf)拷贝到每个目录下,然后逐一修改。
然后,逐一进入各个目录,执行命令:
redis-server redis.conf
这个时候,每个目录下面都会出现几个文件:
类似图中这样,但可能没有 rdb 文件,因为这是 shutdown redis 的时候生成的。
3. 关联所有节点
刚刚我们已经把所有的节点启动了,但此时他们都是互相独立的单个集群节点。要想实现集群,必须将他们关联起来,随便进入一个节点的 redis-cli.
执行下面的命令:
➜ 7002 redis-cli -p 7000
127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7002
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7003
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7004
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7005
OK
此时,所有的节点都关联起来了。
4. 分配 slot
我们知道,redis Cluster 是由 16384 个 slot 组成的,那么我们需要将这些槽分散到这其中 3 个节点里(3 主 3 从)。
执行命令:
➜ 7002 redis-cli -p 7000 cluster addslots {0..5461}
➜ 7002 redis-cli -p 7001 cluster addslots {546..10922}
➜ 7002 redis-cli -p 7002 cluster addslots {10923..16383}
此时节点已经分配好了。通过以下命令验证:
redis-cli -p 7000 cluster nodes
从图中可以看出,7004,7000, 7005 节点都已经有了 slot,但为什么不是刚刚设置的 7000,7001,7002 呢,因为楼主进行操作过了,但这不是重点。可以略过。
5. 主从复制
主节点已经有了 slot,那么最后一步就是将主节点和从节点进行关联,形成主从复制的关系。
命令如下:
注意:需要在从节点的 cli 命令窗口关联主节点。不能反着来。
redis-cli -p 7003 cluster replicate 7000的NodeID
redis-cli -p 7004 cluster replicate 7001的NodeID
redis-cli -p 7005 cluster replicate 7002的NodeID
这个 7000的NodeID
7001的NodeID
7002的NodeID
其实就是执行 redis-cli -p 7000 cluster nodes
命令出现的那一串 16 进制字符串。
如上图所示。
如果一切顺利,那么再次执行 redis-cli -p 7000 cluster nodes
命令,你会看到:
注意红框:master slave,slave 后面跟着的就是 master 的 NodeId。
总结
手动搭建 Redis Cluster 还是很麻烦的,需要下载,配置文件,启动节点,管理节点,分配 slot,管理主从复制等。
Redis 提供了一个小工具:redis-trib.rb,擦用 ruby 编写,内部也是通过这些命令的,直接使用命令有助有我们理解 Redis Cluster 的原理。
网友评论