El proyecto de la empresa está a punto de entrar en línea, compró dos servidores en la nube y necesita implementar el entorno (un acceso a la red pública, uno solo puede acceder a través de la LAN), la implementación principal es la siguiente
1. Configurar ssh sin contraseña entre servidores
2. Implementación de la ventana acoplable fuera de línea
3. migración de imágenes acoplables
4. servicio redis
5. servicio de archivos minio
6. Servicio de vista previa de archivos kkFileView
7. Construcción maestro-esclavo de Mysql
Tabla de contenido
2. Implementación de la ventana acoplable fuera de línea
3. migración de imágenes acoplables
6. Servicio de vista previa de archivos kkFileView
7. Construcción maestro-esclavo de Mysql
1. slave_io_running: solución de conexión
1. Configure dos servidores para ssh sin encriptación, lo cual es conveniente para la transferencia de archivos
Configurar sin contraseña
1. Cambie el host y modifique el nombre del host
vim /etc/hosts
Asigne la IP en la parte inferior, de modo que el nodo01 configurado se asigne a 192.168.52.100
192.168.52.100 nodo01
192.168.52.101 nodo02
vim /etc/nombre de host
2. Configure sin contraseña, genere la clave pública y la clave privada del servidor ,
Si es usuario root, ingrese cd /root/.ssh/
ssh-keygen -t rsa
3. Copie la clave pública en el nodo01 y genere un archivo authorized_keys que contenga las claves públicas de los dos nodos.
ssh-copia-id nodo01
4. Copie la clave pública generada authorized_keys en node02 en node01
scp autorizado_claves nodo02:$PWD
5. La misma operación se realiza en node02, y ahora puede usar ssh para iniciar sesión sin contraseña
2. Implementación de la ventana acoplable fuera de línea
Dirección de descarga: Índice de linux/static/stable/x86_64/
descargué lo siguiente
Porque cargué el archivo docker descargado en la red pública y luego lo cargué en el servidor node02 fuera de Ningwai a través de la LAN.
scp docker-24.0.4.tgz node02:$PWD
1. Descomprimir el archivo
tar zxf docker-24.0.4.tgz
2. Copie los comandos relacionados con la ventana acoplable a /usr/bin
sudo cp docker/* /usr/bin/
3. Inicie el demonio Docker
sudo dockerd &
4. Para verificar si la instalación es exitosa, ejecute el comando docker info Si la información de la versión se imprime normalmente, la instalación es exitosa.
información de la ventana acoplable
5. Cree un archivo docker.service en el directorio /usr/lib/systemd/system/
sudo vi /usr/lib/systemd/system/docker.servicio
[Unidad]
Descripción=Docker Application Container Engine
Documentación=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Servicio]
Type=notify
ExecStart=/usr/bin/ dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinito
LimitNPROC=infinito
TimeoutStartSec=0
Delegate=sí
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
6. Configure la ventana acoplable para que arranque
systemctl habilitar/deshabilitar la ventana acoplable
3. migración de imágenes acoplables
Debido a que la ventana acoplable en la LAN no puede extraer la imagen de forma remota, es necesario transferir el servidor de destino a través de la LAN después de extraer el archivo de imagen de la red pública.
1. Empaquetar la imagen del servidor de la red pública (yo empaqueté mysql)
ventana acoplable guardar mysql:5.7 > /home/soft/mysql5.7.tar
2. Transfiera la imagen empaquetada al servidor LAN node02
scp mysql5.7.tar nodo02:$PWD
3. Restaure el paquete comprimido a una imagen reflejada en el servidor node02
carga de la ventana acoplable < /home/soft/mysql5.7.tar
4. servicio redis
requirepass: contraseña 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 servidor-redis /usr/local/etc/redis/redis.conf \
--appendonly sí
5. servicio de archivos minio
Obtenga la última versión u otras versiones
ventana acoplable pull minio/minio
MINIO_ACCESS_KEY: usuario de inicio de sesión
MINIO_ACCESS_KEY: contraseña de usuario de inicio de sesión
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/minio server\
/data --console-address ":9090" -address ":9000"
6. Servicio de vista previa de archivos kkFileView
Sitio web oficial de kkFileView: kkFileView - vista previa de archivos en línea
# El entorno de red facilita el acceso al almacén central docker
docker pull keking/kkfileview:4.1.0
docker run -it -p 8012:8012 keking/kkfileview:4.1.0
7. Construcción maestro-esclavo de Mysql
1. nodo maestro mysql
1. Implemente el contenedor del nodo maestro 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 /misdatos/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
Descripción del catálogo:
-v /mydata/mysql-master/conf:/etc/mysql; montar la carpeta de configuración en el host
-v /mydata/mysql-master/log:/var/log/mysql: montar la carpeta de registro en el host
- v /mydata/mysql-master/data:/var/lib/mysql: monte la carpeta de datos en el host
2. Modifique la configuración my.conf del nodo maestro
vim /misdatos/mysql-master/conf/mi.cnf
[mysqld] ## Establezca server_id, se requiere server_id único = 101
en la misma red de área local ## Especifique el nombre de la base de datos que no necesita sincronizarse binlog-ignore-db=mysql ## Habilite la función de registro binario log-bin= mall-mysql-bin ## La configuración del registro binario utiliza el tamaño de la memoria (transacción) binlog_cache_size=1M ## Establece el formato de registro binario utilizado (mixto, instrucción, fila) binlog_format=mixed ## Tiempo de limpieza de vencimiento del registro binario. El valor predeterminado es 0, lo que significa que no hay limpieza automática. expire_logs_days=7## Ignorar la configuración del caso
lower_case_table_names = 1
## Omita todos los errores o tipos específicos de errores encontrados en la replicación maestro-esclavo para evitar la interrupción de la replicación del lado esclavo.
## Tales como: el error 1062 significa que algunas claves primarias están duplicadas, el error 1032 se debe a que los datos de la base de datos maestro-esclavo son inconsistentes
slave_skip_errors=1062
Reinicie el contenedor del nodo maestro
ventana acoplable reiniciar mysql-master
3. Ingrese al contenedor del nodo maestro y agregue una cuenta de usuario de sincronización
docker exec -it mysql-master /bin/bash
mysql -uroot -p123456
Crear cuenta de sincronización
CREAR USUARIO 'esclavo' @'%' IDENTIFICADO POR '123456';
CONCEDER ESCLAVO DE REPLICACIÓN, CLIENTE DE REPLICACIÓN EN *.* A 'esclavo'@'%';
2. nodo esclavo mysql
1. Crear un contenedor de nodos esclavos
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 /misdatos/esclavo-mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
2. Modifique la configuración my.conf del nodo maestro
vim /misdatos/mysql-master/conf/mi.cnf
[mysqld] ## Establezca server_id, se requiere server_id
único = 122 en la misma red de área local ## Especifique el nombre de la base de datos que no necesita sincronizarse binlog-ignore-db=mysql ## Habilite la función de registro binario, en caso El esclavo se usa como maestro de otras instancias de la base de datos log-bin=mall-mysql-slave1-bin ## Establece el tamaño de la memoria de registro binario (transacción) binlog_cache_size=1M ## Establece el formato de registro binario utilizado (mixto, declaración, fila) binlog_format=mixed ## Tiempo de limpieza de vencimiento del registro binario. El valor predeterminado es 0, lo que significa que no hay limpieza automática. expire_logs_days=7 ## Omita todos los errores o tipos específicos de errores encontrados en la replicación maestro-esclavo para evitar la interrupción de la replicación del lado esclavo. ## Tales como: el error 1062 significa que algunas claves primarias están duplicadas, el error 1032 se debe a que los datos en la base de datos maestro-esclavo son inconsistentes Registro binario propio log_slave_updates=1 ## el esclavo está configurado como de solo lectura (excepto para usuarios con super autoridad)
solo lectura = 1## Ignorar configuración de mayúsculas
minúsculas_case_table_names = 1
Reinicie el contenedor del nodo secundario
ventana acoplable reiniciar mysql-esclavo
3. Verifique el parámetro Posición de la base de datos principal, porque ya hay algunos datos, es 5483771. Generalmente, la posición es 443 al principio
mostrar el estado del maestro;
4. Ingrese a la base de datos esclava
docker exec -it mysql-slave /bin/bash
mysql -uroot -p123456
5. Ver el estado de sincronización maestro-esclavo en la base de datos esclava
mostrar el estado del esclavo \G
cambiar maestro a
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: dirección IP de la base de datos maestra;
master_port: puerto de ejecución de la base de datos maestra;
master_user: cuenta de usuario creada en la base de datos maestra para sincronizar datos;
master_password: contraseña de usuario creada en la base de datos maestra para sincronizar datos;
master_log_file: esclavo especificado El registro archivo de la base de datos para copiar datos, al ver el estado de los datos maestros, obtenga el parámetro Archivo;
master_log_pos: especifique la posición desde la cual comenzar a copiar datos de la base de datos, y obtenga el parámetro Posición al ver el estado de los datos maestros ;
master_connect_retry: el tiempo para reintentar el intervalo de falla de conexión, en segundos.
6. Iniciar el servicio desde los datos
iniciar esclavo;
slave_io_running es responsable de la comunicación io con el host;
slave_sql_running es responsable de su propio proceso mysql esclavo.
Dos sí significa éxito
3. Problemas que surgen
1. slave_io_running: solución de conexión
1. Falla de la red
Haga ping a la IP del nodo maestro para ver si se puede hacer ping. Si el ping falla, verifique si el grupo de seguridad o el firewall ha abierto el protocolo ICMP.
2. Si la cuenta esclava puede conectarse de forma remota al servicio de nodo maestro
docker exec -it mysql-slave /bin/bash
mysql -u esclavo -p123456 -h10.0.0.4 -P 3333
3. Compruebe si el nodo esclavo inicia el servicio, si el comando es correcto, si el archivo de inicio y el nodo de inicio son correctos y si la dirección IP del host es correcta.
Primero detenga, luego modifique y luego inicie el servicio
dejar de esclavo;
iniciar esclavo;
mostrar el estado del esclavo \G
2. slave_io_running: no hay solución (posible motivo: los nodos maestro y esclavo server-uuid son los mismos)
1. Encuentra la ubicación del archivo
encontrar / -iname "auto.cnf"
2. Ingrese al directorio de archivos y elimine el archivo.
rm auto.cnf
3. Reinicie el servicio de nodo secundario
dejar de esclavo;
iniciar esclavo;
mostrar el estado del esclavo \G
3, Slave_SQL_Running: No
1. El programa puede haber escrito en el esclavo
2. También puede deberse a la reversión de la transacción después de reiniciar la máquina esclava.
mysql> detener esclavo; mysql> establecer GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> iniciar esclavo;