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>
...