¿Vale la pena usar un servidor MySQL separado?

8

Una pregunta similar se convirtió en una sopa de opinión 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 apache, interactuando con el cuadro de la base de datos. Todos serán contenedores virtuales.

NO (creo) que quiero usar varios servidores de base de datos; parece que introducirá una complejidad innecesaria y posibles errores / cuellos de botella.

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

Jongosi
fuente

Respuestas:

16

Hemos utilizado un servidor MySQL separado en varias instancias donde las tiendas se enfrentaban a un 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 (carga equilibrada) al clúster cuando sea necesario
  3. Cuando su base de datos se cae, no bloquea el frontend, por lo que puede mostrar una página de advertencia o error decente.

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

Sander Mangel
fuente
13

Seguridad:

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

Servidores web y de base de datos separados CHD se almacena en masa en la base de datos, lo que lo convierte en un objetivo de alto valor para un atacante. 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 base de datos, está limitando su exposición. Por lo general, su base de datos está en un segmento privado de su red y es inaccesible públicamente.

También se sugiere una conexión VPN estática, en PCI, entre su web / db y se recomienda encarecidamente la detección de intrusos en su equipo de red. En caso de compromiso, la base de datos se aislará y la conexión VPN finalizará de tal manera que, aunque su aplicación y su clave de cifrado estén en peligro, el acceso al almacén de datos se haya bloqueado y no se pueda acceder a él.

Alta disponibilidad / recuperación ante desastres:

Sander está a punto aquí. Ve a votarlo. Agregaría que, incluso en el caso de una pequeña tarea de mantenimiento, como realizar una copia de seguridad del sistema de archivos o un volcado de la base de datos, su base de datos, en el mejor de los casos, se limitará a solo lectura durante un tiempo. En casos extremos, he visto que los tiempos de espera de bloqueo y las colas de proceso se llenan y todas las conexiones disponibles se ponen en cola o se caen. El sitio "cae", efectivamente.

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

philwinkle
fuente
1
La seguridad hace que esto sea obvio, PCI-DSS o no. Al igual que con cualquier dato confidencial, debe haber un firewall entre el sistema frontal y la base de datos.
Nic
0

Me gustaría agregar mi 1 centavo. Cuando se diseña un entorno de producción, considere tener una aplicación y una base de datos en diferentes servidores como regla general. Le dará los siguientes beneficios directamente o directamente:

  • Mejor rendimiento general (su aplicación tiene más recursos)
  • Sistema más confiable (el bloqueo o el bloqueo de uno puede no afectar al otro. Por supuesto, la aplicación puede no funcionar según las necesidades, sino un componente)
  • Recursos dedicados según la necesidad (puede asignar CPU / RAM / Almacenamiento a cada servidor según la necesidad)
  • Mejor seguridad (solo con la excepción de que está permitiendo la conexión de la base de datos fuera de su máquina, pero esto se puede mitigar con restricciones de firewall basadas en la dirección IP o enfoques similares)
  • Requisito para lograr Altamente disponible (HA)
  • Sistemas fáciles de abordar las necesidades de recuperación ante desastres (DR)
  • En mi opinión, solo las desventajas son más costos y más servidores para administrar.

Gracias y reagrd, Imran Javed Zia

Imran Javed
fuente