在 上一篇文章,我们介绍了 Redis 的哨兵模式,本文进一步介绍: Redis Cluster。
Redis Cluster 是 Redis 3.0 开始新增的一种群集模式, 由多个Redis节点组成。不同节点之间数据不重复,每个节点在逻辑上对应多个数据分片。在每个节点内部分又为主、备节点,支持一主多从结构,
实验环境
操作系统: Ubuntu 18.04
Docker: 18.09 ( 安装可参考 在Ubuntu 18.04 中安装 Docker )
Docker-Compose: 1.8.0 (可以执行 sudo apt install docker-compose 进行安装)
Redis-Cli: 3.0.6 (可以执行 sudo apt install redis-tools 进行安装)
实验目标
在主从的基础上,搭建用于监控主从的哨兵。 在本次实验中,将搭建一个具有三个节点的集群。每个节点包含一个主Redis Server和一个从Redis Server,每个 Redis Server运行于 Docker 中,使用主机的不同端口(host网络模式)。
为尽量简化实验的复杂度,使用 Docker 和 Docker-Compose 进行配置,并且不配置存储,使用简单的 host 网络模式。
Redis Server 配置文件
为便于区分,在实验中我们将配置文件的文件名与端口号对应。 6个实例的配置文件分别如下:
- node-6581.conf
1 | port 6581 |
- node-6582.conf
1 | port 6582 |
- node-6583.conf
1 | port 6583 |
- node-6584.conf
1 | port 6584 |
- node-6585.conf
1 | port 6585 |
- node-6586.conf
1 | port 6586 |
Docker-Compose 配置文件
定义好6个 Redis Server 的配置文件后, 现在用 Docker-Compose 把它们的运行组合起来,新建名为: docker-compose.yml 的文件,内容如下:
1 | version: '2' |
启动 Redis Cluster 集群
在 docker-compose.yml 所在的目录执行:
1 | docker-compose up -d |
系统显示:
1 | Creating redis-node-6583 |
如果使用 docker ps 命令,可以看到六个个容器被启动了。
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
实例启动后,接下来要执行构建集群的命令:
首先,执行下面的命令登入到任何一个 Redis Server 实例中(我们使用 redis-node-6581),
1 | docker exec -it redis-node-6581 /bin/bash |
看到提示符后,执行下面的命令登入启动 Redis-Cli:
1 | redis-cli -p 6581 -a redis.123 |
然后执行下面的命令构建集群
1 | redis-cli -p 6581 -a redis.123 --cluster create \ |
系统会提示你是否覆盖配置信息,输入: yes
然后系统输出:
1 | >>> Performing hash slots allocation on 6 nodes... |
查看集群信息
登入任何一个 Redis Server 实例(实验中使用 redis-node-6581),执行以下命令,可以查看集群的相关信息
1 | docker exec -it redis-node-6581 /bin/bash |
看到提示符后,执行下面的命令登入启动 Redis-Cli:
1 | redis-cli -p 6581 -a redis.123 |
看到提示符后,执行下面的命令:
1 | cluster info |
查看集群信息,系统显示:
1 | cluster_state:ok |
也可以执行下面的命令查看集群中节点的信息:
1 | cluster nodes |
系统显示:
1 | 500d8b41097575f159f1e6101c65b3b8b031e2bb 127.0.0.1:6586@16586 slave 508c944750d5246579b5f30bab85f609050f13f1 0 1600737423000 2 connected |