Description environnementale:
- Serveur Cloud Alibaba
- Ubuntu 16.04
- docker
1. Tirez l'image Redis
docker pull redis
2. Configurez le fichier de configuration de démarrage de Redis, ici je crée un répertoire dédié pour stocker les données et la configuration liées à Redis
mkdir / docker / redis
Téléchargez le fichier de configuration de démarrage du service dans ce répertoire
wget http: // download.redis.io/redis-stable/redis.conf
Après le téléchargement, entrez le fichier pour modifier les 3 paramètres suivants (à l'état non éditable, utilisez / bind pour rechercher la position de la chaîne)
Vim / Docker / Redis / redis.conf
# modifier les trois paramètres de configuration suivants # Lier 127,0 . 0.1 # Si l' option bind est vide, permet toutes les connexions des interfaces réseau disponibles protégées - MODE NO # mode de protection, si elle est oui , Autoriser uniquement les clients locaux à se connecter par appendice uniquement oui # Après ouverture, Redis écrira chaque donnée écrite dans le fichier appendonly.aof après réception. Chaque fois que Redis lira les données de ce fichier en mémoire
3. Créez un nouveau dossier maître (redis6379) sous ce répertoire et copiez le fichier conf ci-dessus dans le dossier. Le chemin du fichier conf maître est
/docker/redis/redis6379/redis.conf
4. Utilisez conf pour créer un conteneur maître
# -restart always (cette image démarre également automatiquement au démarrage de docker) # --name Le nom du conteneur est redis- 6379 # -p mappe le port local 6379 au port de conteneur 6379 # -v se lie au répertoire principal / docker / redis / redis6379 mis en correspondance / docker de données # - conteneur de fond D, et retourne le conteneur ID # image spécifiée Redis # conf utiliser le service Redis -server / données / redis.conf Docker rUN --restart toujours --name redis- 6379 -p 6379 : 6379 -v / docker / redis / redis6379: / data -d redis redis-server /data/redis.conf
5. Afficher le démarrage du conteneur
root @ iZ282zj76jqZ: / docker / redis / redis6379 # docker ps | grep redis- 6379 792067d225e6 redis " docker-entrypoint.s ... " 2 hours ago Jusqu'à 2 heures 0.0 . 0,0 : 6379 -> 6379 / tcp redis- 6379
Afficher l'IP du conteneur maître pour configurer les paramètres dans Salve
# Voir l'IP du conteneur principal,
# docker inspecter redis-6379 Voir IPAdress docker inspect --format = ' {{.NetworkSettings.IPAddress}} ' redis- 6379 # 192.168 . 0.4 dans la configuration NetworkSettings
6. Créez un dossier Salve (redis6380, redis6381, redis6382), copiez les fichiers redis.conf ci-dessus dans trois dossiers et modifiez la configuration
vim / docker / redis / redis.conf # Modifiez les quatre paramètres de configuration suivants #bind 127.0 . 0.1 # Si l'option de liaison est vide, toutes les connexions des interfaces réseau disponibles sont autorisées protégées - mode non #Mode protégé , si oui , Autoriser uniquement les clients locaux à se connecter appendonly oui # Après ouverture, Redis écrira les données écrites à chaque fois dans le fichier appendonly.aof après réception, et Redis lira d'abord les données de ce fichier dans la mémoire à chaque démarrage # réplique de <IP maître> <port maître> réplique de 192.168 . 0.4 6379 # port IP hôte (maître) Redis
Démarrer trois services Salve
docker run --restart always --name redis- 6380 -p 6380 : 6379 -v / docker / redis / redis6380: / data -d redis redis-server / data / redis.conf docker run --restart always --name redis - 6381 -p 6381 : 6379 -v / docker / redis / redis6381: / data -d redis redis-server / data / redis.conf docker run --restart always --name redis- 6382 -p 6382 : 6379 -v / docker / redis / redis6382: / data -d redis redis-server /data/redis.conf
7. Afficher les services de conteneurs
root @ iZ282zj76jqZ: / docker / redis # docker ps CONTENANT ID IMAGE COMMANDE CRÉÉE NOMS DES PORTS DE STATUT 43488a8c668c redis " docker-entrypoint.s… " il y a 3 secondes Up 1 seconde 0.0 . 0,0 : 6382 -> 6379 / tcp redis- 6382 ca3caaa77f4a redis " docker-entrypoint.s… " Il y a 2 heures Vers le haut Environ une heure 0,0 . 0,0 :6381 -> 6379 / tcp redis- 6381 792067d225e6 redis " docker-entrypoint.s… " Il y a 2 heures Up 2 hours 0.0 . 0.0 : 6379 -> 6379 / tcp redis- 6379 979318c633be redis " docker-entrypoint.s… " Il y a 2 heures Up Environ une heure 0.0 . 0,0 : 6380 -> 6379 / tcp redis- 6380
Entrez dans le conteneur principal pour faire fonctionner Redis
root @ iZ282zj76jqZ: / docker / Redis # docker exec -it redis- 6379 / bin / bash root @ 792067d225e6: / data # redis- cli 127,0 . 0.1 : 6379 > info replication # Rôle de réplication : master connected_slaves: 3 slave0: ip = 192.168 . 0,3 , port = 6379 , état = en ligne, décalage = 7129 , décalage = 1 esclave1: ip = 192,168 . 0,6 , port = 6379 , état = en ligne, décalage = 7129 , décalage =0 slave2: ip = 192.168 . 0,5 , port = 6379 , state = ligne, décalage = 7129 , lag = 0 master_replid: 09e8f31f23d920034b8f5e20749489ffff3fec17 master_replid2: 0000000000000000000000000000000000000000 master_repl_offset: 7143 second_repl_offset: - 1 repl_backlog_active: 1 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 6892 repl_backlog_histlen: 252 127,0 . 0,1 : 6379 > dbsize (entier) 3
Entrer dans l'opération Salve container Redis
root @ iZ282zj76jqZ: ~ # docker exec -it redis- 6381 / bin / bash root @ ca3caaa77f4a: / data # redis- cli 127,0 . 0.1 : 6379 > info replication # Rôle de réplication : slave master_host: 192.168 . 0.4 master_port: 6379 master_link_status: down master_last_io_seconds_ago: - 1 master_sync_in_progress: 0 slave_repl_offset: 6891 master_link_down_since_seconds: 8 slave_priority: 100 slave_read_only:1 connected_slaves: 0 master_replid: 7d6ef858609048f3210a178772ea98ac20446c9e master_replid2: 0000000000000000000000000000000000000000 master_repl_offset: 6891 second_repl_offset: - 1 repl_backlog_active: 1 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 1027 repl_backlog_histlen: 5865 127,0 . 0,1 : 6379 > dbsize (entier) 3
8. Vous pouvez également utiliser directement la commande docker pour faire fonctionner Redis
# -it réaffecte un pseudo terminal d'entrée au conteneur et exécute le conteneur en mode interactif # Nom du conteneur redis - 6379 # redis - cli set Key Value docker exec -it redis- 6379 redis-cli set name tomkluas