Heim >Backend-Entwicklung >PHP-Tutorial >Nginx Tomcat-Konfigurationscluster

Nginx Tomcat-Konfigurationscluster

WBOY
WBOYOriginal
2016-08-08 09:20:13919Durchsuche

Dieser Artikel ist reproduziert von: http://os.51cto.com/art/201111/304608.htm

In diesem Artikel wird die Verwendung von Nginx in Windows XP und Ubuntu vorgestellt Umgebungen Und die Clusterkonfiguration von Tomcat erreicht endlich einen Lastausgleich.

AD:

Die entwickelte Anwendung verwendet den F5-Lastausgleichsschalter. F5 leitet die Anfrage an 5-PS-Unix-Server weiter Instanzen stellen externe Schnittstellendienste wie Webdienste und Sockets bereit. Am Anfang hatte ich eine kleine Frage: Warum nicht Open-Source-Apache- und Nginx-Software verwenden? Das Laden von F5-Geräten kostet oft Hunderttausende und ist teuer? Eine relativ naive Frage von mir, die ich später verstanden habe: F5 arbeitet auf der Transportschicht des IOS-Netzwerkmodells, während Nginx und Apache auf der HTTP-Reverse-Proxy-Methode basieren und in der siebten Anwendungsschicht des ISO-Modells angesiedelt sind. Um es ganz klar auszudrücken: Der Unterschied zwischen TCP-UDP- und http-Protokollen besteht darin, dass Nginx keinen Lastausgleich für Anwendungen bereitstellen kann, die auf TCP-Protokollen basieren.

Verstand die Unterschiede und Anwendungsszenarien zwischen den beiden und entwickelte ein starkes Interesse an Nginx. Lesen Sie Zhang Yans „Practical Nginx“ (dieser junge und vielversprechende junge Mann im Jahr 1985 ist neidisch + eifersüchtig) und verstehen Sie Allgemeine Prinzipien und Konfiguration: Ich habe versucht, den Nginx + Tomcat-Lastausgleich unter Ubuntu 10.10 und Windows zu konfigurieren. Es gab keine Konfiguration wie statische und dynamische Trennung, Bild-Hotlink-Verhinderung usw.

Nginx-Einführung

Nginx (ausgesprochen genauso wie Engine x) ist ein leichter Webserver/Reverse-Proxy-Server und E-Mail-Proxyserver (IMAP/POP3) und ist unter einer BSD-ähnlichen Lizenz veröffentlicht. Seine Merkmale sind, dass es weniger Speicher beansprucht und über starke Parallelitätsfähigkeiten verfügt. Tatsächlich sind die Parallelitätsfähigkeiten von Nginx unter Webservern desselben Typs besser. Zu den Benutzern von Nginx-Websites auf dem chinesischen Festland gehören derzeit: Sina, NetEase, Tencent und Andere bekannte Mikronetze, Plurk, verwenden ebenfalls Nginx.
Das Obige ist eine Einführung in Nginx, was im Grunde Unsinn ist. Eine Kombination aus Bildern und Text zeigt die Grundkonfiguration und die zweite ist die Ubuntu-Umgebung. Vbox virtuell).

Windows XP-Umgebung: Nginx+Tomcat6
1. Download-Adresse
http://nginx.org/en/download.html, hier Wir empfehlen, stabile Versionen herunterzuladen. Dieser Artikel verwendet nginx-0.8.20.

2. Verzeichnisstruktur Dokumente Dokumentverzeichnis |_ Protokolle Protokoll Verzeichnis
                                                                                                     in: D: Server-Verzeichnis, der unten beteiligte Tomcat wird ebenfalls in diesem Verzeichnis installiert.
In der DOS-Umgebung starten
Wenn Sie Nginx stoppen möchten, führen Sie den Befehl in der DOS-Umgebung aus: nginx -s stop


3. nginx.conf-Konfiguration

Die Die Standard-Nginx-Konfigurationsdatei befindet sich im Verzeichnis conf, die Hauptkonfigurationsdatei ist nginx.conf, wir haben sie in D:servernginx-0.8.20 installiert und die Standard-Hauptkonfigurationsdatei ist D:servernginx-0.8.20nginx.conf. Das Folgende ist die Konfiguration von Nginx als Front-End-Reverse-Proxy-Server.


Nginx.conf-Code

  1. #Benutzer und Gruppe, die von Nginx verwendet werden, nicht unter Fenster angegeben
  2. #Benutzer niumd niumd
  3. #Die Anzahl der funktionierenden Unterprozesse ( entspricht normalerweise der CPU. Die Anzahl oder das 2-fache der CPU)
  4. worker_processes 2;
  5. #Fehlerprotokollspeicher Pfad
  6. #error_log logs/error.log note;
  7. #PID zum Speichern von Dateien angeben
  8. pid logs/nginx.pid;
  9. Ereignisse {
  10. #Netzwerk-IO-Modell verwenden Linux empfiehlt epoll, FreeBSD empfiehlt die Verwendung von kqueue, nicht unter Windows angegeben.
  11. #use epoll;
  12. http {
  13. include mime.types;
  14. default_type application/octet -stream;
  15. Protokollformat definieren #log_format main
  16. '$remote_addr - $remote_user [$time_local] $request '
  17.                                                          
  18.                                                             
  19. #access_log off;
  20. access_log logs/access.log;
  21. client_header_timeout 3m; client_body_timeout 3m;
  22. send_timeout 3m; large_client_header_buffers
  23. 4k; 🎜>
  24. sendfile on; 🎜> tcp_nopush on; 🎜> tcp_nodelay on;
  25. include gzip.conf;
  26. upstream localhost {
  27. #Weisen Sie jedem Backend-Tomcat Anfragen basierend auf der IP-Berechnung zu ist möglich Tatsächlich kann es das Sitzungsproblem nicht lösen.
  28. #Bei mehreren Netzwerken kann derselbe Rechner beim Umschalten des Routings unterschiedliche IP-Adressen haben
  29. #ip_hash
  30. server localhost:18081;
  31. server localhost:18080;
  32. }
  33. server {
  34. listen 80;
  35. server_name localhost;
  36. location / {
  37. Proxy_connect_timeout
  38. 3
  39. ; Proxy_send_timeout 30 ;
  40. Proxy_read_timeout 30;
  41. Proxy_Pass http://localhost;                                                                       > } }
  42. Die Proxy-Einstellungen lauten wie folgt:
  43. Proxy.conf-Code:

  44. proxy_redirect off;
proxy_set_header $ host; > client_body_buffer_size 128k; >proxy_buffers

4

32k;

proxy_temp_file_write_size 64k ;

    gzip-komprimierungsbezogene Konfigurationen sind wie folgt:
  1. Gzip.conf-Code :
  2. gzip on
  3. gzip_min_length
  4. 1000
  5. ;
  6. 4. Tomcat-Konfiguration
  7. Jeder kennt Tomcat. Hier müssen wir nur die Konfigurationsdatei server.xml ändern. 6.0.14 als Beispiel. Dekomprimieren Sie es im Serververzeichnis und benennen Sie es: apache-tomcat-6.0.14_1, apache-tomcat-6.0.14_2.
  8. Die erste Portänderung:
  9. Xml-Code
  10. <
  11. Server
  12. Port
=

" 18006"

shutdown="SHUTDOWN"

    >
  1. Die zweite Portänderung: Xml-Code

<

ConnectorPort

=
    "18081"
  1. Protokoll=
  2. "HTTP/ 1.1"
  3.                                 🎜>connectionTimeout="20000"  redirectPort="8443"/> Die dritte Portänderung: Java-Code

    "8009"
  4. Protocol="AJP/1.3" RedirectPort=
  5. " 8443 „
  6. /> Engine-Element fügt jvmRoute-Attribut hinzu: Xml-Code

    <EngineName="Catalina"defaultHost="localhost"jvmRoute="tomcat1">

    Duplizieren Sie nicht die Ports der beiden Tomcats, um sicherzustellen, dass sie kann für eine Tomcat-Konfiguration gestartet werden, und der Überwachungsport ist 18080. Wir werden alle Konfigurationsinformationen im Anhang hochladen.

    5. Überprüfen Sie die Konfiguration und testen Sie den Lastausgleich

    Testen Sie zunächst, ob die Nginx-Konfiguration korrekt ist, Testbefehl: nginx -t (Standardüberprüfung: confnginx.conf), Sie können auch den Pfad der Konfigurationsdatei angeben.

    Zweitens Tomcat überprüfen, zwei Tomcats starten. Wenn kein Portkonflikt vorliegt, ist es erfolgreich (es gibt keinen Unsinn über das Java, von dem Tomcat abhängt, und andere werden „gekickt“);

    Überprüfen Sie abschließend die Konfiguration der Lastausgleichseinstellungen, http://localhost/ oder http://localhost/index.jsp. Ich habe die Seite index.jsp geändert und Protokollausgabeinformationen hinzugefügt, um die Beobachtung zu erleichtern. Hinweis: Auf dem Kopf des Kätzchens in der oberen linken Ecke: Zugang Tomcat2, Zugriff auf Tomcat1. Das bedeutet, dass auf verschiedene Tomcats zugegriffen wird.

    Damit wird die Nginx+Tomcat-Lastausgleichskonfiguration unter dem Fenster beendet. In Bezug auf die Tomcat-Sitzung besteht das Problem normalerweise darin, memcached oder nginx_upstream_jvm_route zu verwenden, ein Nginx-Erweiterungsmodul, das zur Implementierung des Cookie-basierten Session Sticky verwendet wird Funktion. Wenn zu viele Tomcats vorhanden sind, wird die Sitzungssynchronisierung nicht empfohlen. Die Synchronisierung von Sitzungen zwischen Servern verbraucht Ressourcen und Umgebungen mit hoher Parallelität können leicht zu Sitzungsstürmen führen. Bitte passen Sie die Sitzungslösung angemessen an Ihre eigene Anwendungssituation an.

    Ubuntu10.10-Umgebung: Nginx+Tomcat6

    Lassen Sie uns kurz darüber sprechen, wie Sie unter Ubuntu10.10 installieren und konfigurieren

    1. Laden Sie Nginx herunter

    Adresse: http://nginx.org/en/download.html, Linux-Version: nginx-0.8.20.tar. Dekomprimierungsbefehl:

    tar -zxvf nginx-0.8.20.tar.gz


    2. Kompilieren und installieren Sie Nginx

    Nginx-Abhängigkeit Einige andere PCRE und OpenSSL (abhängig von libssl-dev) wurden in meiner Notebook-Ubuntu-Umgebung installiert. Lassen Sie uns kurz darüber sprechen, wie man PCRE und OpenSSL usw. installiert >PCRE-Download-Adresse: ftp: //ftp.csx.cam.ac.uk/pub/software/programming/pcre/

    Shell-Code

    tar zxvf pcre-
      8.01
    1. .tar.gz cd pcre-
    2. 8.01
    3. sudo ./configure
    4. sodu make
    5. sodu make install
    6. openssl über apt-get install installiert

    sudo apt-get install openssl
    1. sudo apt-get install libssl-dev
    2. //Wenn andere Pakete fehlen, verwenden Sie bitte diese Methode, um sie zu installieren.
    3. Jetzt werden die abhängigen Softwarepakete installiert :

    Shell-Code

    #Kopieren Sie die Windows-Freigabeverzeichnissoftware in das aktuelle Arbeitsverzeichnis
    1. cp /mnt/fileshare/nginx-
    2. 0,8
    3. .20 .tar.gz ./
    4. #Entpacken Sie das Softwarepaket
    5. tar zxvf nginx-
    6. 0.8
    7. .20.tar.gz
    8. cd nginx-
    9. 0.8
    10. .20 // Quellcode kompilieren, standardmäßig niemanden verwenden, angeben, dass die Maschine existiert bereits. Der Benutzer und die Gruppe aktivieren die Nginx-Status-Funktion und überwachen den Nginx-Status. Starten Sie das Debuggen
    11. sudo ./configure --user=niumd --group=niumd --with-debug --with-http_stub_status_module
    12. sudo make
    13. sudo make install
    14. Die Kompilierung und Installation wird korrekt beendet Fenster, um die Standardkonfiguration zu überprüfen, dann nginx unter der Standardkonfiguration zu starten, besuchen Sie http://127.0.0.1

    Nachdem die Nginx-Konfiguration erfolgreich war, nehmen wir wie folgt einige Änderungen an nginx.conf unter dem Fenster vor :

    Ubuntu nginx.conf-Code

    1. #Benutzer und Gruppe, die von Nginx verwendet werden
    2. Benutzer niumd niumd;
    3. #Die Anzahl der funktionierenden Unterprozesse (normalerweise gleich der Anzahl von CPUs oder 2 Mal die CPU)
    4. worker_processes 2;
    5. #Fehlerprotokoll-Speicherpfad
    6. #error_log logs/error.log;
    7. #error_log logs/error.log note; #Geben Sie die PID an, um die Datei zu speichern
    8. pid logs/nginx.pid;
    9. events {
    10. #Bei Verwendung des Netzwerk-IO-Modells empfiehlt Linux epoll, FreeBSD empfiehlt kqueue
    11. use epoll;                             /octet-stream ;
    12. #Protokollformat definieren
    13. #log_format main
    14. '$remote_addr - $remote_user [$time_local] $request '
    15.                                                          
    16.                                                             
    17. #access_log off;
    18. access_log logs/access.log;
    19. client_header_timeout 3m; client_body_timeout 3m;
    20. send_timeout 3m;
    21. large_client_header_buffers
    22. 4k; 🎜>
    23. sendfile on; 🎜>
    24. tcp_nopush on; 🎜>
    25. tcp_nodelay on;
    26. include gzip.conf;
    27. upstream localhost { #ip_hash
    28. #ip_hash; server localhost:18081 ;
    29. server localhost:
    30. 18080
    31. ; >
    32. listen
    33. 80
    34. ;
    35. server_name localhost; 🎜>
    36. location / {
    37. proxy_connect_timeout
    38. 3
    39. ;
    40. proxy_send_timeout
    41. 30
    42. ;
    43. proxy_read_timeout 30;
    44. Proxy_Pass http://localhost;
    45.                                                                                               Für das IO-Netzwerkmodell wird empfohlen, epoll unter Linux zu verwenden, und der andere ist der Benutzer und die Gruppe, die für den Betrieb verwendet werden 🎜>
    46. 3. Tomcat konfigurieren
    47. Bitte beachten Sie die Konfiguration unter Fenster, die genau die gleiche ist.
    48. 4. Starten und Stoppen von Nginx
    49. Das Starten von Nginx unter Ubuntu unterscheidet sich geringfügig von dem unter Windows. Die allgemeine Start- und Stoppmethode ist wie folgt folgt.
    50. Java-Code
      1. #nginx目录执行 
      2. sbin/nginx 
      3. 或通过-c 指定配置文件 
      4. sbin/nginx -c usr/local/nginx8.20/conf/nginx/conf

      Shell代码

      1. niumd@niumd-laptop:/usr/local/nginx $ pwd 
      2. /usr/local/nginx 
      3. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -t 
      4. die Konfigurationsdatei /usr /local/nginx/conf/nginx.conf-Syntax ist in Ordnung 
      5. Konfigurationsdatei /usr/local/nginx/conf/nginx.conf-Test ist erfolgreich 
      6. niumd@niumd-laptop:/usr /local/nginx$ sudo sbin/nginx -v 
      7. Nginx-Version: nginx/0.8.20 
      8. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -V 
      9. Nginx-Version: nginx/0.8.20 
      10. erstellt von gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5)  
      11. Argumente konfigurieren: --user=niumd --group=niumd --with-debug --with-http_sub_module 
      12. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx  
      13. niumd@niumd-laptop:/usr/local/nginx$ ps -ef|grep nginx 
      14. root      5158     1  022:32 ?        00:00:00 nginx: Masterprozess sbin/nginx 
      15. niumd     5159  5158  022:32 ?        00:00:00 nginx: Worker-Prozess 
      16. niumd     5161  1577  022:32 Pkte/0    00:00:00 grep --color=auto nginx 
      17. niumd@niumd-laptop:/usr/local/nginx$  

      我们通过ps  -ef|grep nginx,看到如下结果:

      注意:在启动时linux提示一句警告【warn】……,是因为我们设置的 #允许最大连接数 worker_connections. 2048, 超过linux默认102 4的限制.

      停止:kill -信号类型 pid

      nginx/logs目录下有个nginx.pid的文件,此文件记录了每次运行的pid,也可以通过ps命令查询。

      信号类型如下:

      信号类型 描述
      RERM.INT 快速关闭
      HUP 平滑重启,加载配置
      USR1 重新加载日志
      USER2 平滑升级执行程序
      WINCH 从容关闭工作进程
      QUIT 从容关闭

    Die Verwendung von Nginx Tomcat ist eine vertrauenswürdige Lösung, die von PHP unterstützt wird.

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