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 主从复制集群。 为尽量简化实验的复杂度,使用 Docker 和 Docker-Compose 进行配置,并且不配置存储,使用简单的 host 网络模式。
Master 主机端口为: 6379
Slave1 配置端口为: 6380
Slave2 配置端口为: 6381
Redis 配置文件
首先,我们为 Master 实例建立一个名为: redis-master.conf 的配置文件,内容如下:
1 | bind 127.0.0.1 |
端口设置为: 6379, 因为是主服务器,支持读、写,所以将 protected-mode 设置为 yes。设置了简单的安全机制,需要提供正确的密码才能连接。
接下来,定义两个从服务器的配置文件,分别是:
redis-slave-1.conf
1 | bind 127.0.0.1 |
slaveof 用于配置master节点信息。其格式为:
1 | slaveof <masterip> <masterport> |
masterip 用于指定 master 节点IP。
masterauth 用于指定 master 连接时需要的密码,必须和在 redis-master.conf 文件中配置的: requirepass 一致。
protected-mode 设置为 yes, 因为从节点对外时只读的。
redis-slave-2.conf
1 | bind 127.0.0.1 |
Docker-Compose 配置文件
定义好三个 Redis 实例的配置后,现在用 Docker-Compose 把它们的运行组合起来,新建名为: docker-compose.yml 的文件,内容如下:
1 | version: '2' |
注意:在本实验中,假设所有文件时在同一目录中的
启动 Master-Slave 集群
在 docker-compose.yml 所在的目录执行:
1 | docker-compose up -d |
系统显示:
1 | Creating redis-server-master |
如果使用 docker ps 命令,可以看到三个容器被启动了。
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
注意: PORT 列是空的,因为使用的是 host 模式,docker 直接使用的是宿主机的端口,所以在端口映射列是空的
验证集群
执行
1 | redis-cli -a redis.123 |
登入 master 实例,再在 redis-cli 命令行提示符下执行
1 | info replication |
系统将显示类似信息:
1 | # Replication |
下一步
下一步,我们将演示如何设定 Redis 的哨兵模式。