É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 :
Prise en charge logicielle commune
Algorithmes d'équilibrage de charge courants
Les algorithmes d'équilibrage de charge courants sont les suivants :
Équilibrage de charge exemple de démonstration : interrogation ordinaire
Ensuite, utilisez nginx pour démontrer comment effectuer une interrogation ordinaire :
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 ~]#
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 ~]#
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; } }
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 ...省略
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; #} } #
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; #} } #
Redémarrez le conteneur nginx
[root@kong ~]# docker restart nginx-lb nginx-lb [root@kong ~]#
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
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; #
Redémarrer le conteneur nginx
[root@kong ~]# docker restart nginx-lb nginx-lb [root@kong ~]#
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!