单机模式
1 拉取镜像
docker pull redis:7.2.1
2 新建redis映射配置文件夹data和conf
$ mkdir -p /mydata/redis/data
$ mkdir -p /mydata/redis/conf
3 切换到redis配置文件映射目录/mydata/redis/conf
cd /mydata/redis/conf
4 编辑配置文件
vim redis.conf
输入一下内容:
protected-mode no ----关闭保护模式,可以远程访问
appendonly yes -----持久化
requirepass 123456 -----登录密码
5 启动redis容器
docker run --name redis-7.2.1 -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server /etc/redis/redis.conf
主从复制
1 准备2台虚拟机,ip分别是:192.168.56.102,192.168.56.103
其中102做master节点,103作为slave节点
2 102上操作如下:
a 拉取镜像
docker pull redis:7.2.1
b 新建redis映射配置文件夹data和conf
mkdir -p /mydata/redis/data
mkdir -p /mydata/redis/conf
c 切换到redis配置文件映射目录/mydata/redis/conf
cd /mydata/redis/conf
d 编辑配置文件
vim redis.conf
输入一下内容:
protected-mode no ----关闭保护模式,可以远程访问
appendonly yes -----持久化
requirepass 123456 -----登录密码
e 启动redis容器
docker run --name redis-master -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server /etc/redis/redis.conf
3 103上操作如下
a 拉取镜像
docker pull redis:7.2.1
b 新建redis映射配置文件夹data和conf
mkdir -p /mydata/redis/data
mkdir -p /mydata/redis/conf
c 切换到redis配置文件映射目录/mydata/redis/conf
cd /mydata/redis/conf
d 编辑配置文件
vim redis.conf
输入一下内容:
protected-mode no ----关闭保护模式,可以远程访问
appendonly yes -----持久化
requirepass 123456 -----登录密码
replicaof 192.168.56.102 6379 ---同步102数据
masterauth 123456 ---102登录密码
replica-read-only yes ---只读
e 启动redis容器
docker run --name redis-slave -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server /etc/redis/redis.conf
4 再次在102上的redis查看集群信息
docker exec -it redis-master /bin/bash
redis-cli
auth 123456
info replication
看到如下信息,表示主从集群已经搭建好了
哨兵模式
在以上主从复制的基础上,完成哨兵模式搭建
准备三台虚拟机
192.168.56.102,192.168.56.103,192.168.56.104,其中102做redis主备的 master 103是slave 104做sentinel
102 上的操作
同上主从模式搭建,只是在第四步配置redis配置文件时,加入以下:
masterauth 123456 ------这是因为,当master节点down之后再次重启,会从新的master节点同步数据,需要密码验证
其他不变
103 上操作:
同上主从复制
104 上操作
a 拉取镜像
docker pull redis:7.2.1
b 新建redis映射配置文件夹data和conf
mkdir -p /mydata/redis/conf
c 切换到redis配置文件映射目录/mydata/redis/conf
cd /mydata/redis/conf
d 编辑配置文件
vim redis.conf
输入一下内容:
port 26379
# 设定密码认证
requirepass 123456
# 配置哨兵的监控参数
# 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel monitor redis_102 192.168.56.102 6379 1
# 连接主节点的密码
# 格式:sentinel auth-pass <master-name> <password>
sentinel auth-pass redis_102 123456
# master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
# 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds redis_102 30000
e 启动sentinel实例
docker run -p 26379:26379 --name sentinel-1 \
-v /mydata/redis/sentinel.conf:/etc/redis/sentinel.conf \
-d redis:7.2.1 redis-sentinel /etc/redis/sentinel.conf
验证主从功能和哨兵模式
在master上设置数据,
在slave上可以看到对应的值
当停掉master节点,在sentinel上日志
当再次重启102节点时
这里在sentinel上检测到102再次上线
创作不易,如果觉得有用,点赞、收藏、关注!