还用单机版?教你用Docker+Redis搭建主从复制多实例

以下文章来源于爱笑的架构师 ,作者雷架 从华中科技大学硕士毕业,几年间浪迹于多个一线互联网大厂,具有多年开发实战经验。如果你热爱技术或者你不满足现状喜欢搞事情,那你不妨关注我,让我们一路同行,一起分享技术干货、交流面试技巧、吐槽职场故事。我有故事和酒,你来吗?

添加图片注释,不超过 140 字(可选)

0. 目标 本地搭建三个redis实例(一主两备),实现效果:主实例插入数据备实例可以复制同步过去。 1. 安装和运行docker docker安装步骤省略,大家可以从官网下载并安装。 检查docker是否运行成功: docker info

添加图片注释,不超过 140 字(可选)

出现回显表示运行成功,可以做下一步操作了。 2. 拉取redis镜像文件 执行以下命令默认拉取tag为latest的官方redis镜像 docker pull redis

添加图片注释,不超过 140 字(可选)

3. 准备好redis配置文件redis.conf 下载链接: https://pan.baidu.com/s/14tWHtk3mch3e3VlT9TYX1A 密码:q3uk 拷贝为3三份,如:redis01.conf, redis02.conf, redis03.conf 打开所有的配置文件,修改如下配置项:

  • 注释只监听本地选项,可以远程连接。#bind 127.0.0.1

  • 关闭保护模式 protected-mode no

  • 打开AOF持久化开关 appendonly yes

4. 启动redis实例 # 实例1 docker run -p 6381:6379 --name redis-server-01 -v /your/path/redis/conf/redis01.conf:/etc/redis/redis.conf -v /your/path/redis/data01:/data -d redis redis-server /etc/redis/redis.conf # 实例2 docker run -p 6382:6379 --name redis-server-02 -v /your/path/redis/redis/conf/redis02.conf:/etc/redis/redis.conf -v /your/path/redis/data02:/data -d redis redis-server /etc/redis/redis.conf # 实例3 docker run -p 6383:6379 --name redis-server-03 -v /your/path/redis/conf/redis03.conf:/etc/redis/redis.conf -v /your/path/redis/data03:/data -d redis redis-server /etc/redis/redis.conf

添加图片注释,不超过 140 字(可选)

对以上命令简单解释:

  • 参数-p 6381:6379,6381表示宿主机端口,6379表示容器实例端口,意思是将容器实例端口映射到宿主机端口。

  • 参数--name redis-server-01,给容器实例命名。

  • 参数-v /your/path/redis/conf/redis01.conf:/etc/redis/redis.conf,冒号前是宿主机配置文件路径,冒号后是容器的配置文件路径,意思是将容器实例的配置路径映射到宿主机的路径。

  • 参数-v /your/path/redis/data01:/data,如上面意思相同。

  • 选项-d表示以后台形式运行实例。

  • 参数redis-server /etc/redis/redis.conf表示执行redis-server命令, /etc/redis/redis.conf表示以该配置文件启动redis实例,注意配置文件必须为redis-server命令的第一个参数。

5. 配置主从复制集群 检查实例运行状态: docker ps

添加图片注释,不超过 140 字(可选)

回显有三个redis实例即为正常。查询实例1:redis-server-01 运行的内部ip docker inspect redis-server-01

添加图片注释,不超过 140 字(可选)

通过回显可以看到:"IPAddress": "172.17.0.4" 我们将实例1规划为主,另外两个实例自然为备了,通过将主的ip和port配置在备的配置文件中即可实现主从复制的效果。 修改redis02.conf和redis03.conf配置文件,找到replicaof选项(redis5.0之前是slaveof),修改为: replicaof 172.17.0.4 6379

添加图片注释,不超过 140 字(可选)

修改完毕,重启实例2和实例3: docker restart redis-server-02 docker restart redis-server-03

添加图片注释,不超过 140 字(可选)

检查实例1的状态是否为主,并且挂载两个备实例: docker exec -it redis-server-01 redis-cli 127.0.0.1:6379> info

添加图片注释,不超过 140 字(可选)

回显如下表示主从复制配置成功: # Replication role:master connected_slaves:2 slave0:ip=172.17.0.3,port=6379,state=online,offset=84,lag=1 slave1:ip=172.17.0.2,port=6379,state=online,offset=84,lag=1

添加图片注释,不超过 140 字(可选)

6. 测试主从复制效果 连接redis实例1插入一条记录: docker exec -it redis-server-01 redis-cli # 连接实例1 127.0.0.1:6379> set name ray # 插入一条数据 OK # 插入成功

添加图片注释,不超过 140 字(可选)

连接redis实例2和实例3查看是否复制成功: docker exec -it redis-server-02 redis-cli # 连接实例2 127.0.0.1:6379> get name "ray" # 可以查到,表明从实例已经将主实例的数据同步过来了

添加图片注释,不超过 140 字(可选)

总结:搭建Redis主从复制实例需要有一点docker的基础,如果你对docker比较熟悉了,那搭建过程实在太容易了。没有docker基础,只要按照上面的命令逐个运行也可以100%成功哦。

                                                                                                                                                资源获取:
大家 点赞、收藏、关注、评论啦 、 查看👇🏻👇🏻👇🏻 微信公众号获取联系方式👇🏻👇🏻👇🏻
精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻
每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值