Posts Proxy, proxy inverso y balanceadores de carga
Post
Cancel

Proxy, proxy inverso y balanceadores de carga

Balanceador de carga

Primero vamos a instalar HAproxy

1
vagrant@balanceador:~$ sudo apt install haproxy

Vamos al fichero de configuración y pondremos lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
vagrant@balanceador:/etc/haproxy$ sudo nano haproxy.cfg 

global
    daemon
    maxconn 256
    user    haproxy
    group   haproxy
    log     127.0.0.1       local0
    log     127.0.0.1       local1  notice
defaults
    mode    http
    log     global
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
listen granja_cda
    bind 192.168.1.80:80
    mode http
    stats enable
    stats auth  cda:cda
    balance roundrobin
    server uno 10.10.10.11:80 maxconn 128 check port 80
    server dos 10.10.10.22:80 maxconn 128 check port 80

root@balanceador:~# systemctl restart haproxy

root@balanceador:~#  systemctl enable haproxy
Synchronizing state of haproxy.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable haproxy

Nos pedirá un usuario y un password, ambos cda.

Vamos a ver el log de apache1. Como podemos apreciar figura como única dirección IP, la IP interna de la máquina balanceador ya que dicho balanceador hemos espcificado un balanceo tipo roundrobin, este es que se encarga de hacer la peticiones a estos servidores.

1
2
3
4
5
6
root@apache1:~# cat /var/log/apache2/access.log 

10.10.10.1 - - [19/Feb/2020:15:43:13 +0000] "GET / HTTP/1.1" 200 436 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
10.10.10.1 - - [19/Feb/2020:15:43:14 +0000] "GET / HTTP/1.1" 200 436 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
10.10.10.1 - - [19/Feb/2020:15:43:14 +0000] "GET /favicon.ico HTTP/1.1" 404 435 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
10.10.10.1 - - [19/Feb/2020:15:45:25 +0000] "GET /favicon.ico HTTP/1.1" 404 435 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

Configurar la persistencia de conexiones Web (sticky sessions)

1
2
3
4
5
6
vagrant@balanceador:~$ sudo nano /etc/haproxy/haproxy.cfg 

...
    cookie PHPSESSID prefix                             
    server uno 10.10.10.11:80 cookie EL_UNO maxconn 128 
    server dos 10.10.10.22:80 cookie EL_DOS maxconn 128    

Cabecera:

Proxy inverso

Para que se acceda a la primera aplicación con la URL www.app1.org y a la segunda aplicación con la URL www.app2.org.

1
2
3
vagrant@balanceador:~$ sudo apt install apache2

vagrant@balanceador:~$ sudo a2enmod proxy proxy_http
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vagrant@balanceador:~$ sudo nano /etc/apache2/sites-available/app1.conf 

        ServerName www.app1.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ProxyPass "/" "http://10.10.10.11/"
        ProxyPassReverse "/" "http://10.10.10.11/"

vagrant@balanceador:~$ sudo nano /etc/apache2/sites-available/app2.conf 

        ServerName www.app2.org 

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ProxyPass "/" "http://10.10.10.22/"
        ProxyPassReverse "/" "http://10.10.10.22/"

Habilitamos los cambios:

1
2
3
4
5
6
7
8
9
10
11
vagrant@balanceador:~$ sudo a2ensite app1.conf
Enabling site app1.
To activate the new configuration, you need to run:
  systemctl reload apache2
  
vagrant@balanceador:~$ sudo a2ensite app2.conf
Enabling site app2.
To activate the new configuration, you need to run:
  systemctl reload apache2
  
vagrant@balanceador:~$ sudo systemctl restart apache2

Lo añadimos al /etc/hosts.

1
2
3
4
sudo nano /etc/hosts

172.22.0.236 www.app1.org
172.22.0.236 www.app2.org

Vamos a cambiar el html:

  • www.app1.org

  • www.app2.org

1
2
3
sudo nano /etc/hosts

172.22.1.58 www.servidor.org

Tarea 2:

Vamos a configurar otro virtual host para esta tarea:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vagrant@balanceador:~$ sudo nano /etc/apache2/sites-available/app3.conf 

...
        ServerName www.servidor.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/

        <Location "/app1/">
                ProxyPass "http://10.10.10.11/"
                ProxyPassReverse "http://10.10.10.11/"
        </Location>

        <Location "/app2/">
                ProxyPass "http://10.10.10.22/"
                ProxyPassReverse "http://10.10.10.22/"
        </Location>
...

This post is licensed under CC BY 4.0 by the author.