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

以下文章来源于爱笑的架构师, 作者雷架
从华中科技大学硕士毕业 , 几年间浪迹于多个一线互联网大厂 , 具有多年开发实战经验 。 如果你热爱技术或者你不满足现状喜欢搞事情 , 那你不妨关注我 , 让我们一路同行 , 一起分享技术干货、交流面试技巧、吐槽职场故事 。 我有故事和酒 , 你来吗?
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图
0. 目标本地搭建三个redis实例(一主两备) , 实现效果:主实例插入数据备实例可以复制同步过去 。
1. 安装和运行dockerdocker安装步骤省略 , 大家可以从官网下载并安装 。
检查docker是否运行成功:
docker info
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图
出现回显表示运行成功 , 可以做下一步操作了 。
2. 拉取redis镜像文件执行以下命令默认拉取tag为latest的官方redis镜像
docker pull redis
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图
3. 准备好redis配置文件redis.conf下载链接:
密码:q3uk
拷贝为3三份 , 如:redis01.conf, redis02.conf, redis03.conf
打开所有的配置文件 , 修改如下配置项:

  • 注释只监听本地选项 , 可以远程连接 。 #bind 127.0.0.1
  • 关闭保护模式 protected-mode no
  • 打开AOF持久化开关 appendonly yes
4. 启动redis实例# 实例1docker 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# 实例2docker 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# 实例3docker 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
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图
对以上命令简单解释:
  • 参数-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
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图
回显有三个redis实例即为正常 。 查询实例1:redis-server-01 运行的内部ip
docker inspect redis-server-01
还用单机版?教你用Docker+Redis搭建主从复制多实例文章插图