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
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 |
便于观察,开多个窗口。
sentinel哨兵配置完毕
5.6、测试
关闭master
1
2 |
[tcy@tcy1 ~]$ docker stop ab54741166e1
ab54741166e1 |
这时,剩余的2个从机,会自动选举产生新的主机,这里选举172.17.0.2为主机。
查看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
相关文章
- 服务器租用价格怎么计算?服务器租用多少钱一年? 2025-05-27
- 云服务器的“弹性”体现在哪些方面? 2025-05-27
- 刀片服务器是什么 刀片服务器的主要特点 2025-05-27
- 利用FTP和计划任务自动备份网站数据和数据库 2025-05-27
- 服务器技术之硬件冗余技术 2025-05-27
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-26 37
-
2025-05-27 27
-
virtualbox中ubuntu和windows共享文件夹设置教程
2025-05-27 90 -
重磅更新!微软将在 Windows11中推出通行密钥支持功能
2025-05-26 57 -
2025-05-27 88