Déploiement hors ligne du serveur de docker, migration d'images, construction maître-esclave mysql et autres services

Le projet de l'entreprise est sur le point d'être mis en ligne, a acheté deux serveurs cloud et doit déployer l'environnement (un accès au réseau public, un accessible uniquement par le LAN), le déploiement principal est le suivant

1. Configurez ssh sans mot de passe entre les serveurs

2. Déploiement de docker hors ligne

3. migration d'image docker

4. service redis

5. service de fichiers minio

6. Service de prévisualisation de fichiers kkFileView

7. Construction maître-esclave MySQL

Table des matières

1. Configurez deux serveurs sur ssh sans cryptage, ce qui est pratique pour le transfert de fichiers

2. Déploiement de docker hors ligne

 3. migration d'image docker

4. service redis

5. service de fichiers minio

6. Service de prévisualisation de fichiers kkFileView

7. Construction maître-esclave MySQL

1. nœud maître mysql

2. nœud esclave mysql

3. Problèmes qui surviennent

1. slave_io_running : solution de connexion

 2. slave_io_running : pas de solution (raison possible : les nœuds maître et esclave de server-uuid sont identiques)

3、Slave_SQL_Running : Non 


1. Configurez deux serveurs sur ssh sans cryptage, ce qui est pratique pour le transfert de fichiers

Configurer sans mot de passe

1. Changez d'hôte et modifiez le nom d'hôte

vim /etc/hosts

  Mappez l'IP en bas, de sorte que le node01 configuré soit mappé à 192.168.52.100 

192.168.52.100 nœud01
192.168.52.101 nœud02

vim /etc/nomhôte 

2. Configurer sans mot de passe, générer la clé publique et la clé privée du serveur ,

 Si vous êtes un utilisateur root, entrez cd /root/.ssh/ 

ssh-keygen -t rsa

3. Copiez la clé publique sur node01 et générez un fichier authorized_keys contenant les clés publiques des deux nœuds

ssh-copy-id node01

4. Copiez la clé publique générée authorized_keys vers node02 sur node01 

scp clé_autorisée node02 :$PWD

5. La même opération est effectuée sur node02, et maintenant vous pouvez utiliser ssh pour vous connecter sans mot de passe

2. Déploiement de docker hors ligne

Adresse de téléchargement : Index de linux/static/stable/x86_64/

j'ai téléchargé ce qui suit

Parce que j'ai téléchargé le fichier docker téléchargé sur le réseau public, puis je l'ai téléchargé sur le serveur node02 en dehors de Ningwai via le réseau local.

scp docker-24.0.4.tgz node02:$PWD

1. Décompressez le fichier

tar zxf docker-24.0.4.tgz 

 2. Copiez les commandes liées au docker dans /usr/bin

sudo cp docker/* /usr/bin/

3. Démarrez le démon Docker

 docker sudo &

4. Pour vérifier si l'installation a réussi, exécutez la commande docker info. Si les informations de version s'impriment normalement, l'installation a réussi.

 info docker

5. Créez un fichier docker.service dans le répertoire /usr/lib/systemd/system/

sudo vi /usr/lib/systemd/system/docker.service

[Unité]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/ dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target
 

6. Configurez Docker pour démarrer

systemctl activer/désactiver docker 

 3. migration d'image docker

Étant donné que le docker du réseau local ne peut pas extraire l'image à distance, il est nécessaire de transférer le serveur cible via le réseau local après avoir extrait le fichier image du réseau public.

1. Emballez l'image du serveur de réseau public (j'ai empaqueté mysql)

menu fixe enregistrer mysql:5.7 > /home/soft/mysql5.7.tar

2. Transférer l'image packagée sur le serveur LAN node02

 scp mysql5.7.tar node02:$PWD

3. Restaurer le package compressé sur une image miroir sur le serveur node02

chargement docker < /home/soft/mysql5.7.tar

4. service redis

requirepass : mot de passe redis

 docker run --name=redis -p 6333:6379 \
    -v /data/redis/data:/data \
     -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
    -d redis:latest --requirepass 123456 redis-server /usr/local/etc/redis/redis.conf \
    --appendonly oui

5. service de fichiers minio

Tirez la dernière version, ou d'autres versions

docker pull minio/minio

MINIO_ACCESS_KEY : nom d'utilisateur de connexion

MINIO_ACCESS_KEY : mot de passe utilisateur de connexion

docker run -p 9000:9000 -p 9090:9090 \
 --name minio \
 -d --restart=always \
 -e "MINIO_ACCESS_KEY=test" \
 -e "MINIO_SECRET_KEY=123456" \
 -v /root/docker/minio /data:/data \
 -v /root/docker/minio/config:/root/.minio \
 minio/serveur minio\
 /data --console-address ":9090" -address ":9000"

6. Service de prévisualisation de fichiers kkFileView

Site officiel de kkFileView : kkFileView - prévisualisation de fichiers en ligne

# L'environnement réseau facilite l'accès à l'entrepôt central docker

docker pull keking/kkfileview:4.1.0

docker run -it -p 8012:8012 keking/kkfileview:4.1.0 

7. Construction maître-esclave MySQL

1. nœud maître mysql

1. Déployez le conteneur de nœud maître mysql

docker run -p 3333:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

 Descriptif catalogue :

-v /mydata/mysql-master/conf:/etc/mysql ; monter le dossier de configuration sur l'hôte
-v /mydata/mysql-master/log:/var/log/mysql : monter le dossier du journal sur l'hôte
- v /mydata/mysql-master/data:/var/lib/mysql : montez le dossier data sur l'hôte

2. Modifier la configuration my.conf du nœud maître

vim /mesdonnées/mysql-master/conf/mon.cnf 

[mysqld] ## Set server_id, unique server_id=101 
est requis dans le même réseau local ## Spécifiez le nom de la base de données qui n'a pas besoin d'être synchronisé binlog-ignore-db=mysql   ## Activer la fonction de journalisation binaire log-bin= mall-mysql-bin   ## Paramètre Le journal binaire utilise la taille de la mémoire (transaction) binlog_cache_size=1M   ## Définit le format de journal binaire utilisé (mixte, instruction, ligne) binlog_format=mixed   ## Délai de nettoyage de l'expiration du journal binaire. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de nettoyage automatique. expire_logs_days=7  










## Ignorer la configuration de la casse

 lower_case_table_names = 1 
## Ignorer toutes les erreurs ou les types d'erreurs spécifiés rencontrés dans la réplication maître-esclave pour éviter l'interruption de la réplication côté esclave.
## Tel que : l'erreur 1062 signifie que certaines clés primaires sont dupliquées, l'erreur 1032 est due au fait que les données de la base de données maître-esclave sont incohérentes
slave_skip_errors=1062

Redémarrer le conteneur de nœud maître 

 docker redémarre mysql-master

3. Entrez dans le conteneur de nœud maître et ajoutez un compte d'utilisateur de synchronisation

docker exec -it mysql-master /bin/bash

mysql-uroot-p123456

Créer un compte de synchronisation 

CRÉER UN UTILISATEUR 'esclave' @'%' IDENTIFIÉ PAR '123456' ;


ACCORDER L'ESCLAVE DE RÉPLICATION, LE CLIENT DE RÉPLICATION SUR *.* À 'esclave'@'%' ;

2. nœud esclave mysql

1. Créer un conteneur de nœud esclave

docker run -p 3334:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

2. Modifier la configuration my.conf du nœud maître

vim /mesdonnées/mysql-master/conf/mon.cnf 

[mysqld]
## Set server_id, unique
server_id=122 est requis dans le même réseau local
## Spécifiez le nom de la base de données qui n'a pas besoin d'être synchronisé
binlog-ignore-db=mysql  
## Activez la fonction de journal binaire, au cas où L'esclave est utilisé comme maître des autres instances de base de données
log-bin=mall-mysql-slave1-bin  
## Définit la taille de la mémoire du journal binaire (transaction)
binlog_cache_size=1M  
## Définit le format du journal binaire utilisé (mixte, instruction, ligne)
binlog_format=mixed  
## Heure de nettoyage de l'expiration du journal binaire . La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de nettoyage automatique.
expire_logs_days=7  
## Ignorer toutes les erreurs ou les types d'erreurs spécifiés rencontrés dans la réplication maître-esclave pour éviter l'interruption de la réplication côté esclave. ## Tel que : l'erreur 1062 signifie que certaines clés primaires sont dupliquées, l'erreur 1032   est due au fait que les données
de la base de données maître- esclave sont   incohérentes .   autorité)






lecture_seule=1

## Ignorer la casse configuration
lower_case_table_names = 1 

Redémarrez le conteneur de nœud enfant 

docker redémarre mysql-slave

3. Vérifiez le paramètre Position de la base de données principale. Parce qu'il y a déjà des données, c'est 5483771. Généralement, la position est 443 au début

afficher l'état du maître ;

 4. Entrez dans la base de données esclave

docker exec -it mysql-slave /bin/bash

mysql-uroot-p123456

 5. Afficher l'état de la synchronisation maître-esclave dans la base de données esclave

afficher l'état de l'esclave \G

changer le maître en 
master_host='10.0.0.4',master_user='slave',master_password='123456',master_port=3333,
master_log_file='mall-mysql-bin.000002',master_log_pos=684,master_connect_retry=30 ;

master_host : adresse IP de la base de données master ;
master_port : port d'exécution de la base de données master ;
master_user : compte utilisateur créé dans la base de données master pour la synchronisation des données ;
master_password : mot de passe utilisateur créé dans la base de données master pour la synchronisation des données ;
master_log_file : esclave spécifié Le journal fichier de la base de données pour copier les données, en affichant l'état des données maître, obtenir le paramètre Fichier ;
master_log_pos : spécifier la position à partir de laquelle commencer à copier les données de la base de données et obtenir le paramètre Position en affichant l'état des données maître ;
master_connect_retry : le temps pour réessayer l'intervalle d'échec de connexion, en secondes.

 6. Démarrez le service à partir des données

démarrer l'esclave ;

slave_io_running est responsable de la communication io avec l'hôte ;
slave_sql_running est responsable de son propre processus mysql esclave.

Deux oui signifie succès

3. Problèmes qui surviennent

1. slave_io_running : solution de connexion

1. Panne de réseau

Ping l'adresse IP du nœud maître pour voir s'il peut être ping. Si le ping échoue, vérifiez si le groupe de sécurité ou le pare-feu a ouvert le protocole ICMP.

2. Si le compte esclave peut se connecter à distance au service de nœud maître

docker exec -it mysql-slave /bin/bash

mysql -u esclave -p123456 -h10.0.0.4 -P 3333

 3. Vérifiez si le nœud esclave démarre le service, si la commande est correcte, si le fichier de démarrage et le nœud de démarrage sont corrects et si l'adresse IP de l'hôte est correcte.

 Arrêtez d'abord, puis modifiez, puis démarrez le service

arrêter l'esclave ;

démarrer l'esclave ; 

afficher l'état de l'esclave \G

 2. slave_io_running : pas de solution (raison possible : les nœuds maître et esclave de server-uuid sont identiques)

1. Trouver l'emplacement du fichier

trouver / -iname "auto.cnf"

2. Entrez dans le répertoire du fichier et supprimez le fichier

rm auto.cnf

3. Redémarrez le service de nœud enfant

arrêter l'esclave ;

démarrer l'esclave ; 

afficher l'état de l'esclave \G

3、Slave_SQL_Running : Non 


1. Le programme peut avoir écrit sur l'esclave

2. Cela peut également être dû à l'annulation de la transaction après le redémarrage de la machine esclave.

mysql> stop esclave ; 
mysql> définir GLOBAL SQL_SLAVE_SKIP_COUNTER=1 ; 
mysql> démarrer l'esclave ;

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43288858/article/details/131664353
conseillé
Classement