Hola a todos!
Sigo con mis historias de DevOps y en este caso sigo con Nginx, en este caso con la configuración de un balanceador de carga.
Vamos a ver rápidamente como configurar unos balanceadores de carga con proxy inverso en Nginx.
Es posible que con el tiempo añada esquemas, gráficos o dibujos, pero de momento soy un poco «casposo» y lo hago sin ellos.
Partimos de tres servidores con los siguientes datos:
- Máquina 1 (M1) IP-ADD: 10.15.2.20
- Máquina 2 (M2) IP-ADD: 10.15.2.21
- Máquina 3 (M3) IP-ADD: 10.15.2.22
Para configurar la primera máquina (M1):
- # yum -y install httpd
- # systemctl enable httpd
- # systemctl start httpd
- # allow port 80 in firewall
- # echo “Maquina1” > /var/www/html/index.html
- vi /var/www/html/index.html (Introduciendo la configuración de Máquina 1).
Para configurar la segunda máquina (M2):
- # yum -y install httpd
- # systemctl enable httpd
- # systemctl start httpd
- # allow port 80 in firewall
- # echo “Maquina2” > /var/www/html/index.html
- # vi /var/www/html/index.html (Introduciendo la configuración de Máquina 2).
Configuración para la tercera máquina (M3):
- # yum -y install nginx
- # systemctl enable nginx
- # systemctl start nginx
- # allow port 80 in firewall
- # vi /etc/nginx/nginx.conf (Debemos borrar todo lo que hay en la sección de HTTP).
Debemos definir un grupo de servidores web con una directiva en sentido ascendente y darle a este grupo un nombre que haga referencia a que son load balancers (ejemplo: myloadbal).
Upstream definirá un clúster al que se pueden enviar solicitudes de proxy.
Se usa comúnmente para definir un clúster de servidor web para balanceo de carga o un clúster de servidor de aplicaciones para enrutamiento/balanceo de carga.
La configuración de «nginx.conf» será similar a la siguiente:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main ‘$remote_addr – $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
upstream myloadbal{
server IP_SERVIDORES:90;
server IP_SERVIDORES ;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://myloadbal;
}
}
}
Seguimos mañana con bases de datos y demás temas relacionados.
Gracias
Un saludo