Heim  >  Artikel  >  Datenbank  >  Gemeinsame Nutzung des Nignx-Lastausgleichsalgorithmus

Gemeinsame Nutzung des Nignx-Lastausgleichsalgorithmus

小云云
小云云Original
2018-03-22 13:23:321744Durchsuche

In diesem Artikel wird hauptsächlich der Nignx-Lastausgleichsalgorithmus mit Ihnen geteilt, in der Hoffnung, allen zu helfen.

1. Nginx-Lastausgleichsalgorithmus

1. Abfrage (Standard)

Jede Anfrage wird nacheinander einem anderen Backend-Dienst in chronologischer Reihenfolge zugewiesen Bei einem Serverabsturz wird das fehlerhafte System automatisch beseitigt, sodass der Benutzerzugriff nicht beeinträchtigt wird.

2. Gewicht (Abfragegewicht)

Je größer der Gewichtswert, desto höher die ihm zugewiesene Zugriffswahrscheinlichkeit. Es wird hauptsächlich verwendet, wenn die Leistung jedes Servers im Backend unausgeglichen ist . Oder legen Sie einfach unterschiedliche Gewichte in der Master-Slave-Situation fest, um eine angemessene und effektive Nutzung der Host-Ressourcen zu erreichen.

3. ip_hash Quelladressen-Hashing-Methode

Die Idee des Quelladressen-Hashings besteht darin, einen Wert zu erhalten, der durch eine Hash-Funktion basierend auf der IP-Adresse des Clients berechnet wird, und diesen Wert zu verwenden Um die Serverliste zu vergleichen, führen Sie eine Modulo-Operation für die Größe durch. Das erhaltene Ergebnis ist die Seriennummer des Servers, auf den der Client zugreifen möchte. Die Quelladressen-Hash-Methode wird für den Lastausgleich verwendet. Clients mit derselben IP-Adresse werden für den Zugriff jedes Mal demselben Backend-Server zugeordnet, wenn die Backend-Serverliste unverändert bleibt.

4. fair

Der Fair-Algorithmus ist ein intelligenterer Lastausgleichsalgorithmus als Gewicht und ip_hash und kann den Lastausgleich basierend auf Seitengröße und Ladezeit, also basierend auf der Antwort von, intelligent durchführen Dem Back-End-Server wird Zeit für Anfragen zugewiesen, und Anfragen mit kurzen Antwortzeiten werden zuerst zugewiesen. Nginx selbst unterstützt Fair nicht. Wenn Sie diesen Planungsalgorithmus benötigen, müssen Sie das Modul upstream_fair installieren.

5. url_hash

Weist Anfragen entsprechend dem Hash-Ergebnis der aufgerufenen URL zu, sodass jede URL an einen Back-End-Server weitergeleitet wird, was die Effizienz des Back-Ends weiter verbessern kann. Cache-Server beenden. Nginx selbst unterstützt url_hash nicht. Wenn Sie diesen Planungsalgorithmus benötigen, müssen Sie das Nginx-Hash-Softwarepaket installieren.

1. Abfrage (Standard)

Jede Anfrage wird nacheinander in chronologischer Reihenfolge einem anderen Backend-Server zugewiesen. Wenn der Backend-Server ausfällt, kann er automatisch gelöscht werden.

2. Gewichtung

gibt die Abfragewahrscheinlichkeit an. Die Gewichtung ist proportional zum Zugriffsverhältnis und wird verwendet, wenn die Back-End-Serverleistung ungleichmäßig ist.
Zum Beispiel:

upstream bakend {  
server 192.168.0.14 weight=10;  
server 192.168.0.15 weight=10;  
}

3. ip_hash

Jede Anfrage wird entsprechend dem Hash-Ergebnis der aufgerufenen IP zugewiesen, sodass jeder Besucher festen Zugriff auf ein Back-End hat Server, der das Sitzungsproblem lösen kann.
Zum Beispiel:

upstream bakend {  
ip_hash;  
server 192.168.0.14:88;  
server 192.168.0.15:80;  
}

4. Fair (Drittanbieter)

Anfragen entsprechend der Antwortzeit des Back-End-Servers zuweisen, und solche mit kurzen Antwortzeiten werden berücksichtigt zuerst zugeteilt.

upstream backend {  
server server1;  
server server2;  
fair;  
}

5. url_hash (Dritter)

Verteilen Sie Anfragen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass jede URL an denselben Back-End-Server weitergeleitet wird Der Back-End-Server wird zwischengespeichert. Effektiver.
Beispiel: Fügen Sie dem Upstream eine Hash-Anweisung hinzu, z. B. hash_method ist der verwendete Hash-Algorithmus

upstream backend {  
server squid1:3128;  // 10.0.0.10:7777
server squid2:3128;  //10.0.0.11:8888
hash $request_uri;  
hash_method crc32; }

2 >

Im Nginx-Upstream-Modul können Sie den Status jedes Backend-Servers bei der Lastausgleichsplanung festlegen. Häufig verwendete Status sind:

1. „Down“ bedeutet, dass der aktuelle Server nicht am Lastausgleich teilnimmt vorerst

2. Backup, reservierte Backup-Maschine. Wenn alle anderen Nicht-Backup-Maschinen ausfallen oder ausgelastet sind, wird die Backup-Maschine angefordert, sodass der Zugriffsdruck dieser Maschine am niedrigsten ist

3. max_fails, die Anzahl der zulässigen Anforderungsfehler, ist standardmäßig 1, Wenn die maximale Anzahl erreicht ist, wird der vom Modul „proxy_next_upstream“ definierte Fehler zurückgegeben.

4. fail_timeout, Anforderungsfehler-Timeout, die Zeit zum Anhalten des Dienstes nach max_fails-Fehlern. max_fails und fail_timeout können zusammen verwendet werden.

Wenn Nginx nicht nur einen Server vertreten könnte, wäre es nicht so beliebt wie heute. Nginx kann so konfiguriert werden, dass es mehrere Server unterstützt. Wenn ein Server ausfällt, kann das System weiterhin verfügbar bleiben. Der spezifische Konfigurationsprozess ist wie folgt:

1. Fügen Sie unter dem http-Knoten den Upstream-Knoten hinzu.

upstream linuxidc { 
      server 10.0.6.108:7080; 
      server 10.0.0.85:8980; 
}

  2.  将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“
http://linuxidc”.

location / { 
            root  html; 
            index  index.html index.htm; 
            proxy_pass http://linuxidc; 
}

    3.  现在负载均衡初步完成了。upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。

    除此之外,upstream还有其它的分配策略,分别如下:

    weight(权重)

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。

upstream linuxidc{ 
      server 10.0.0.77 weight=5; 
      server 10.0.0.88 weight=10; 
}

    ip_hash(访问ip)

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream favresin{ 
      ip_hash; 
      server 10.0.0.10:8080; 
      server 10.0.0.11:8080; 
}

    fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

 upstream favresin{      
      server 10.0.0.10:8080; 
      server 10.0.0.11:8080; 
      fair; 
}

url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

 upstream resinserver{ 
      server 10.0.0.10:7777; 
      server 10.0.0.11:8888; 
      hash $request_uri; 
      hash_method crc32; 
}

upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:

down 表示单前的server暂时不参与负载.

weight 默认为1.weight越大,负载的权重就越大。

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.

fail_timeout : max_fails次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

upstream bakend{ #定义负载均衡设备的Ip及设备状态 
   

  ip_hash; 
      server 10.0.0.11:9090 down; 
      server 10.0.0.11:8080 weight=2; 
      server 10.0.0.11:6060; 
      server 10.0.0.11:7070 backup; 
}

相关推荐:

几种负载均衡技术分享

几种Nginx实现负载均衡的方式

Nginx反向代理和负载均衡实践

Das obige ist der detaillierte Inhalt vonGemeinsame Nutzung des Nignx-Lastausgleichsalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:MYSQL-Interviewfragen (1)Nächster Artikel:MYSQL-Interviewfragen (1)