Maison > Opération et maintenance > Nginx > Comment utiliser nginx pour l'équilibrage de charge

Comment utiliser nginx pour l'équilibrage de charge

WBOY
Libérer: 2023-06-03 08:19:12
avant
1986 Les gens l'ont consulté

Équilibrage de charge à quatre couches ou équilibrage de charge à sept couches

On dit souvent que l'équilibrage de charge à sept couches ou l'équilibrage de charge à quatre couches est en fait décidé en fonction du nom de la couche du modèle de réseau iso osi. nginx utilise le protocole http L'équilibrage de charge est effectué au niveau de la couche application, c'est pourquoi on l'appelle équilibrage de charge à sept couches. Par exemple, les LV qui effectuent des opérations d'équilibrage de charge au niveau de la couche TCP sont appelés équilibrage de charge de couche 4. De manière générale, il existe les classifications d'équilibrage de charge suivantes :

Comment utiliser nginx pour léquilibrage de charge

Prise en charge logicielle commune

Comment utiliser nginx pour léquilibrage de charge

Algorithmes d'équilibrage de charge courants

Les algorithmes d'équilibrage de charge courants sont les suivants :

Comment utiliser nginx pour léquilibrage de charge

Équilibrage de charge exemple de démonstration : interrogation ordinaire

Ensuite, utilisez nginx pour démontrer comment effectuer une interrogation ordinaire :

Comment utiliser nginx pour léquilibrage de charge

Préparez-vous à l'avance

Démarrez deux services sur les deux ports 7001/7002 à l'avance, utilisé pour afficher des informations différentes . Pour faciliter la démonstration, un miroir a été réalisé à l'aide de tornado, et différents paramètres transmis lors du démarrage du conteneur Docker sont utilisés pour afficher les différences de services.

[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "user service 1: 7001"
ddba0abd24524d270a782c3fab907f6a35c0ce514eec3159357bded09022ee57
[root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "user service 1: 7002"
95deadd795e19f675891bfcd44e5ea622c95615a95655d1fd346351eca707951
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7001
hello, service :user service 1: 7001
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7002
hello, service :user service 1: 7002
[root@kong ~]#
Copier après la connexion

Démarrez nginx

[root@kong ~]# docker run -p 9080:80 --name nginx-lb -d nginx 
9d53c7e9a45ef93e7848eb3f4e51c2652a49681e83bda6337c89a3cf2f379c74
[root@kong ~]# docker ps |grep nginx-lb
9d53c7e9a45e    nginx           "nginx -g 'daemon ..."  11 seconds ago   up 10 seconds    0.0.0.0:9080->80/tcp                         nginx-lb
[root@kong ~]#
Copier après la connexion

extrait de code nginx

Préparez l'extrait de code nginx suivant et ajoutez-le au /etc/nginx/conf.d/default.conf de nginx

http {
upstream nginx_lb {
  server 192.168.163.117:7001;
  server 192.168.163.117:7002;
}
server {
  listen    80;
  server_name www.liumiao.cn 192.168.163.117;
  location / {
    proxy_pass http://nginx_lb;
  }
}
Copier après la connexion

Modifier default.conf La méthode

peut obtenir cet effet en installant vim dans le conteneur, vous pouvez également le modifier localement puis le transmettre via docker cp, ou le modifier directement avec sed. Si vous installez vim dans un conteneur, utilisez la méthode suivante

[root@kong ~]# docker exec -it nginx-lb sh
# apt-get update
...省略
# apt-get install vim
...省略
Copier après la connexion

Avant modification

# cat default.conf
server {
  listen    80;
  server_name localhost;
  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  location / {
    root  /usr/share/nginx/html;
    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  /usr/share/nginx/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;
  #}
}
#
Copier après la connexion

Après modification

# cat default.conf
upstream nginx_lb {
  server 192.168.163.117:7001;
  server 192.168.163.117:7002;
}
server {
  listen    80;
  server_name www.liumiao.cn 192.168.163.117;
  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  location / {
    #root  /usr/share/nginx/html;
    #index index.html index.htm;
    proxy_pass http://nginx_lb;
  }
  #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  /usr/share/nginx/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;
  #}
}
#
Copier après la connexion

Redémarrez le conteneur nginx

[root@kong ~]# docker restart nginx-lb
nginx-lb
[root@kong ~]#
Copier après la connexion

Confirmez le résultat

Vous pouvez voir clairement le commandez, effectuez un sondage :

[root@kong ~]# curl
bonjour, service :user service 1 : 7001
[root@kong ~]# curl
bonjour, service :user service 1 : 7002
[root@kong ~]# curl
bonjour, service :user service 1 : 7001
[root@kong ~]# curl
bonjour, service :user service 1 : 7002
[root@kong ~]#

Exemple de démonstration d'équilibrage de charge : Sondage de poids

Sur cette base, pour effectuer un sondage de poids, il vous suffit d'ajouter du poids

Comment utiliser nginx pour léquilibrage de charge

Modifier default.conf

Modifier default.conf comme suit

# cp default.conf default.conf.org
# vi default.conf
# diff default.conf default.conf.org
2,3c2,3
<   server 192.168.163.117:7001 weight=100;
<   server 192.168.163.117:7002 weight=200;
---
>   server 192.168.163.117:7001;
>   server 192.168.163.117:7002;
#
Copier après la connexion

Redémarrer le conteneur nginx

[root@kong ~]# docker restart nginx-lb
nginx-lb
[root@kong ~]#
Copier après la connexion

Confirmez le résultat

Vous pouvez constater que les résultats du sondage sont effectués selon le ratio de 1/3 et 2/3 :

[root@kong ~]# curl
bonjour, service :user service 1 : 7001
[root@kong ~]# curl
bonjour, service :user service 1 : 7002
[root@kong ~]# curl
bonjour, service :user service 1 : 7002
[root@kong ~]#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal