• 售前

  • 售后

热门帖子
入门百科

Docker下redis的主从设置教程详解

[复制链接]
壮壮妈2017 显示全部楼层 发表于 2021-10-26 14:09:01 |阅读模式 打印 上一主题 下一主题
1、拉取redis镜像
  1. docker pull redis
复制代码
2、启动3个redis容器服务,分别使用到6379、6380、6381端口
  1. docker run --name redis-6379 -p 6379:6379 -d redis
  2. docker run --name redis-6380 -p 6380:6379 -d redis
  3. docker run --name redis-6381 -p 6381:6379 -dredis
复制代码
3、查察容器
  1. [tcy@tcy1 ~]$ docker ps -a
  2. CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS     NAMES
  3. a9fa77adc598  daocloud.io/library/redis "docker-entrypoint.s 2 hours ago   Up 2 hours   0.0.0.0:6381->6379/tcp redis-6381   
  4. 6ee2f2f007e6  daocloud.io/library/redis "docker-entrypoint.s 2 hours ago   Up 2 hours   0.0.0.0:6380->6379/tcp redis-6380   
  5. ab54741166e1  daocloud.io/library/redis "docker-entrypoint.s 3 hours ago   Up 3 hours   0.0.0.0:6379->6379/tcp redis-6379
复制代码
4、测试容器,成功
  1. docker exec -it ab54741166e1 redis-cli:进入容器
  2. [root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli
  3. 127.0.0.1:6379> set b tcy
  4. OK
  5. 127.0.0.1:6379> get b
  6. "tcy"
  7. 127.0.0.1:6379> quit[root@tcy1 tcy]#
复制代码
5、开始redis集群设置
5.1、看容器内网的ip地点
  1. [root@tcy1 tcy]# docker inspect a9fa77adc598
复制代码


3个redis的内网ip地点为:
  1. redis-6379:172.17.0.1:6379
  2. redis-6380:172.17.0.2:6379
  3. redis-6381:172.17.0.3:6379
复制代码
5.2、进入docker容器内部,查察当前redis脚色(主还是从)
  1. [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
  2. root@ab54741166e1:/data# redis-cli
  3. 127.0.0.1:6379> info replication
  4. # Replication
  5. role:master
  6. connected_slaves:0
  7. master_replid:d43d1ae8cde6cb084220e18b926aba79e0bb2504
  8. master_replid2:0000000000000000000000000000000000000000
  9. master_repl_offset:0
  10. second_repl_offset:-1
  11. repl_backlog_active:0
  12. repl_backlog_size:1048576
  13. repl_backlog_first_byte_offset:0
  14. repl_backlog_histlen:0
  15. 127.0.0.1:6379> quit
  16. root@ab54741166e1:/data# exit
  17. exit
复制代码
现在三个都是master状态
5.3、使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.1:6379
  1. [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash  //redis-6380
  2. root@a9fa77adc598:/data# redis-cli
  3. 127.0.0.1:6379> SLAVEOF 172.17.0.1 6379
  4. OK
  5. 127.0.0.1:6379> quit
  6. root@a9fa77adc598:/data# exit
  7. exit
  8. [root@tcy1 tcy]# docker exec -it 6ee2f2f007e6 /bin/bash //redis-6381
  9. root@6ee2f2f007e6:/data# redis-cli
  10. 127.0.0.1:6379> SLAVEOF 172.17.0.1 6379
  11. OK
  12. 127.0.0.1:6379> quit
复制代码
5.4、查察redis-6379是否已经拥有2个从机,connected_slaves:2,是的
  1. [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
  2. root@ab54741166e1:/data# redis-cli
  3. 127.0.0.1:6379> info replication
  4. # Replication
  5. role:master
  6. connected_slaves:2
  7. slave0:ip=172.17.0.3,port=6379,state=online,offset=378,lag=1
  8. slave1:ip=172.17.0.2,port=6379,state=online,offset=378,lag=0
  9. master_replid:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
  10. master_replid2:0000000000000000000000000000000000000000
  11. master_repl_offset:378
  12. second_repl_offset:-1
  13. repl_backlog_active:1
  14. repl_backlog_size:1048576
  15. repl_backlog_first_byte_offset:1
  16. repl_backlog_histlen:378
  17. 127.0.0.1:6379> quit
  18. root@ab54741166e1:/data# exit
  19. exit
复制代码
5.5、设置Sentinel哨兵
进入3台redis容器内部举行设置,在容器根目次内里创建sentinel.conf文件
文件内容为: sentinel monitor mymaster 172.17.0.1 6379 1
  1. [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash
  2. root@a9fa77adc598:/data# cd / && touch sentinel.conf
  3. root@a9fa77adc598:/# vim /sentinel.conf
复制代码
如果出现:bash: vim: command not found
办理:1、apt-get update 2、apt-get install vim
最后,启动Redis哨兵:
  1. root@a9fa77adc598:/# redis-sentinel /sentinel.conf
  2. 342:X 24 Jun 11:37:58.934 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
  3. 342:X 24 Jun 11:37:58.957 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=342, just started
  4. 342:X 24 Jun 11:37:58.958 # Configuration loaded
  5. 342:X 24 Jun 11:37:58.959 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
  6. 342:X 24 Jun 11:37:58.959 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
  7. 342:X 24 Jun 11:37:58.960 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
  8.         _._                        
  9.       _.-``__ ''-._                       
  10.    _.-``  `. `_. ''-._      Redis 4.0.10 (00000000/0) 64 bit
  11. .-`` .-```. ```\/  _.,_ ''-._                  
  12. (  '   ,    .-` | `,  )   Running in sentinel mode
  13. |`-._`-...-` __...-.``-._|'` _.-'|   Port: 26379
  14. |  `-._  `._  /   _.-'  |   PID: 342
  15. `-._  `-._ `-./ _.-'  _.-'                  
  16. |`-._`-._  `-.__.-'  _.-'_.-'|                 
  17. |  `-._`-._    _.-'_.-'  |      http://redis.io   
  18. `-._  `-._`-.__.-'_.-'  _.-'                  
  19. |`-._`-._  `-.__.-'  _.-'_.-'|                 
  20. |  `-._`-._    _.-'_.-'  |                 
  21. `-._  `-._`-.__.-'_.-'  _.-'                  
  22.    `-._  `-.__.-'  _.-'                    
  23.      `-._    _.-'                     
  24.        `-.__.-'                        
  25. 342:X 24 Jun 11:37:59.068 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  26. 342:X 24 Jun 11:37:59.089 # Sentinel ID is dfd5a5bfe1036b1df3395c4ba858329034fc5b7e
  27. 342:X 24 Jun 11:37:59.091 # +monitor master mymaster 172.17.0.1 6379 quorum 1
  28. 342:X 24 Jun 11:37:59.110 * +slave slave 172.17.0.3:6379 172.17.0.3 6379 @ mymaster 172.17.0.1 6379
  29. 342:X 24 Jun 11:37:59.115 * +slave slave 172.17.0.2:6379 172.17.0.2 6379 @ mymaster 172.17.0.1 6379
  30. 342:X 24 Jun 11:39:27.601 * +sentinel sentinel ba9b0d0539d8273edfcbd922fe138f50daa78bbb 172.17.0.2 26379 @ mymaster 172.17.0.1 6379
  31. 342:X 24 Jun 11:41:59.144 * +sentinel sentinel f0510f8582b72c056531f219397ed8826683e665 172.17.0.1 26379 @ mymaster 172.17.0.1 6379
复制代码
便于观察,开多个窗口。

Sentinel哨兵设置完毕
5.6、测试
关闭Master
  1. [tcy@tcy1 ~]$ docker stop ab54741166e1
  2. ab54741166e1
复制代码
这时,剩余的2个从机,会自动推选产生新的主机,这里推选172.17.0.2为主机。

查察172.17.0.2,变成了主机。
  1. [root@tcy1 /]# docker exec -it 6ee2f2f007e6 /bin/bash
  2. root@6ee2f2f007e6:/data# redis-cli
  3. 127.0.0.1:6379> info replication
  4. # Replication
  5. role:master
  6. connected_slaves:1
  7. slave0:ip=172.17.0.3,port=6379,state=online,offset=66906,lag=1
  8. master_replid:5a7489c8181ddf0d73d418d30d6a4c8e039198ba
  9. master_replid2:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
  10. master_repl_offset:67041
  11. second_repl_offset:65534
  12. repl_backlog_active:1
  13. repl_backlog_size:1048576
  14. repl_backlog_first_byte_offset:85
  15. repl_backlog_histlen:66957
  16. 127.0.0.1:6379>
复制代码
总结
以上所述是小编给大家先容的Docker下redis的主从设置,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时复兴大家的!

本帖子中包含更多资源

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

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作