Implementierung des gemeinsamen Nginx-Verteilungsalgorithmus

Implementierung des gemeinsamen Nginx-Verteilungsalgorithmus

Ich habe bereits mehrere Ausgleichsalgorithmen in mehreren Ausgleichslastalgorithmen eingeführt.

In diesem Artikel wird hauptsächlich die Konfiguration von Nginx vorgestellt.

Verkehrsklassifizierung

1. 单个请求消耗的资源大致一样,返回的响应大小也都差不多,如一些常见web服务的接口操作,都是做业务逻辑运算,Db查询写入,与第三方服务交互
2. 单个请求消耗的资源不一样,返回的响应大小也都千差万别,如npm下载tar包、docker拉镜像的layer层,每一层根据用户业务构建大小不一致,如算法组会把模型打入镜像、java服务开发,就是基础镜像jdk加用户的jar包

Im ersten Fall können wir Polling, Weighted Polling, Random und IP_Hash verwenden. Im zweiten Fall gibt es zwei Typen: Wenn es sich um ein NPM-Paket handelt, gibt es viele öffentliche Pakete, die basierend auf dem URL-Hash verteilt werden können Dieselbe Paketanforderung wird an einen Computer verteilt, das Hotspot-Paket wird auf diesem Computer zwischengespeichert, wodurch die Netzwerkzeit für die Bereitstellung von DFS-Dateien verkürzt, Links optimiert und Downloads beschleunigt werden. Wenn es sich um ein Docker-Image handelt, wird jedes Image vom Benutzer erstellt. und es gibt relativ wenige öffentliche Pakete. Sie können die Auslastung, die CPU und die Verkehrsbedingungen der Maschine über einen bestimmten Zeitraum hinweg umfassend berechnen und die Anfrage an die aktuell inaktiven Maschinen verteilen.

Round-Robin-Verteilung

upstream web {
    
    
        server server1;
        server sever2;
}

server {
    
    
    listen 80;
    server_name localhost;
    location / {
    
    
        proxy_pass http://web;
    }
}

Basierend auf Aktiv- und Standby-Verteilung

Standardmäßig an die Primärdatenbank verteilt, nach Ausfall der Primärdatenbank an die Sicherung

upstream web {
    
    
   server server1;
   server server2 backup;
}

server {
    
    
 listen 80;
 server_name localhost;
 location / {
    
    
   proxy_pass http://web;
 }
}

Abfrage nach Gewicht

Konfigurieren Sie hohe Gewichte bei guter Maschinenleistung, um Maschinenressourcen effektiv zu nutzen.

upstream web {
    
    
   // 设置权重比例 1:2
   server server1 weight=1;
   server server2 weight=2;
}

server {
    
    
 listen 80;
 server_name localhost;
 location / {
    
    
   proxy_pass http://web;
 }
}

Verteilung basierend auf ip_hash

Kann Anfragen von derselben Quelladresse an denselben Computer senden

upstream web {
    
    
   // 指定ip_hash即可开启,默认权重1:1,不支持修改
   ip_hash;
   server server1;
   server server2;
}

server {
    
    
 listen 80;
 server_name localhost;
 location / {
    
    
   proxy_pass http://web;
 }
}

URL-basierte Hash-Verteilung

Dieselbe URL kann an dieselbe Maschine verteilt werden. Der Hashwert der URL wird durch die Anzahl der Maschinen geteilt und der Rest wird genommen. (Erfordert die Installation von Plug-Ins von Drittanbietern)

upstream web {
    
    
    consistent_hash $request_uri;
    server server1;
    server server2;
}

server {
    
    
  listen 80;
  server_name localhost;
  location / {
    
    
    proxy_pass http://web;
  }
}

Zusammenfassen

Wählen Sie je nach Art des Datenverkehrs einen geeigneten Ausgleichsalgorithmus; häufig verwendete Ausgleichsalgorithmen: Abfrage, gewichtete Abfrage, Zufall, IP_Hash, URL-Hash-Verteilung, Echtzeitberechnung und Verteilung basierend auf der Maschinenleistung.

Guess you like

Origin blog.csdn.net/u013565163/article/details/130144391