主从redis部署(docker)

打印 上一主题 下一主题

主题 648|帖子 648|积分 1944

首先,我准备了两台linux,一台准备当作master,ip是192.168.241.128,另一台是当作slave,ip是192.168.241.129。
1. 安装redis

docker pull redis
2. 下载对应版本的redis.conf

可以从github上下载。新建配置环境目录和持久化数据目录。
  1. mkdir -p /home/redis/data
  2. mkdir -p /home/redis/conf
  3. mkdir -p /home/redis/log
复制代码
修改配置redis.conf:
  1. logfile "/log/redis.log"
  2. dir /data
复制代码
将redis.conf放到mkdir -p /home/redis/conf下。
3. 创建redis容器
  1. docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /home/redis/data:/data -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/log/redis.log:/log/redis.log -d redis redis-server /etc/redis/redis.conf  --appendonly yes
复制代码
创建容器后,调用redis-server启动用挂载的路径的redis.conf启动。并且开启AOF持久化。
docker ps -a 查看,发现已成功启动。
如果报这个错:Can't open the log file: Is a directory,可能得手动建一个空文件 /home/redis/log/redis.log
4. 创建第二个redis容器

和上面的1,2,3步骤一样,在第二台linux服务器上创建第二个redis。稍微不同的是,在第2个步骤配置redis.conf时,要做修改。
redis.conf加上配置:
192.168.241.128 是我上面配置的第一台linux的地址,意思是第二台是第一台的slave库
slaveof 192.168.241.128 6379
依样部署好第二台redis就可以了。
5. 验证

在redis客户端中执行命令info replication
128(主):
  1. > info replication
  2. # Replication
  3. role:master
  4. connected_slaves:1
  5. slave0:ip=192.168.241.129,port=6379,state=online,offset=0,lag=0
  6. master_failover_state:no-failover
  7. master_replid:8fade8b7a32d08413701d8816661604e773c6cd3
  8. master_replid2:0000000000000000000000000000000000000000
  9. master_repl_offset:0
  10. second_repl_offset:-1
  11. repl_backlog_active:1
  12. repl_backlog_size:1048576
  13. repl_backlog_first_byte_offset:1
  14. repl_backlog_histlen:0
复制代码
129(从):
  1. > 192.168.241.129@6379 connected!
  2. > info replication
  3. # Replication
  4. role:slave
  5. master_host:192.168.241.128
  6. master_port:6379
  7. master_link_status:up
  8. master_last_io_seconds_ago:5
  9. master_sync_in_progress:0
  10. slave_read_repl_offset:14
  11. slave_repl_offset:14
  12. slave_priority:100
  13. slave_read_only:1
  14. replica_announced:1
  15. connected_slaves:0
  16. master_failover_state:no-failover
  17. master_replid:8fade8b7a32d08413701d8816661604e773c6cd3
  18. master_replid2:0000000000000000000000000000000000000000
  19. master_repl_offset:14
  20. second_repl_offset:-1
  21. repl_backlog_active:1
  22. repl_backlog_size:1048576
  23. repl_backlog_first_byte_offset:1
  24. repl_backlog_histlen:14
复制代码
很明显,一个role 是master,一个是slave。
验证一下数据同步:

一开始129尝试get "h" ,发现数据不存在。想要写入,因为是从节点,所以提示无法写入。
然后我们往128加入"h"->"hello",  切换到129发现这条数据已经同步过来了,接着128删除这个键,129也是跟着删除了数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表