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
6. Service de prévisualisation de fichiers kkFileView
7. Construction maître-esclave MySQL
1. slave_io_running : solution de connexion
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 ;