要创建集群,我们需要做的第一件事就是让一些空的Redis实例在集群模式下运行。因为需要配置特殊模式,以便Redis实例将启用集群特定的功能和命令。

系统: Linux
Redis版本:redis-6.0.9

以下是Redis集群最简洁配置文件内容:

port 7000 #端口号需改为和对应目录节点相等
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

如配置所见,启用集群模式的是 cluster-enabled 指令。每个实例还包含该节点的配置存储位置的文件路径,默认情况下为 nodes.conf。该文件永远不需要人工修改。它只是由Redis Cluster 实例在启动时生成,并在需要时进行更新。

请注意,最小群集至少需要包含三个主节点。对于第一个测试,我们启动一个由三个主节点和三个从节点组成的六个节点群集。

创建一个新目录,并创建以下目录,该目录以我们目录中运行的实例的端口号命名。

命令示例:

mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

在每个目录(从7000到7005)中创建一个 redis.conf 文件。作为配置文件的模板,只需使用上面的最简洁配置示例,端口号根据目录名称修改为(7000到7005)。

下载及编译Redis,在cluster-test目录下运行如下命令:

$ wget https://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make

依次启动Redis节点

cd 7000
../redis-6.0.9/src/redis-server redis.conf

启动后将出现以下画面

redis集群创建 失败 redis创建集群命令_Redis

22105:M 04 Dec 2020 10:58:00.654 * No cluster configuration found, I'm 0f30a664d72369d22bd4d9e659afcfdb56946341
表示为节点生成了唯一的ID

其他5个节点以此类推启动,需要在终端中打开5个标签来启动5个节点

6个节点都启动成功后,创建集群,执行以下命令

cd cluster-test
./redis-6.0.9/src/redis-cli --cluster create 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 \
--cluster-replicas 1

此处使用的命令是create,因为我们要创建一个新集群。该选项–cluster-replicas 1意味着为每个创建的主机都提供一个从机。其他参数是我要用于创建新集群的实例的地址列表。

Redis-cli将为您提出配置。输入yes接受建议的配置。集群将被配置并加入,这意味着实例将被引导成彼此对话。最后,如果一切顺利,您将看到类似的消息:

[OK] All 16384 slots covered.

测试集群

简单方法是redis-cli命令行实用程序。以下是交互的示例:

$ ./redis-6.0.9/src/redis-cli -c -p 7000/
127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
"bar"
127.0.0.1:7002> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"
127.0.0.1:7000> set username zhangsan
-> Redirected to slot [14315] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get username
"zhangsan"
127.0.0.1:7002>

查看集群节点

[cluster-test]$ ./redis-6.0.9/src/redis-cli -p 7000 cluster nodes
508993ea287990866ddd5fd3abfc4ff3278b0f82 127.0.0.1:7001@17001 master - 0 1607052203482 2 connected 5461-10922
68411dd84aa87bde53043588a6d98d4587e0df7d 127.0.0.1:7003@17003 slave 508993ea287990866ddd5fd3abfc4ff3278b0f82 0 1607052203000 2 connected
4b2c54c0a4d6834081142d371ba0f0316eee27be 127.0.0.1:7004@17004 slave 5c17e318675ceaf60022356913d216f6f229f247 0 1607052202480 3 connected
0f30a664d72369d22bd4d9e659afcfdb56946341 127.0.0.1:7000@17000 myself,master - 0 1607052202000 1 connected 0-5460
5c17e318675ceaf60022356913d216f6f229f247 127.0.0.1:7002@17002 master - 0 1607052203000 3 connected 10923-16383
c8ab3179e257a421de1552f98a58f32d1a0cd83e 127.0.0.1:7005@17005 slave 0f30a664d72369d22bd4d9e659afcfdb56946341 0 1607052202580 1 connected

至此Redis Cluster集群搭建完成,如有疑问请评论区留言。谢谢。

参考:
https://redis.io/topics/cluster-tutorial