Maison > Article > base de données > Comment configurer Redis maître-esclave sous Docker
1. Extrayez l'image redis
docker pull redis
docker pull redis
2、启动3个redis容器服务,分别使用到6379、6380、6381端口
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、查看容器
[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、测试容器,成功
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
redis-6379:172.17.0.1:6379 redis-6380:172.17.0.2:6379 redis-6381:172.17.0.3:63793. conteneur
[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 exit4. Testez le conteneur, réussi
[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.1 Vérifiez l'adresse IP de l'intranet du conteneur
[root@tcy1 tcy]#. docker inspect a9fa77adc598
Les adresses IP intranet des trois redis sont :
[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 exit5.2 Entrez dans le conteneur docker et vérifiez le rôle redis actuel (maître ou esclave)
[root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash root@a9fa77adc598:/data# cd / && touch sentinel.conf root@a9fa77adc598:/# vim /sentinel.confActuellement, tous trois sont en statut maître
5.3. Utilisez la commande redis-cli pour modifier les hôtes de redis-6380 et redis-6381 en 172.17.0.1:6379
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
5.4 Vérifiez si redis-6379 a déjà 2 esclaves. ,connected_slaves:2, yes Dans
[tcy@tcy1 ~]$ docker stop ab54741166e1 ab54741166e15.5, configurez sentinel sentinel
Entrez trois conteneurs Redis pour la configuration et créez le fichier sentinel.conf dans le répertoire racine du conteneur
Le contenu du fichier est : sentinel monitor mymaster 172.17.0.1 6379 1
[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>S'il apparaît : bash : vim : commande introuvableSolution : 1. apt-get update 2. apt-get install vim🎜Enfin, démarrez redis sentinel : 🎜rrreee🎜Facile à observer, ouvrez plusieurs fenêtres. 🎜🎜🎜🎜🎜sentinel est configuré 🎜🎜5.6, test 🎜🎜Fermez le maître🎜rrreee🎜A ce moment, les 2 esclaves restants éliront automatiquement un nouvel hôte, ici 172.17.0.2 est élu comme hôte. 🎜🎜🎜🎜🎜Voir 172.17.0.2 et devenez l'hôte. 🎜rrreee
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!