一、概览

  • 主库:192.168.3.13:6380
  • 从库一:192.168.3.14:6381
  • 从库二:192.168.3.14:6382

2、开放上以端口

  • 查看所有打开的端口: firewall-cmd --zone=public --list-ports
  • 分别添加以上端口:firewall-cmd --zone=public --add-port=6380/tcp --permanent
  • 刷新防火墙:firewall-cmd --reload

二、安装master库

1、安装镜像

docker pull redis:6.2.5

2、新建目录

mkdir -p /home/apps/redis-master/{conf,data}

3、创建/修改配置文件

cd /home/apps/redis-master/conf
wget http://download.redis.io/redis-stable/redis.conf -- 修改配置文件,参考第5步
vim redis.conf

4、创建并启动

docker run \
-d \
--name redis-master \
--restart=always \
--privileged=true \
-p 6380:6379 \
-v /home/apps/redis-master/conf/redis.conf:/etc/redis/redis.conf \
-v /home/apps/redis-master/data:/data \
redis:6.2.5 \
redis-server /etc/redis/redis.conf
命令 描述
-d 后台运行
--restart=always 重启docker时,自动启动相关容器
--privileged=true 以特权方式启动容器,解决报错问题(Permission denied)
--appendonly yes redis持久化
redis-server /etc/redis/redis.conf Redis 容器中设置 redis-server 每次启动读取 /etc/redis/redis.conf 这个配置为准
\ shell 命令换行

5、修改redis.conf配置

命令 功能
appendonly yes 启动Redis持久化功能
protected-mode no 关闭protected-mode模式,此时外部网络可以直接访问 (docker貌似自动开启了)
bind 0.0.0.0 注释掉,设置所有IP都可以访问 (docker貌似自动开启了)
requirepass 密码 设置密码
dir ./ 输入本地redis数据库存放文件夹

三、安装slave从库

  • 参考上面的建法,新建redis-slave-01、redis-slave-02
-- 新建目录
mkdir -p /home/apps/redis-slave-01/{conf,data}
mkdir -p /home/apps/redis-slave-02/{conf,data} --从主库那里复制配置文件
# cp /home/apps/redis-master/conf/redis.conf /home/apps/redis-slave-01/conf/
# cp /home/apps/redis-master/conf/redis.conf /home/apps/redis-slave-02/conf/ -- 修改从库配置
vim /home/apps/redis-slave-01/conf/redis.conf # 配置连接主库信息
replicaof 192.168.3.13 6380 # 从机只读模式默认是开启的:
replica-read-only yes # 配置主库密码
masterauth 123456 -- 启动slave1
docker run -d --name redis-slave-01 --restart=always --privileged=true -p 6381:6379 -v /home/apps/redis-slave-01/conf/redis.conf:/etc/redis/redis.conf -v /home/apps/redis-slave-01/data:/data redis:6.2.5 redis-server /etc/redis/redis.conf -- 启动slave2
docker run -d --name redis-slave-02 --restart=always --privileged=true -p 6382:6379 -v /home/apps/redis-slave-02/conf/redis.conf:/etc/redis/redis.conf -v /home/apps/redis-slave-02/data:/data redis:6.2.5 redis-server /etc/redis/redis.conf --查看redis主从配置 # 进入容器
docker exec -it redis-slave-01 /bin/bash
# 连接redis
redis-cli -h 127.0.0.1 -p 6379 -a 123456
# 查看主从配置
info replication # Replication
role:slave
master_host:192.168.3.13
master_port:6380
master_link_status:up

四、错误分析

在从库中出现:master_link_status:down

  • 防火墙问题
  • 密码问题

五、参考网址

docker 实现redis主从复制的更多相关文章

  1. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  2. Ubuntu 16.04下使用docker部署Redis主从复制

    (以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作.) 1.拉取Redis镜像到本地 docker pull redis 2. 准备Redis主从配置文件 Redi ...

  3. 【问题解决】使用docker配置redis主从复制,不生效

    不生效,解决 原因1:修改 bind 原因2: Slave即的db save失败,因为没有写权限

  4. 基于docker/dockerfile实现redis主从复制

    今天我们来搭建基于docker实现redis主从复制集群 为什么要使用redis集群模式? Redis可以说是内存数据库,mysql的数据库是真实存储在硬盘里的,因此,redis的读取速度要比mysq ...

  5. 基于Windows下使用Docker 部署Redis

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 1 去官网下载指定的版本 https:/ ...

  6. Docker部署Redis容器

    从仓库下载镜像 sudo docker pull redis   创建容器(前提:将redis.conf文件放入到/Users/chengang/docker/redis目录里面) docker ru ...

  7. Docker搭建Redis一主两从三哨兵

    作者:oscarwin juejin.im/post/5d26b03de51d454fa33b1960 这次实验准备了三台云主机,系统为Debian,ip分别为:35.236.172.131 ,35. ...

  8. 搭建Redis主从复制的集群

    在主从复制模式的集群里,主节点一般是一个,从节点一般是两个或多个,写入主节点的数据会被复制到从节点上,这样一旦主节点出现故障,应用系统能切换到从节点去读写数据,这样能提升系统的可用性.而且如果再采用主 ...

  9. 单台服务器-利用docker搭建Redis哨兵集群模式

    前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...

随机推荐

  1. python log装饰器

    def log(func): #将原函数对象的指定属性复制给包装函数对象, 默认有 module.name.doc,或者通过参数选择 @functools.wraps(func) def wrappe ...

  2. 高质量代码优化!谈谈重构项目中if-else代码的几点建议

    switch if - else只适合在3层之内使用 当条件判断较多时,可以首先考虑使用switch interface 当判断条件还可能动态增加时,可以考虑将switch进一步优化,引入接口inte ...

  3. 远程cmd操作

    <<PSTools.zip>><<Install_PowerCmd.exe>><<cmder_mini.zip>><< ...

  4. 如何修改Windows 11 任务栏大小

    1.首先Win+R输入regedit打开注册表编辑器         2.进入注册表编辑器后,在地址栏中输入: HKEY_CURRENT_USER\Software\Microsoft\ Window ...

  5. 「CF516D」 Drazil and Morning Exercise

    「CF516D」 Drazil and Morning Exercise 传送门 这个 \(f_i\) 显然可以通过树形 \(\texttt{DP}\) 直接求. 然后看到这种差值问题感觉就可以二分转 ...

  6. PYTHON 得到ADB的输出结果

    #利用ADB DEVICES结果判断指定手机是否正常连接,如果为offline,则adb disconnect sjh:adb connect sjh#如果没有,则执行adb connect sjhd ...

  7. mysql 远程登录 10038提示,无法连接

    mysql 默认使用端口3306 MYSQL服务器:WIN7 控制面板,WINDOWS防火墙--高级设置--入站规则--新建规则--端口--TCP-特定本地端口--3306--允许连接--下一步,至完 ...

  8. Spark编程基础_RDD编程

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具有数据流模型的特 ...

  9. springMVC-10-文件上传

    导入依赖(注意会和servlet-api依赖冲突) <!--文件上传jar包, 前面已导过servlet-api需排除--> <dependency> <groupId& ...

  10. router-link与router-view的对应关系和映射特点

    router-link对应的router-view规律为: 1.根据to的值而定,值为一层(如 /child)则对应app.vue中的router-view: 值为两层,如 /second/child ...