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

2025-05-27 0 64

1、拉取redis镜像

docker pull redis

2、启动3个redis容器服务,分别使用到6379、6380、6381端口

?

1

2

3
docker run --name redis-6379 -p 6379:6379 -d redis

docker run --name redis-6380 -p 6380:6379 -d redis

docker run --name redis-6381 -p 6381:6379 -dredis

3、查看容器

?

1

2

3

4

5
[tcy@tcy1 ~]$ docker ps -a

container id image command created status ports names

a9fa77adc598 daocloud.io/library/redis "docker-entrypoint.s 2 hours ago up 2 hours 0.0.0.0:6381->6379/tcp redis-6381

6ee2f2f007e6 daocloud.io/library/redis "docker-entrypoint.s 2 hours ago up 2 hours 0.0.0.0:6380->6379/tcp redis-6380

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

2

3

4

5

6

7
docker exec -it ab54741166e1 redis-cli:进入容器

[root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli

127.0.0.1:6379> set b tcy

ok

127.0.0.1:6379> get b

"tcy"

127.0.0.1:6379> quit[root@tcy1 tcy]#

5、开始redis集群配置

5.1、看容器内网的ip地址

[root@tcy1 tcy]# docker inspect a9fa77adc598

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

3个redis的内网ip地址为:

?

1

2

3
redis-6379:172.17.0.1:6379

redis-6380:172.17.0.2:6379

redis-6381:172.17.0.3:6379

5.2、进入docker容器内部,查看当前redis角色(主还是从)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
[root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash

root@ab54741166e1:/data# redis-cli

127.0.0.1:6379> info replication

# replication

role:master

connected_slaves:0

master_replid:d43d1ae8cde6cb084220e18b926aba79e0bb2504

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:6379> quit

root@ab54741166e1:/data# exit

exit

目前三个都是master状态

5.3、使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.1:6379

?

1

2

3

4

5

6

7

8

9

10

11

12
[root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash //redis-6380

root@a9fa77adc598:/data# redis-cli

127.0.0.1:6379> slaveof 172.17.0.1 6379

ok

127.0.0.1:6379> quit

root@a9fa77adc598:/data# exit

exit

[root@tcy1 tcy]# docker exec -it 6ee2f2f007e6 /bin/bash //redis-6381

root@6ee2f2f007e6:/data# redis-cli

127.0.0.1:6379> slaveof 172.17.0.1 6379

ok

127.0.0.1:6379> quit

5.4、查看redis-6379是否已经拥有2个从机,connected_slaves:2,是的

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
[root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash

root@ab54741166e1:/data# redis-cli

127.0.0.1:6379> info replication

# replication

role:master

connected_slaves:2

slave0:ip=172.17.0.3,port=6379,state=online,offset=378,lag=1

slave1:ip=172.17.0.2,port=6379,state=online,offset=378,lag=0

master_replid:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:378

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:378

127.0.0.1:6379> quit

root@ab54741166e1:/data# exit

exit

5.5、配置sentinel哨兵

进入3台redis容器内部进行配置,在容器根目录里面创建sentinel.conf文件

文件内容为: sentinel monitor mymaster 172.17.0.1 6379 1

?

1

2

3
[root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash

root@a9fa77adc598:/data# cd / && touch sentinel.conf

root@a9fa77adc598:/# vim /sentinel.conf

如果出现:bash: vim: command not found

解决:1、apt-get update 2、apt-get install vim

最后,启动redis哨兵:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33
root@a9fa77adc598:/# redis-sentinel /sentinel.conf

342:x 24 jun 11:37:58.934 # oo0ooo0ooo0oo redis is starting oo0ooo0ooo0oo

342:x 24 jun 11:37:58.957 # redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=342, just started

342:x 24 jun 11:37:58.958 # configuration loaded

342:x 24 jun 11:37:58.959 # you requested maxclients of 10000 requiring at least 10032 max file descriptors.

342:x 24 jun 11:37:58.959 # server can't set maximum open files to 10032 because of os error: operation not permitted.

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'.

_._

_.-``__ ''-._

_.-`` `. `_. ''-._ redis 4.0.10 (00000000/0) 64 bit

.-`` .-```. ```\\/ _.,_ ''-._

( ' , .-` | `, ) running in sentinel mode

|`-._`-...-` __...-.``-._|'` _.-'| port: 26379

| `-._ `._ / _.-' | pid: 342

`-._ `-._ `-./ _.-' _.-'

|`-._`-._ `-.__.-' _.-'_.-'|

| `-._`-._ _.-'_.-' | http://redis.io

`-._ `-._`-.__.-'_.-' _.-'

|`-._`-._ `-.__.-' _.-'_.-'|

| `-._`-._ _.-'_.-' |

`-._ `-._`-.__.-'_.-' _.-'

`-._ `-.__.-' _.-'

`-._ _.-'

`-.__.-'

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.

342:x 24 jun 11:37:59.089 # sentinel id is dfd5a5bfe1036b1df3395c4ba858329034fc5b7e

342:x 24 jun 11:37:59.091 # +monitor master mymaster 172.17.0.1 6379 quorum 1

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

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

342:x 24 jun 11:39:27.601 * +sentinel sentinel ba9b0d0539d8273edfcbd922fe138f50daa78bbb 172.17.0.2 26379 @ mymaster 172.17.0.1 6379

342:x 24 jun 11:41:59.144 * +sentinel sentinel f0510f8582b72c056531f219397ed8826683e665 172.17.0.1 26379 @ mymaster 172.17.0.1 6379

便于观察,开多个窗口。

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

sentinel哨兵配置完毕

5.6、测试

关闭master

?

1

2
[tcy@tcy1 ~]$ docker stop ab54741166e1

ab54741166e1

这时,剩余的2个从机,会自动选举产生新的主机,这里选举172.17.0.2为主机。

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

查看172.17.0.2,变成了主机。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
[root@tcy1 /]# docker exec -it 6ee2f2f007e6 /bin/bash

root@6ee2f2f007e6:/data# redis-cli

127.0.0.1:6379> info replication

# replication

role:master

connected_slaves:1

slave0:ip=172.17.0.3,port=6379,state=online,offset=66906,lag=1

master_replid:5a7489c8181ddf0d73d418d30d6a4c8e039198ba

master_replid2:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d

master_repl_offset:67041

second_repl_offset:65534

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:85

repl_backlog_histlen:66957

127.0.0.1:6379>

总结

以上所述是小编给大家介绍的docker下redis的主从配置,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

原文链接:https://blog.csdn.net/qq_43072818/article/details/91463009

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 Docker下redis的主从配置教程详解 https://www.kuaiidc.com/66564.html

相关文章

发表评论
暂无评论