Pregunta

Una pregunta similar se convirtió en una sopa de opinión sobre aquí: Entonces, tal vez no haya una respuesta 'correcta' a esto, pero quiero consultar con la comunidad.

Mi cliente está a punto de lanzar un anuncio de televisión. Esperan tráfico en el departamento de 7 dígitos durante el próximo mes. Mi trabajo es asegurar que el servidor no se caiga.

Mi pregunta: ¿vale la pena dividir la base de datos MySQL en un servidor separado, que solo sirve a la base de datos? Luego quiero tener múltiples servidores que contengan la base de código y sirvan a Apache, interactuando con el cuadro de datos. Todos serán contenedores virtuales.

No (creo) quiero usar múltiples servidores DB; parece que introducirá complejidad innecesaria y posibles errores/cuellos de botella.

¿Me equivoco? Agradecería algunas opiniones de experiencia sobre esto. Gracias.

¿Fue útil?

Solución

Hemos utilizado un servidor MySQL separado en varios casos en los que las tiendas se enfrentan al alto tráfico. Hay un par de ventajas

  1. Los servidores de bases de datos dedicados se pueden ajustar a las necesidades específicas de MySQL que son diferentes de un servidor web
  2. Es fácil agregar un segundo servidor de base de datos (cargar equilibrado) al clúster cuando sea necesario
  3. Cuando su base de datos cae, no bloquea el frontend, por lo que puede mostrar una página de advertencia o error decente.

Cuando Magento se almacena correctamente con barniz o cualquier otra extensión de FPC, el cuello de botella principal será la base de datos de lo que he experimentado. Se requerirá el poder real para su base de datos. De esta manera, puede comenzar con un servidor web relativamente pequeño e invertir más en el servidor de la base de datos.

Otros consejos

Seguridad:

Además de la respuesta de Sander, agregaría que en ciertos niveles de cumplimiento de PCI este es un requisito:

Los servidores de la web y la base de datos separadas se almacenan en masa en la base de datos, lo que lo convierte en un objetivo de alto valor para un atacante. El servidor de base de datos separado significa que el acceso puede controlarse estrictamente (exposición limitada). Requerido por la Sección 1 del PCI DSS.

Fuente: http://www.focusonpci.com/site/index.php/pci-101/technical-requirements.html

Al separar las tareas web y de la base de datos, está limitando su exposición. Por lo general, su DB se encuentra en un segmento privado de su red e inaccesible públicamente.

También se sugiere una conexión VPN estática, en PCI, entre su web/DB y la detección de intrusos se sugiere fuertemente en su equipo de red. En el caso de un compromiso, el DB se aislará y la conexión VPN rescinda de tal manera que, a pesar de que su aplicación y su clave de cifrado ahora están comprometidas, el acceso al almacén de datos se ha bloqueado y es inaccesible.

Alta disponibilidad / recuperación de desastres:

Sander está a punto aquí. Ve a votarlo. Agregaría que en caso de una pequeña tarea de mantenimiento, como tomar una copia de seguridad del sistema de archivos o un volcado de base de datos, su DB, en el mejor de los casos, se limitará a solo lecturas durante algún tiempo. En casos extremos, he visto que se llenan los tiempos de espera de espera de bloqueo y las colas de procesos que todas las conexiones disponibles están en cola o caídas. El sitio "cae", efectivamente.

Puede mitigar esto separando su DB y programando su servidor web para colocar el sitio en modo de mantenimiento durante estas ventanas de copia de seguridad sin ninguna consecuencia del sistema de archivos del servidor web.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top