Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

王林
王林nach vorne
2023-05-18 17:10:06885Durchsuche

1. Einführung in Nginx:

Nginx ist ein leistungsstarker http- und Reverse-Proxy-Server mit hoher Stabilität, der Hot-Deployment und einfache Modulerweiterung unterstützt. Wenn eine Zugriffsspitze auftritt oder jemand in böswilliger Absicht eine langsame Verbindung initiiert, ist es wahrscheinlich, dass der physische Speicher des Servers erschöpft ist und häufig ausgetauscht wird, was zu einem Antwortverlust führt. Der Server kann nur schrittweise neu gestartet werden Die Zuweisungstechnologie zur Verarbeitung statischer Dateien und die Cache-freie Reverse-Proxy-Beschleunigung sorgen für Lastausgleich und Fehlertoleranz und können in Situationen mit hohem Parallelitätszugriff einer Verarbeitung mit hoher Parallelität standhalten.

II. Nginx-Installation und -Konfiguration

Schritt 1: Laden Sie das Nginx-Installationspaket herunter

Schritt 2: Nginx unter Linux installieren

#tar zxvf nginx-1.7.8.tar.gz //解压

#cd nginx-1.7.8

#./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块

meldet einen fehlenden PCRE-Bibliotheksfehler, wie im Bild gezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Zu diesem Zeitpunkt , Führen Sie zuerst den dritten Schritt aus, um pcre zu installieren, und führen Sie ihn dann in 3 aus.

4.make && make install //Kompilieren und installieren

5 Testen Sie, ob die Installationskonfiguration korrekt ist. Nginx ist in /usr installiert /local/nginx

#/usr/local/nginx/sbin/nginx -t, wie im Bild gezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Schritt 3: PCre unter Linux installieren

#tar zxvf pcre-8.10.tar.gz //解压

cd pcre-8.10

./configure

make && make install//编译并安装

Drei. Nginx + Tomcat realisiert dynamische und statische Trennung

Dynamische und statische Trennung bedeutet, dass Nginx die vom Client angeforderten statischen Seiten (HTML-Seiten) oder Bilder verarbeitet und Tomcat die vom Client angeforderten dynamischen Seiten (JSP-Seiten) verarbeitet Die Effizienz der von Nginx verarbeiteten statischen Seiten ist höher als bei Tomcat.

Schritt eins: Wir müssen die Nginx-Datei konfigurieren

#vi /usr/local/nginx/conf/nginx.conf

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
 
events { 
  use epoll; 
  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; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    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; 
    } 
     <span style="color:#ff0000;"> location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}

Schritt zwei: Erstellen Sie eine neue statische index.html-Seite unter webapps/root unter Tomcat, Wie im Bild gezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Schritt 3: Starten Sie den Nginx-Dienst

#sbin/nginx Wie im Bild gezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Schritt 4: Unser Seitenzugriff kann normale Inhalte anzeigen, wie in gezeigt Das Bild wird angezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Schritt 5: Testen Sie die Leistung von Nginx und Tomcat bei der Verarbeitung statischer Seiten unter hoher Parallelität?

Verwenden Sie den Linux-Ab-Website-Stresstestbefehl, um die Leistung zu testen

1. Testen Sie die Leistung von Nginx bei der Verarbeitung statischer Seiten

ab -c 100 -n 1000

Das bedeutet, dass 100 Anfragen gleichzeitig verarbeitet und ausgeführt werden Index 1000-mal und 1000-maliges Ausführen der Datei index.html, wie in der Abbildung gezeigt:

Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Bei gleicher Verarbeitung statischer Dateien ist die statische Leistung der Nginx-Verarbeitung besser als die von Tomcat. Nginx kann 5388 Mal pro Sekunde Anfragen stellen, während Tomcat nur 2609 Mal Anfragen stellt.

Zusammenfassung: In der Nginx-Konfigurationsdatei weisen wir Nginx eine statische Konfiguration zur Verarbeitung und dynamische Anforderungen Tomcat zu, was die Leistung verbessert.


Vier. Lastausgleich und Fehlertoleranz von Nginx + Tomcat In diesem Fall kann nicht auf den Dienst zugegriffen werden, um Fehlertoleranzprobleme zu lösen.

Der erste Schritt: Wir haben den Tomcat-Server hier für zwei Tage bereitgestellt, 192.168.74.129:8081 und 192.168.74.129:8082Wie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen

Der zweite Schritt: Nginx wird als Proxyserver verwendet und der Lastausgleich wird verwendet, wenn der Client dies anfordert Der Server muss die Anforderungen verarbeiten, sodass die Client-Anfragen jeden Tag gleichmäßig auf die Server verteilt werden können, wodurch der Druck auf den Server verringert wird. Konfigurieren Sie die Datei nginx.conf unter nginx.

#vi /usr/local/nginx/conf/nginx.conf

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
 
events { 
  use epoll; 
  worker_connections 1024; 
} 
 
 
http { 
  include    mime.types; 
  default_type application/octet-stream; 
  log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39; 
           &#39;$status $body_bytes_sent "$http_referer" &#39; 
           &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;; 
 
  access_log logs/access.log main; 
  sendfile    on; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
<span style="color:#ff0000;">upstream localhost_server { 
    ip_hash; 
    server 192.168.74.129:8081; 
    server 192.168.74.129:8082; 
  }</span> 
 
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    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; 
    } 
     <span style="color:#ff0000;">location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;">proxy_pass http://localhost_server; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}

Anleitung:

1. Der Server im Upstream bezieht sich auf die IP (Domänenname) und den Port des Servers und kann auch verfolgt werden nach Parametern

1 )Gewicht: Legen Sie das Weiterleitungsgewicht des Servers fest. Der Standardwert ist 1.

2) max_fails: Wird in Verbindung mit fail_timeout verwendet. Dies bedeutet, dass der Server innerhalb des fail_timeout-Zeitraums nicht verfügbar ist, wenn die Anzahl der Serverweiterleitungsfehler den durch max_fails festgelegten Wert überschreitet 1

3)fail_timeout: Gibt an, wie oft die Weiterleitung innerhalb dieses Zeitraums fehlschlägt, bevor der Server als nicht verfügbar gilt.

4)down: Zeigt an, dass dieser Server nicht verfügbar ist.

5) Backup: Zeigt an, dass die ip_hash-Einstellung für diesen Server ungültig ist. Die Anfrage wird erst an den Server weitergeleitet, nachdem alle Nicht-Backup-Server ausgefallen sind.

2. Die ip_hash-Einstellung befindet sich auf dem Server des Clusters. Wenn dieselbe Client-Anfrage an mehrere Server weitergeleitet wird, kann jeder Server dieselben Informationen zwischenspeichern, was zu einer Verschwendung von Ressourcen führt Wenn der Client dieselben Informationen ein zweites Mal anfordert, werden sie an den Server weitergeleitet, der das erste Mal angefordert hat. Aber ip_hash kann nicht zusammen mit Gewicht verwendet werden.

Das obige ist der detaillierte Inhalt vonWie Nginx und Tomcat dynamische und statische Trennung und Lastausgleich erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen