English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
This article introduces the implementation of dynamic and static separation and load balancing between Nginx and Tomcat. So-called static and dynamic separation is to process static files such as images and html through nginx (or apache, etc.), and process dynamic files such as jsp and do through tomcat (or weblogic), so that static and dynamic page access is processed through different containers.
Part I: Introduction to Nginx:
Nginx is a high-performance HTTP and reverse proxy server with high stability and supports hot deployment. It is also very easy to extend modules. When faced with peak access or when someone maliciously initiates slow connections, it may also cause the server's physical memory to be exhausted frequently swapped, losing response, and can only restart the server. Nginx adopts a phased resource allocation technology, processes static files and uncached reverse proxy acceleration, achieves load balancing and fault tolerance, and can withstand high concurrency processing in such a high concurrency access situation.
Part II: Nginx Installation and Configuration
First step: Download the Nginx installation package http://nginx.org/en/download.html
Second step: Install Nginx on Linux
#tar zxvf nginx-1.7.8.tar.gz //Entpacken #cd nginx-1.7.8 #./configure --with-http_stub_status_module --with-http_ssl_module//Start the server status page and the https module
wird einen Fehler wegen fehlender PCRE Library ausgeben, wie im Diagramm gezeigt:
Zuerst führen Sie den dritten Schritt aus, um PCRE zu installieren, dann3Führen Sie dies aus, das ist alles
4.make && make install //Kompilieren und installieren
5. Überprüfen Sie, ob die Installation und Konfiguration korrekt sind, Nginx ist installiert in/usr/local/nginx
#/usr/local/nginx/sbin/nginx -t, wie im Diagramm gezeigt:
Schritt drei: Installieren Sie PCRE auf Linux
#tar zxvf pcre-8.10.tar.gz //Entpacken cd pcre-8.10 ./configure make && make install//Kompilieren und installieren
III. Nginx +Tomcat Implementierung der Trennung von dynamisch und statisch
Die Trennung von dynamisch und statisch bedeutet, dass Nginx die statischen Seiten (html-Seiten) oder Bilder des Clients verarbeitet und Tomcat die dynamischen Seiten (jsp-Seiten) des Clients verarbeitet, da die Effizienz der Verarbeitung statischer Seiten von Nginx höher ist als die von 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)$ //Static pages are handled by nginx/span> { root /usr/tomcat/apache-tomcat-8081/webapps/ROOT; expires 30d; //Caching to the client30 day } 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)$ {//All dynamic requests for jsp are handed over to Tomcat for processing</span> <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081; //Requests with the suffix of jsp or do are handed over to tomcat for processing</span> proxy_redirect off; proxy_set_header Host $host; //The backend web server can pass X-Forwarded-For obtaining the real IP of the user proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; //The maximum number of bytes of a single file that the client can request client_body_buffer_size 128k; //The maximum number of bytes of user request buffer that the buffer proxy can handle proxy_connect_timeout 90; //The timeout time for the connection between nginx and the backend server proxy_read_timeout 90; //The response time of the backend server after the connection is successful proxy_buffer_size 4k; //Set the buffer size for saving user header information of the proxy server (nginx) proxy_buffers 6 32k; //The proxy_buffers buffer, the average web page is32If the value is below k, set it like this proxy_busy_buffers_size 64k;//Under high load, the buffer size (proxy_buffers*2) proxy_temp_file_write_size 64k; //Die Größe des Cache-Verzeichnisses wird festgelegt. Wenn der Wert größer als dieser ist, wird der Inhalt vom upstream-Server übertragen } } }
Schritt zwei: Unter webapps im Tomcat/Unter ROOT eine statische index.html-Seite neu erstellen, wie im Diagramm gezeigt:
Schritt drei: Starten Sie den Nginx-Dienst
#sbin/nginx, wie im Diagramm gezeigt:
Schritt vier: Wir besuchen die Seitehttp://192.168.74.129/index.html kann das normale Inhalt normal anzeigen, wie im Diagramm gezeigt:
Schritt fünf: Wie gut handhaben Nginx und Tomcat die Leistung bei hoher Last bei der Verarbeitung statischer Seiten?
Wir haben den Linux-Befehl 'ab' für die Website-Lasttest verwendet, um die Leistung zu testen
1. Testen Sie die Leistung von Nginx bei der Verarbeitung statischer Seiten
ab -c 100 -n 1000 http://192.168.74.129/index.html
dies bedeutet, dass gleichzeitig10Anfragen und läuft ab10mal die index.html-Datei anfordern, wie im Diagramm gezeigt:
2. Testen Sie die Leistung von Tomcat bei der Verarbeitung statischer Seiten
ab -c 100 -n 1000 http://192.168.74.129:8081/index.html
dies bedeutet, dass gleichzeitig10Anfragen und läuft ab10mal die index.html-Datei anfordern, wie im Diagramm gezeigt:
gleiche statische Dateien zu verarbeiten, ist die Leistung von Nginx bei der Verarbeitung statischer Dateien besser als die von Tomcat. Nginx kann pro Sekunde5388mal, während Tomcat nur2609mal.
Zusammenfassung: Wir haben in der Nginx-Konfigurationsdatei die statische Verarbeitung an Nginx übergeben und die dynamischen Anfragen an Tomcat weitergeleitet, was die Leistung verbessert.
IV. Nginx +Tomcat Load Balancing und Fehlertoleranz
Unter hoher Last, um die Leistung des Servers zu verbessern, haben wir die Last pro Server reduziert und eine Cluster-Deployment verwendet, um den Fehlertoleranzproblem zu lösen, das auftritt, wenn ein einzelner Server ausfällt und der Service nicht zugänglich ist.
Schritt 1: Wir haben zwei Tomcat-Server eingerichtet.192.168.74.129:8081und192.168.74.129:8082
Schritt 2: Nginx dient als Proxy-Server und verwendet Load Balancing, um Anfragen von Clients an Server zu verarbeiten. Dies verteilt die Anfragen gleichmäßig auf jeden Server, um die Last auf den Servern zu reduzieren. 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 '$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; <span style="color:#ff0000;">upstream localhost_server { ip_hash; server 192.168.74.129:8081; server 192.168.74.129:8082; }</span>/span> server { listen 80 default; server_name localhost; <span style="color:#ff0000;">location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //Static pages are handled by nginx/span> { root /usr/tomcat/apache-tomcat-8081/webapps/ROOT; expires 30d; //Caching to the client30 day } 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)$ {//All dynamic requests for jsp are handed over to Tomcat for processing</span> <span style="color:#ff0000;">proxy_pass http://localhost_server; //Requests with the suffix of jsp or do are handed over to tomcat for processing</span> proxy_redirect off; proxy_set_header Host $host; //The backend web server can pass X-Forwarded-For obtaining the real IP of the user proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; //The maximum number of bytes of a single file that the client can request client_body_buffer_size 128k; //The maximum number of bytes of user request buffer that the buffer proxy can handle proxy_connect_timeout 90; //The timeout time for the connection between nginx and the backend server proxy_read_timeout 90; //The response time of the backend server after the connection is successful proxy_buffer_size 4k; //Set the buffer size for saving user header information of the proxy server (nginx) proxy_buffers 6 32k; //The proxy_buffers buffer, the average web page is32If the value is below k, set it like this proxy_busy_buffers_size 64k;//Under high load, the buffer size (proxy_buffers*2) proxy_temp_file_write_size 64k; //Die Größe des Cache-Verzeichnisses wird festgelegt. Wenn der Wert größer als dieser ist, wird der Inhalt vom upstream-Server übertragen } } }
Erklärung:
1.upstream中的server bezieht sich auf die IP (Domain) und den Port des Servers und kann auch Parameter hinterlegt werden
1)weight: Diese Einstellung legt die Übertragungsgewichtung des Servers fest. Der Standardwert ist1.
2)max_fails: Dies wird zusammen mit fail_timeout verwendet und bedeutet, dass, wenn die Anzahl der Fails des Servers während der fail_timeout-Zeitspanne die festgelegte Anzahl von max_fails überschreitet, dieser Server nicht verfügbar ist. Der Standardwert von max_fails ist1
3)fail_timeout: Dies bedeutet, dass die Anzahl der Fails, die während dieser Zeitspanne aufgetreten sind, erreicht wird, um zu entscheiden, dass dieser Server nicht verwendet werden kann.
4)down: Dies bedeutet, dass dieser Server nicht verwendet werden kann.
5)backup: Dies bedeutet, dass die ip_hash-Einstellung für diesen Server ungültig ist. Der Request wird nur an den Server weitergeleitet, wenn alle anderen nicht-reservierten Server ungültig sind.
2Die Einstellung ip_hash wird in Clustern von Servern verwendet. Wenn die gleiche Anfrage eines Clients an mehrere Server weitergeleitet wird, kann jeder Server dasselbe Information cached haben, was zu einer Verschwendung von Ressourcen führen kann. Die Einstellung ip_hash leitet die第二次相同信息的请求再次转发到第一次请求的服务器端。ip_hash kann jedoch nicht gleichzeitig mit weight verwendet werden.
Das ist der gesamte Inhalt dieses Artikels. Wir hoffen, dass er Ihnen bei Ihrem Lernen hilft und wir bitten Sie, die Anleitung mehr zu unterstützen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtlichem Eigentümer. Der Inhalt wurde von Internetbenutzern freiwillig und eigenständig hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Urheberrechtsinhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden von E-Mails zur Meldung von Verstößen und geben Sie relevante Beweise an. Bei nachgewiesenen Verstößen wird diese Website sofort den verdächtigen Inhalten entnehmen.)