En algunos tipos de implementaciones, particularmente donde las aplicaciones ricas y dinámicas dependen de una gran base de datos, separar el servidor de la base de datos del servidor de la aplicación puede permitir que su aplicación escale y se adapte a una base de usuarios mucho más grande. La designación de un servidor separado para ser utilizado únicamente por MySQL permitirá que el servidor web de la aplicación sirva contenido de manera más eficiente, mientras que el servidor de la base de datos podrá responder más rápidamente.
Como resultado, estos servidores de bases de datos pueden admitir implementaciones con cargas de tráfico elevadas de manera más efectiva. Esto puede ayudarlo a lograr un mayor rendimiento para una variedad de aplicaciones, desde paquetes populares como WordPress y Drupal hasta aplicaciones personalizadas escritas en Ruby on Rails y Django.
Requisitos previos
En esta guía usaremos dos Linodes. Tenga en cuenta que esto es diferente a simplemente implementar un segundo perfil de configuración en su cuenta Linode existente, ya que ambos servidores deberán ejecutarse al mismo tiempo. Suponemos que ha seguido la guía de configuración y protección de una instancia informática para ambos Linodes.
- Para el Linode que ejecuta el servidor web, de ahora en adelante el servidor de aplicaciones, ya debe tener Apache (o su servidor web preferido) instalado. Para una instalación nueva, siga la guía LAMP para su distribución. La guía LAMP incluye MySQL, que no necesita instalar.
- El MySQL Linode dedicado debe tener MySQL instalado. Siga la guía de instalación del servidor de base de datos MySQL para su distribución. Tenga en cuenta que no tiene que instalar Apache en el servidor MySQL dedicado.
Además, querrá configurar alias para la dirección IP privada de cada Linode. Puede seguir la guía de configuración de IP estática de Linux para obtener ayuda con esto. Es importante tener en cuenta que ambos Linodes deben estar en el mismo centro de datos para que las redes privadas funcionen. Esto permite que los servidores se comuniquen sin que el tráfico cuente contra su cuota mensual de ancho de banda. Es necesario reiniciar ambos Linodes después de configurar las direcciones IP privadas.
Editar /etc/hosts
Querrá crear nombres de host para cada máquina para poder realizar un seguimiento de ellos más tarde. Esto también ahorra trabajo, en caso de que se encuentre en una situación en la que necesite cambiar la dirección IP del servidor. Edite el /etc/hosts
archivo para incluir el privado Direcciones IP de cada Linode. Use el siguiente extracto de un ejemplo /etc/hosts
archivo como ejemplo:
- Archivo:/ etc./hosts
1
> 127.0.0.1 localhost 192.168.192.168 mysql.example.com mysql 192.168.192.169 app.example.com app
Recuerde reemplazar 192.168.192.168
y 192.168.192.169
con las direcciones IP privadas reales.
Si bien este paso es opcional, configurar hosts
Las entradas le permitirán evitar configuraciones de aplicaciones de codificación rígida para direcciones IP específicas. Podrá migrar rápidamente sus servidores de aplicaciones y bases de datos a servidores alternativos si alguna vez tiene que cambiar sus direcciones IP.
Configurando el Servidor MySQL
El siguiente paso es modificar el /etc/mysql/my.cnf
archivo en su servidor MySQL para escuchar en su dirección IP privada. Usando su editor favorito, abra el /etc/mysql/my.cnf
e inserte el nombre de host de la base de datos MySQL. Para este ejemplo, el nombre de host de la base de datos MySQL es mysql
. Localice la bind-address
línea:
- Archivo:/ etc/mysql/my.cnf
1
bind-address = mysql
Alternativamente, puede utilizar la dirección IP privada. Guarde el archivo y ejecute el siguiente comando para reiniciar el demonio MySQL:
/etc/init.d/mysql restart
Concesión de acceso a la base de datos
En el servidor de base de datos dedicado, deberá crear un nombre de usuario y una contraseña de base de datos con derechos de acceso. Esto es posible a través del indicador de MySQL. Ejecute el siguiente comando:
mysql -u root -p
Esto proporcionará una línea de comando MySQL. Ejecute los siguientes comandos, sustituyendo app
con el nombre de host del Linode que ejecuta el servidor de aplicaciones y una contraseña segura en lugar de "CONTRASEÑA":
CREATE DATABASE webapplications;
GRANT ALL ON webapplications.* TO [email protected]'app' IDENTIFIED BY 'PASSWORD';
En esta etapa, su aplicación puede acceder con éxito a la base de datos remota y está listo para comenzar a usar el servidor de la base de datos.
Usando el servidor de base de datos
A partir de este momento, todo está configurado y su servidor de base de datos está listo para aceptar una conexión desde su servidor web. Ahora debería poder apuntar su aplicación al servidor MySQL sin incidentes. Es importante recordar que al configurar aplicaciones web para trabajar con un servidor MySQL remoto, debe crear un usuario con derechos para el sistema remoto (como se muestra arriba).
Usar MySQL en un servidor de base de datos separado es muy similar a ejecutar un servidor de base de datos local. Por lo general, las aplicaciones requieren que especifique "nombre de host de la base de datos" y, convencionalmente, los servidores de bases de datos que se ejecutan en la máquina local tienen un nombre de host de localhost
. Cuando separe la base de datos y los servidores de aplicaciones, deberá especificar el nombre de host, como se establece anteriormente, en la aplicación.
Por ejemplo, la configuración de la base de datos de inWordPress se encuentra en wp-config.php
y el nombre de host se especifica en el siguiente formato:
- Archivo:wp -config.php
1 2
/** MySQL hostname */ define('DB_HOST', 'mysql');
Tenga en cuenta que el método para configurar el nombre de host varía de una aplicación a otra. Además, puede sustituir la dirección IP específica del servidor de la base de datos, en lugar de usar el nombre de host como se configuró en /etc/hosts
arriba.
También considere hacer referencia al sitio web externalMySQL para consultas específicas de MySQL y ayuda relacionada.
Más información
Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.
- Guías de aplicaciones web
- Marcos de aplicaciones web
- Sistemas de gestión de bases de datos