Al aumentar el número de servidores y luego distribuir la solicitud a cada servidor, la solicitud original se concentra en un solo servidor en lugar de distribuir la solicitud a varios servidores y distribuir la carga a diferentes servidores, lo que llamamos Equilibrio de carga.
Efecto de realización: ingrese la dirección en la barra de direcciones del navegador: http://172.16.0.1/edu/a.html, promedio de los puertos 8080 y 8081
1. Preparación
1. Prepare 2 servidores tomcat, uno 8080 y otro 8081
2. En el directorio webapps de 2 tomcat, cree un archivo.html para probar
8080 / a.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>8080</h1>
</body>
</html>
8081 / a.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>8081</h1>
</body>
</html>
2. Configure nginx
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream myserver { #1.进行负载均衡服务器的列表
server 172.168.0.1:8080;
server 172.168.0.1:8081;
}
server {
listen 80;
server_name 172.168.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myserver; # 加入映射的规则
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
server {
listen 9001;
server_name 172.168.0.1;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
3. Verificación
Visitas frecuentes a http://111.229.251.86/edu/a.html, los resultados devueltos son 8080 y 8081
4. Reglas de equilibrio de carga
Con el crecimiento explosivo de la información de Internet, el equilibrio de carga (balanceo de carga) ya no es un tema extraño. Como su nombre lo indica, el equilibrio de carga es llevar la carga a diferentes unidades de servicio, no solo para garantizar la disponibilidad del servicio, sino también para garantizar que la respuesta sea lo suficientemente rápida como para brindar a los usuarios una buena experiencia. El rápido aumento en el acceso y el tráfico de datos ha generado una variedad de productos de equilibrio de carga. Muchos equipos profesionales de equilibrio de carga ofrecen buenas funciones, pero son caros. Esto hace que el software de carga sea popular. Nginx es uno de ellos. Hay nginx, LVS, Haproxy y otros servicios en Linux, que pueden mejorar el servicio de equilibrio de carga, y nginx proporciona los siguientes modos de distribución (estrategias).
4.1 Sondeo (predeterminado)
Cada solicitud se asigna a diferentes servidores de fondo uno por uno en orden cronológico. Si el servidor de fondo está inactivo, se puede eliminar automáticamente.
4.2 peso
el peso representa el peso, que es 1. Por defecto, cuanto mayor sea el peso, más clientes se asignan.
Especifique la probabilidad de sondeo, el peso es proporcional a la probabilidad de acceso, utilizado para un rendimiento desigual del servidor de fondo.
upstream server_pool{
server 172.168.0.1:8080 weight=10;
server 172.168.0.1:8081 weight=5;
}
4.3 ip_hash
Cada solicitud se asigna de acuerdo con el resultado hash de la IP de acceso, de modo que cada visitante accede de manera fija a un servidor de fondo, que puede resolver el problema de la sesión. Por ejemplo
upstream server_pool{
ip_hash;
server 172.168.0.1:8080;
server 172.168.0.1:8081;
}
4.4 manera justa
Las solicitudes se distribuyen de acuerdo con el tiempo de respuesta del servidor de fondo y se da prioridad a los tiempos de respuesta cortos.
upstream server_pool{
server 192.168.5.21:8080;
server 192.168.5.21:8081;
fair;
}
Visite el sitio web, distribución de equilibrio de carga a 8080 y 8081. Visite 8080 primero y luego 8081. Si tiene un tiempo de respuesta corto, déselo primero.