Balanceo de carga con Nginx


Para esta guía vamos a utilizar una nueva máquina virtual, en esta nueva máquina vamos a instalar nginx, y vamos a utilizarla para balancear la carga del servidor que ya tenemos creado y que utiliza apache.

Preparar la máquina virtual

Primero vamos a configurar la máquina para que se respondan ambos servidores.
En la configuración de VirtualBox tenemos que añadir la máquina nueva en la misma red interna donde tenemos la máquina con el servidor Apache.
Una vez configurado lo anterior debemos arrancar la máquina y ponerle una IP estática.
Puedes seguir este manual este manual para seguir paso a paso como se configuraría la máquina.

Instalando Nginx

Ahora vamos a instalar nginx en la nueva máquina virtual.
apt-get install nginx
Podemos comprobar que se haya instalado correctamente accediendo, desde el navegador, a localhost.

Crear y configurar el VirtualHost

El siguiente paso será realizar un VirtualHost para el servidor Nginx, y hacer que escuche por el puerto 8080. Este VirtualHost será el encargado de recibir las peticiones y de redirigir algunas al servidor con Apache.

Vamos a crear la carpeta que contendrá nuestra página.
mkdir /var/www/html/zonanginx
Después de crear la carpeta, dentro de ella, vamos a crear un index.html y le ponemos el texto que queramos.
cd /var/www/html/zonanginx
nano index.html
Por último nos queda realizar la configuración del sitio, para ello iremos a cd /etc/nginx/sites-available, para no reescribirlo de nuevo vamos a copiar el archivo default a uno que se llame, por ejemplo, igual que el directorio de nuestro VirtualHost.
cp default zonanginx
Vamos a modificar ahora el archivo que acabamos de crear.

Vamos a indicarle que escuche por el puerto 8080 con listen 8080;.
La línea listen [::]:80 default_server; debemos comentarla para evitar futuros errores.
Y finalmente en la línea root /var/www/html/zonanginx vamos a añadir la ruta a nuestor directorio del sitio que hemos creado en /var/www/html.

Para poder activar esta nueva configuración debemos crear un enlace simbólico en el directorio sites-enabled
ln -s /etc/nginx/sites-available/zonanginx /etc/nginx/sites-enabled/zonanginx
Para que el servidor detecte estos cambios tendremos que reiniciar nginx.
service nginx restart
Para comprobar que funciona correctamente la nueva configuración podemos acceder desde el navegador a nuestra dirección IP, pero por el puerto 8080. En mi caso `192.168.1.2:8080`. Debería salirnos el contenido que hemos añadido en el index.html.

Configurar el balanceo de peticiones

Ahora vamos a configurar nuestro servidor Nginx para que, al recibir las peticiones de los clientes, las distribuya entre él y el servidor apache. Vamos a editar el fichero del servidor por defecto.
nano /etc/nginx/sites-available/default
Vamos a configurarlo como en la siguiente imagen:
Podemos utilizar el location que ya está dentro de server, y comentar todas las demás líneas.
Y añadimos el upstream fuera de server, con la IP del servidor apache y abajo la nuestra y le indicamos el puerto que le configuramos a nuestro VirtualHost.
Solo nos queda reiniciar el servicio nginx para que los cambios surjan efecto.
service nginx restart

Ahora podemos comprobar, desde el cliente, a mandar una petición a la IP de nuestro servidor con Nginx. Podemos ver que algunas peticiones son enviadas al servidor Apache y otras las recibe Nginx.

Enlaces

http://systemadmin.es/2012/04/balanceo-de-carga-con-nginx
http://www.digitalvalley.com/blog/configurar-nginx-como-balanceador-de-carga/
by-nc-sa

Comentarios