[root@node01 ~]# mkdir cluster-test
[root@node01 ~]# cd cluster-test/
[root@node01 cluster-test]# mkdir 7000 7001 7002 7003 7004 7005
[root@node01 cluster-test]# ls
7000 7001 7002 7003 7004 7005
创建和使用一个Redis Cluster:
注: 手动部署一个Redis Cluster它是非常重要的学习某些操作。
然而如果你需要得到一个集群运行ASAP(尽快) 跳过这个章节,
下一个和直接创建一个Redis Cluster 使用 create-cluster script.
创建一个集群,第一件事我们需要是有一些空的Redis 实例运行在cluster 集群。
这个基本意味着cluster 不是使用正常的Redis 实例创建作为一个特定模式需要被配置,
这样Redis 实例可以启动Cluster 指定功能和命令。
下面是最小的Redis Cluster 配置文件:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
正如你所看到的,cluster mode 是简单的启动cluster.
每个实例也包含文件的路径 配置用于这个节点,默认的nodes.conf.
这个文件不是有人为创建的, 它是在Redis Cluster 实例启动的时候创建,每次需要更新时
注意: 最小的集群正常工作需要包含至少3个master节点。
对于你的第一个测试,强烈建议开始一个6节点的cluster 其中3个节点的masters和3个节点的slaves.
为此,进入一个新的目录,创建下面的目录 名字为实例的端口号
Something like:
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
创建一个redis.conf 文件在每个节点,从7000到7005.
作为一个模板对于你的配置文件只是使用上面小的例子,
但是确保替换端口号7000 使用正确端口号按照目录名称:
现在复制你的redi-server执行,从最新的源在GitHUB分支,
到cluster-test目录
启动每个实例像这样,每个标签:
cd 7000
../redis-server ./redis.conf
你可以每个实例的日志看到,因为没有nodes.conf 文件存在 每个节点分片一个NEW ID。
[root@node01 7000]# ls -ltr
total 8
-rw-r--r-- 1 root root 102 Jun 16 18:57 redis.conf
-rw-r--r-- 1 root root 18 Jun 16 18:57 dump.rdb
[root@node01 7000]# redis-server redis.conf
26433:M 16 Jun 19:04:37.445 * Increased maximum number of open files to 10032 (it was originally set to 1024).
26433:M 16 Jun 19:04:37.445 * No cluster configuration found, I'm f2bebbe62d4bf019993900814b09be295759e3f3
这个ID会被使用通过这个特定的实例对于实例有一个唯一的名字在cluster环境。
每个节点记住所有其他节点使用这个IDs,
不是IP或者端口。
Ip 地址和端口可以改变,但是唯一的node 标识永远不会改变对于节点的生命周期,我们称这个简单的标识为Node ID.
Creating the cluster
现在我们有很多实例运行, 我们需要创建我们的cluster通过写一些有意义的配置到节点;
这是一个非常简单的完成因为我们是通过Redis Cluster 命令行称为redis-trib,
一个Ruby 程序执行特定的命令在实例当为了创建新的集群,
检查或者reshard 一个存在的cluster,等等:
redis-trib功能是在Redis source code 在src目录,你需要安装redis gem 来运行redis-trib
[root@node01 ~]# gem install redis
^CERROR: Interrupted
[root@node01 ~]# gem install redis
Successfully installed redis-3.3.3
1 gem installed
Installing ri documentation for redis-3.3.3...
Installing RDoc documentation for redis-3.3.3...
[root@node01 ~]#
创建你的cluster 简单的type:
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
[root@node01 src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: f2bebbe62d4bf019993900814b09be295759e3f3 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: 50801711b2d9b88e7a92d63151958c4e2c76c050 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: a2ba1f50a77f729a0276a5087f621c214e34cfed 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
S: 112e2e15b9dece48483b554b66d054bf01f71c5c 127.0.0.1:7003
replicates f2bebbe62d4bf019993900814b09be295759e3f3
S: 7dcea3f3475ddb66dc9de7527cae9865ca65dff3 127.0.0.1:7004
replicates 50801711b2d9b88e7a92d63151958c4e2c76c050
S: 00d5ccf205e1d98fa8ec647505eecfde59908fa4 127.0.0.1:7005
replicates a2ba1f50a77f729a0276a5087f621c214e34cfed
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: f2bebbe62d4bf019993900814b09be295759e3f3 127.0.0.1:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 00d5ccf205e1d98fa8ec647505eecfde59908fa4 127.0.0.1:7005
slots: (0 slots) slave
replicates a2ba1f50a77f729a0276a5087f621c214e34cfed
S: 112e2e15b9dece48483b554b66d054bf01f71c5c 127.0.0.1:7003
slots: (0 slots) slave
replicates f2bebbe62d4bf019993900814b09be295759e3f3
M: 50801711b2d9b88e7a92d63151958c4e2c76c050 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 7dcea3f3475ddb66dc9de7527cae9865ca65dff3 127.0.0.1:7004
slots: (0 slots) slave
replicates 50801711b2d9b88e7a92d63151958c4e2c76c050
M: a2ba1f50a77f729a0276a5087f621c214e34cfed 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
这个命令在这儿是创建,因为我们需要创建一个新的集群。
选项 --replicas 1 意味着我们需要一个slave对于每个创建的master.
其他的参数我们需要用来创建新的集群。
显然,唯一的步骤我们需要来创建一个集群有3个masters和3个slaves.
Redis-trib 会提出一个配置,接收提出的配置通过输入yes.
[OK] All 16384 slots covered