Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
Problema de conexión mysql al escalar el contenedor mysql a más de 1 en docker swarm

Tengo una máquina host ejecutándose en modo enjambre. Lo estoy ejecutando en una sola máquina ahora, sin clústeres (sin varias máquinas).

Los servicios están funcionando bien. He creado un volumen para el contenedor mysql. Creo que cuando se escala el contenedor mysql, todos leerán del mismo volumen.

Aquí está el docker-compose. Lo cual funciona muy bien y no hay problema de conexión mysql, pero cuando escalo el contenedor mysql a 2

 version: "3.4" services: node: image: prod_engineering_node:v7 networks: - backend volumes: - ./codebase:/usr/src/app ports: - "8082:8082" depends_on: - engineeringmysql deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager mysql: image: prod_engineering_mysql:v1 command: mysqld --default-authentication-plugin=mysql_native_password networks: - backend ports: - "3309:3306" environment: MYSQL_ROOT_PASSWORD: main_pass MYSQL_DATABASE: engineering MYSQL_USER: user MYSQL_PASSWORD: pass volumes: - ./sqldata:/var/lib/mysql:rw deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager nginx: image: prod_engineering_nginx:v1 ports: - "80:80" - "443:443" volumes: - ./angular_build:/var/www/html/studydote_v2/frontend:rw - ./laravel_admin:/var/www/html/dev/backend/public:rw networks: - backend depends_on: - engineeringphpfpm deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager phpfpm: image: prod_engineering_phpfpm:v1 ports: - "9001:9000" depends_on: - engineeringmysql networks: - backend volumes: - ./angular_build:/var/www/html/studydote_v2/frontend:rw - ./laravel_admin:/var/www/html/dev/backend/public:rw deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager networks: backend: driver: overlay

Así es como escalé el contenedor mysql.

 docker service scale servicename=2

Ahora tengo el problema de las conexiones de db.

¿Puede alguien ayudarme con eso? ¿Cuál podría ser el problema? Si esta es la forma incorrecta de escalar mysql db, sugiérame cuáles son las mejores formas.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Cuando inicia un servicio, Docker swarm asignará una dirección IP virtual a cada servicio y equilibrará la carga de todas las solicitudes a esa IP para cada uno de los contenedores de réplica.

Lo que probablemente sucede (pero es difícil de ver sin los registros completos) es que la conexión tcp se equilibra en ambas bases de datos: la primera conexión iría a nr1, la segunda a nr2, etc.

Sin embargo, las conexiones mysql son con estado, no sin estado. Entonces, esta forma de escalar su base de datos no va a funcionar. También tenga en cuenta que Docker no manejará el trabajo de replicación de Mysql por usted. Lo que la gente suele hacer es:

  • evite tener que ejecutar varias instancias de base de datos si no es necesario
  • ejecute 2 servicios mysql: un mysql-master y un mysql-slave, cada uno con su propia configuración
  • haga un descubrimiento de servicio inteligente en un script de inicio en su imagen mysql
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda