一、前言
1、redis 主从复制解决的问题
主从复制中,一个master,多个slave。设置几个 slave 由 需求决定(需要的读吞吐量)。
主从复制,实现了提升 redis 读性能和冗余备份,而主从复制 与 redis-sentinel 哨兵机制结合,实现了高可用的故障自动转移。
2、redis 主从复制没有解决的问题
redis 主从复制并没有解决数据容量的问题,在主从复制架构中,每一个节点的内容都是相同的、完整的数据。
可以很轻易的看出来,这个架构并没有能够实现高效率的横向水平扩容。如果数据量增大,就只能不断的加内存,不止 master加,slave 也要跟着加。
在业务量只是集中于读时,主从复制 + 哨兵机制是一个很好的应对方案。
但是如果是 海量数据 + 高并发 + 高可用的场景,那么引入 redis cluster 集群,将是非常有必要的。
二、构建 redis-cluster 集群
1、节点规划(三主三从)
容器名称 | 容器IP地址 | 映射端口号 |
---|---|---|
redis-master1 | 172.20.0.2 | 6391->6391 |
redis-master2 | 172.20.0.3 | 6392->6392 |
redis-master3 | 172.20.0.4 | 6393->6393 |
redis-slave-1 | 172.30.0.2 | 6394->6394 |
redis-slave-2 | 172.30.0.3 | 6395->6395 |
redis-slave-3 | 172.30.0.4 | 6396->6396 |
2、下载文件
mkdir /data/docker
cd /data/docker
git clone https://github.com/haveyb/redis-cluster.git
cd redis-cluster
3、开始构建
(1)构建镜像
docker build -t redis-cluster /data/docker/redis-cluster
(2)快速构建多个容器
docker-compose up -d
(3)使用docker ps -a 查看结果