Redis的集群创建步骤(非redis-trib.rb脚本方式)
阅读原文时间:2021年04月20日阅读:1

**本文目的仅用于测试验证创建集群的相关步骤,所以只是采用最简单的配置在同一个服务器部署了由3个节点组成的Redis集群

1. 创建集群步骤,本文使用Redis 3.2.5版本

1.1 创建配置文件目录,使用的端口分别为5000,5001和5002**

[root@xxx ~]# cd /opt/redis-3.2.5
[root@xxx redis-3.2.5]# mkdir 5000 5001 5002

1.2 分别在上述创建的目录创建对应的配置文件

[root@xxx redis-3.2.5]# cp redis.conf 5000/redis_5000.conf
[root@xxx redis-3.2.5]# cp redis.conf 5001/redis_5001.conf
[root@xxx redis-3.2.5]# cp redis.conf 5002/redis_5002.conf
**
1.3 分别修改各个配置文件使用对应的端口,日志文件,持久化文件等等,例如redis_5000.conf**

port 5000
pidfile /opt/redis-3.2.5/5000/redis_5000.pid
logfile "redis_5000.log"
dbfilename dump_5000.rdb
appendonly yes
appendfilename "appendonly_5000.aof"
cluster-enabled yes
cluster-config-file nodes_5000.conf

1.4 分别启动各个Redis instance

[root@xxx redis-3.2.5]# cd 5000
[root@xxx 5000]# ../src/redis-server ./redis_5000.conf &

[root@xxx redis-3.2.5]# cd 5001
[root@xxx 5001]# ../src/redis-server ./redis_5001.conf &

[root@xxx redis-3.2.5]# cd 5002
[root@xxx 5002]# ../src/redis-server ./redis_5002.conf &
**
1.5 查看自动生成的集群配置文件,日志文件和进程,如果有类似以下信息则代表各个Redis instance启动成功(下面省略部分无关信息)**

[root@xxx 5000]# cat nodes_5000.conf 
2c192963bfbd4a42127b99dbeeb09f207b868413 :0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

[root@xxx 5000]# cat redis_5000.log 
16857:M 21 Nov 11:39:05.328 * No cluster configuration found, I'm 2c192963bfbd4a42127b99dbeeb09f207b868413
16857:M 21 Nov 11:39:05.343 # Server started, Redis version 3.2.5
16857:M 21 Nov 11:39:05.345 * The server is now ready to accept connections on port 5000

[root@xxx 5000]# ps -ef|grep redis
root     16857 13864  0 11:39 pts/0    00:00:21 ../src/redis-server 127.0.0.1:5000 [cluster]
root     24860 13864  0 14:26 pts/0    00:00:00 ../src/redis-server 127.0.0.1:5001 [cluster]
root     24935 13864  0 14:27 pts/0    00:00:00 ../src/redis-server 127.0.0.1:5002 [cluster]
**
1.6 分别在各个Redis instance添加hash slots(这里是平均分配)**

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER ADDSLOTS {0..5460}
[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5001 CLUSTER ADDSLOTS {5461..10922}
[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5002 CLUSTER ADDSLOTS {10923..16383}

1.7 分别在各个Redis instance执行SET-CONFIG-EPOCH

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER SET-CONFIG-EPOCH 1
[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5001 CLUSTER SET-CONFIG-EPOCH 2
[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5002 CLUSTER SET-CONFIG-EPOCH 3

1.8 连接集群,在一个Redis instance执行就OK了

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER MEET 127.0.0.1 5001
[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER MEET 127.0.0.1 5002

1.9 查看集群状态信息

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:3
cluster_my_epoch:1
cluster_stats_messages_sent:32
cluster_stats_messages_received:32

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000 CLUSTER NODES
2c192963bfbd4a42127b99dbeeb09f207b868413 127.0.0.1:5000 myself,master - 0 0 1 connected 0-5460
be67d8e4ca455d4b28af83f1e9646e94d8897cad 127.0.0.1:5002 master - 0 1479714113782 3 connected 10923-16383
cae1ea01c446406ef231e85529283f3751ded23a 127.0.0.1:5001 master - 0 1479714114788 2 connected 5461-10922

1.10 验证读写数据

[root@xxx redis-3.2.5]# ./src/redis-cli -c -p 5000
127.0.0.1:5000> dbsize
(integer) 0
127.0.0.1:5000> set key1 value1
-> Redirected to slot [9189] located at 127.0.0.1:5001
OK
127.0.0.1:5001> get key1
"value1"

以上是使用命令行搭建Redis集群的步骤,或者你可以使用redis-trib.rb脚本简化上述步骤