目录
- 1、Redis 单机版安装
- 1.1 拉取 Redis
- 1.2 创建数据卷目录
- 1.3 修改 redis.conf
- 1.4 启动 Redis 容器
- 1.5 进入容器连接 Redis
- 2、Redis 一主两从集群搭建
- 2.1 复制三份 redis.conf
- 2.2 启动 master
- 2.3 启动 两个redis slave
- 2.4 三者关系查看
- 2.5 数据测试
1、Redis 单机版安装
1.1 拉取 Redis
首先从 docker hub 拉取 Redis 镜像,这里拉取 7.0 版。
docker pull redis:7.0
1.2 创建数据卷目录
首先要在宿主机/root 目录中创建一个目录 redis,将来用于存放外挂文件 redis.conf。
mkdir redis
使用rz命令上传一份redis.conf:
rz
1.3 修改 redis.conf
修改配置文件:
vim redis.conf
1.解除 IP 绑定
将 bind 行注释掉,以解除 Redis 对访问者 IP 的绑定。
2.关闭保护模式
关闭保护模式,否则只能本机访问自己。
3.指定持久化目录
这里要指定 RDB 或 AOF 的持久化目录为/data,这样无论是哪种持久化文件,均会保存
到该目录。后面会指定容器中的/data 目录为数据卷挂载点目录。
1.4 启动 Redis 容器
docker run --name myredis \
-v /root/redis/redis.conf:/etc/redis/redis.conf \
-v /root/redis/data:/data \
-dp 6379:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf
这里指定了两个数据卷,其中一个是文件,一个是目录:
- /root/redis/redis.conf:/etc/redis/redis.conf
- /root/redis/data:/data
对于该启动命令需要注意的是,其后面运行的命令为 redis-server,且加载的配置文件为
挂载点目录/etc/redis 中的 redis.conf。
查看运行的docker的镜像:
docker ps -a
1.5 进入容器连接 Redis
通过 docker exec 命令进入 Redis 容器后,就可通过 redis-cli 客户端连接上这个 Redis,然后执行 Redis 命令了。
docker exec -it myredis /bin/bash
redis-cli
到此为止,单机版的redis搞定啦!!!!
2、Redis 一主两从集群搭建
现要搭建一个“一主两从”的 Redis 集群。这三个容器的端口号都保持默认,但对外暴露出的端口号分别为 6381、6382、6383。其中,6381 的为 master,另外两个为 slave。
2.1 复制三份 redis.conf
现仍在前面的/root/redis 目录中完成配置。复制 redis.conf 并重命名为 redis1.conf,并在文件最后添加如下配置,以对外宣布当前 redis 的 IP 与端口。注意,该 IP 为 docker 宿主机的 IP,端口号为当前 redis 对外暴露的端口号。
复制 redis.conf 并重命名为 redis1.conf
cp redis.conf redis1.conf
修改redis1.conf
vim redis1.conf
最后加上两句语句如下:
slave-announce-ip 192.168.162.105
slave-announce-port 6381
同理redis2.conf redis3.conf 如下:
slave-announce-ip 192.168.162.105
slave-announce-port 6382
slave-announce-ip 192.168.162.105
slave-announce-port 6383
2.2 启动 master
首先启动 master,即启动 myredis-1 容器。
docker run --name myredis-1 \
-v /root/redis/redis1.conf:/etc/redis/redis.conf \
-v /root/redis/data/6381:/data \
-dp 6381:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf
2.3 启动 两个redis slave
在启动 slave 的命令中需要指出其 slaveof 于谁。
启动myredis-2:
docker run --name myredis-2 \
-v /root/redis/redis2.conf:/etc/redis/redis.conf \
-v /root/redis/data/6382:/data \
-dp 6382:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf --slaveof 192.168.162.105 6381
启动myredis-3:
docker run --name myredis-3 \
-v /root/redis/redis3.conf:/etc/redis/redis.conf \
-v /root/redis/data/6383:/data \
-dp 6383:6379 \
redis:7.0 \
redis-server /etc/redis/redis.conf --slaveof 192.168.162.105 6381
2.4 三者关系查看
查看这三个容器节点的 info replication,可以看到它们间的主从关系已经建立。
docker exec -it myredis-1 redis-cli info replication
docker exec -it myredis-2 redis-cli info replication
docker exec -it myredis-3 redis-cli info replication
2.5 数据测试
在 master 节点 myredis-1 中写入数据。
docker exec -it myredis-1 /bin/bash
redis-cli
set name tigerhhzz11
set name tigerhhzz11
这里可以新开一个连接窗口进行测试
在 slave 节点 myredis-2 与 myredis-3 节点中可读出数据。