Detaillierte Erläuterung der Konfigurationsmethode für den Lastenausgleich von Apache + Tomcat7 unter Windows

Detaillierte Erläuterung der Konfigurationsmethode für den Lastenausgleich von Apache + Tomcat7 unter Windows

Vorbereitung

Windows Server 2008 R2 Enterprise (2,40 GHz, 8 GB, 64 Bit, 192.168.10.212)
2 Ubuntu 10.04.4 (192.168.10.98, 192.168.10.137)
JDK1.7.80
Tomcat7.0.68
Apache 2.4.4

1. Installieren Sie Apache 2.4.4

Während des Installationsvorgangs gibt es nichts zu beachten, klicken Sie einfach immer wieder auf „Weiter“. Nach Abschluss der Installation ist der Apache-Dienst standardmäßig aktiviert. Sie können localhost oder 127.0.0.1 in den Browser eingeben und die Worte „Es funktioniert“ werden angezeigt.

2. Java-Umgebung

Es gibt viele Konfigurationen für Ubuntu im Internet, daher werde ich nicht ins Detail gehen, aber denken Sie daran, JAVA_HOME und PATH zu konfigurieren

3.Tomcat-Installation

Entpacken Sie es einfach in das Verzeichnis. Mein Verzeichnis ist /opt/tomcat7/. Ich habe es auf beiden Ubuntu-Systemen entpackt. Möglicherweise stoßen Sie auf das Problem unzureichender Berechtigungen. Zu diesem Zeitpunkt müssen Sie Befehle eingeben. Der einfachste und brutalste ist sudo chmod 777 directory. Aus Sicherheitsgründen sollten Sie die Autorisierung ordnungsgemäß vornehmen, daher werde ich es hier nicht erwähnen.

Konfiguration starten

Apache-Konfiguration

1. Öffnen Sie zunächst einige notwendige Modulkommentare (entfernen Sie einfach das #-Zeichen davor) in der Datei conf/httpd

Lademodul proxy_module module/mod_proxy.so
Lademodul proxy_ajp_module module/mod_proxy_ajp.so
Lademodul proxy_balancer_module module/mod_proxy_balancer.so
Lademodul proxy_connect_module module/mod_proxy_connect.so
Lademodul slotmem_shm_module module/mod_slotmem_shm.so
Lademodul lbmethod_byrequests_module module/mod_lbmethod_byrequests.so

Hier erwähne ich die letzten beiden. Ich habe nur die ersten geöffnet und Apache konnte nicht gestartet werden.

Ich habe das Protokoll überprüft und festgestellt, dass immer wieder der Fehler „Anbieter ‚shm‘ für ‚slotmem‘ konnte nicht gesucht werden: Ist mod_slotmem_shm geladen??“ gemeldet wurde. Ich habe nachgesehen und festgestellt, dass das Modul nicht aktiviert war. Wenn ich das #-Zeichen entfernt hätte, wäre der Fehler nicht gemeldet worden.

Ein weiterer Grund ist, dass der Fehler (22) Ungültiges Argument: AH01183: Balancer kann nicht freigegeben werden gemeldet wird. Nach dem Öffnen dieses Moduls wird der Fehler nicht mehr gemeldet.

2. Entfernen Sie die Kommentarzeichen bei „Virtuelle Hosts“ in der Datei „conf/httpd“

Entfernen Sie das # vor Include

3. Fügen Sie die Konfiguration in conf/extra/httpd-vhosts.conf hinzu

Lassen Sie mich zuerst meine eigene Konfiguration posten.

<VirtuellerHost *:80>
  ServerAdmin [email protected]
  ProxyPass / Balancer: // Cluster / Stickysession = JSESSIONID | jsessionid nofailover = Ein
  ProxyPassReverse / Balancer: // Cluster /
  Servername 192.168.10.212
  Fehlerprotokoll „logs/error.log“
  CustomLog "logs/access.log" allgemein
</VirtualHost>
ProxyRequests aus
<Proxy-Balancer://Cluster>
  BalancerMember ajp://192.168.10.98:8009 Auslastung=1 Route=jvm1 smax=5 max=20 ttl=120 Wiederholung=300 Timeout=15
  BalancerMember ajp://192.168.10.137:8009 Auslastung=1 Route=jvm2 smax=5 max=20 ttl=120 Wiederholung=300 Timeout=15
</Proxy>

ProxyPass: Ordnet den Remote-Server dem URL-Bereich des lokalen Servers zu

balancer:// : Proxy-Anweisungstyp

stickysession: Name der Sticky-Sitzung des Balancers. Dieser Wert wird häufig auf etwa JSESSIONID oder PHPSESSIONID eingestellt, abhängig vom Back-End-Anwendungsserver, der Sitzungen unterstützt. Wenn der Backend-Server unterschiedliche Cookie-Namen oder URL-codierte IDs verwendet (z. B. ein Servlet-Container), trennen Sie sie mit |. Der erste Teil ist für das Cookie, der zweite für den Pfad.

nofailover: Wenn auf „Ein“ gesetzt, wird die Sitzung sofort beendet, wenn der Worker deaktiviert wird oder ein Fehler auftritt. Sie können diesen Wert auf „Ein“ setzen, wenn der Back-End-Server keine Sitzungsreplikation unterstützt.

ProxyRequests: Wenn Sie die ProxyPass-Direktive verwenden, sollte die ProxyRequests-Direktive normalerweise deaktiviert werden.

BalancerMember: Balancer-Mitglied

loadfactor: Auslastungsfaktor der Arbeitseinheit. Wird für BalancerMember verwendet. Es handelt sich um eine Zahl zwischen 1 und 100, die die normalisierte Gewichtsbelastung dieses Arbeiters definiert.

Route: Die Route des Workers, die im Load Balancer verwendet wird. Die Route ist ein Wert, der an die Sitzungs-ID angehängt wird.

smax: Erstellen Sie nach Bedarf bis zur maximalen Anzahl von Links (Soft Maximum oder smax). Jedem Link, der die Smax-Zahl überschreitet, wird eine Lebensdauer oder TTL zugewiesen.

max: Der Standardwert ist die Anzahl der Threads pro Prozess im aktuellen MPM. Im Prefork MPM ist dieser Wert immer 1 und im Worker MPM wird dieser Wert durch ThreadsPerChild gesteuert.

ttl: Time To Live (TTL) für inaktive Links, die die maximale Anzahl an Verbindungen überschreiten, in Sekunden. Apache schließt während dieser Zeit alle Verbindungen, die nicht verwendet wurden.

Wiederholung: Das Timeout für den Wiederholungsversuch des Thread-Pool-Workers in Sekunden. Wenn der Thread-Pool-Worker-Status für den Backend-Server ein Fehler ist, sendet Apache keine Anfragen an den Server, bis das Timeout abgelaufen ist. Dadurch kann der Backend-Server zu Wartungsarbeiten heruntergefahren und später wieder online gebracht werden. Ein Wert von 0 bedeutet, dass bei einem Fehler immer ein erneuter Versuch des Workers ohne Wartezeit durchgeführt wird.

Timeout: Link-Timeout in Sekunden. Wenn nicht festgelegt, wartet Apache, bis eine Verbindung verfügbar ist. Diese Anweisung wird häufig zusammen mit dem Max-Parameter verwendet, um die Verbindungen zum Backend-Server zu begrenzen.

Dies ist fast die Konfiguration, starten Sie einfach den Apache-Dienst neu.

Hinweis: Wenn Sie localhost oder 127.0.0.1 eingeben, wird der Hinweis „Es funktioniert“ nicht mehr angezeigt. Stattdessen wird ein 503-Fehler gemeldet. Dies ist normal, da Apache jetzt die Lastausgleichsfunktion aktiviert und die Ziel-IP über AJP an Tomcat weitergeleitet hat, Tomcat jedoch noch nicht gestartet wurde.

Tomcat-Konfiguration

Nehmen wir als Beispiel den Server 192.168.10.98

Verwenden Sie Vim, um die Datei server.xml unter conf zu öffnen (wenn Sie Vim nicht kennen, verwenden Sie bitte Ihre Vorstellungskraft ╮(╯▽╰)╭). Der hier eingeführte Lastausgleich besteht darin, dass Apache über das AJP-Protokoll eine Verbindung mit Tomcat herstellt, sodass die in Apache konfigurierte Portnummer die Portnummer von AJP in Tomcat ist.

Darüber hinaus müssen Sie jvmRoute in Engine konfigurieren

 <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

Die jvmRoute entspricht hier der Route in Apache. (Ich habe das gerade entfernt und festgestellt, dass es immer noch funktioniert. Ich finde es großartig, aber es muss konfiguriert werden.)

Endlich,

 <Cluster-Klassenname="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

Diese Notiz öffnet

An diesem Punkt ist die Konfiguration abgeschlossen. Konfigurieren Sie es entsprechend auf 192.168.10.137.

Schreiben Sie eine kleine test.jsp zum Testen

<%@ Seite contentType="text/html;charset=UTF-8" %>
<%@ page import="java.util.*"%>
<html>
  <Kopf>
    <Titel>ApacheTomcatTest</Titel>
  </Kopf>
  <Text>
    <%
      out.println("<br> SITZUNGS-ID:" + session.getId() + "</br>");
    %>
  </body>
</html>

Erstellen Sie einen Balance-Ordner im Webapps-Verzeichnis von Tomcat, legen Sie test.jsp in den Ordner und starten Sie Tomcat.

Geben Sie abschließend 192.168.10.212/balance/test.jsp in den Browser ein
Sie werden feststellen, dass sich der Wert der SESSION ID zwischen zwei Zahlen geändert hat

Dies ist die Verkörperung des Lastausgleichs. Wenn Sie 192.168.10.212 eingeben, wird natürlich nicht „Es funktioniert“ angezeigt, sondern die klassische Tomcat-Homepage.

Übrigens basiert das oben genannte auf drei Servern

Weitere Informationen zur Lastenausgleichskonfiguration von Apache+Tomcat7 erhalten Sie unter den folgenden Links.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Konfigurationsmethode für die Bereitstellung von Apache-, WSGI- und Django-Programmen
  • Detaillierte Erläuterung der Apache-Website-Dienstkonfiguration basierend auf Linux
  • Detaillierte Erklärung zur korrekten Konfiguration von SSL (https-Zertifikat) in Apache unter Ubuntu
  • So konfigurieren Sie zwei oder mehr Sites mit dem Apache-Webserver
  • Installation, Aktivierung und Konfiguration von ModSecurity unter Apache
  • Tutorial zur Installation und Konfiguration des Apache-Webservers in CentOS 7
  • Alibaba Cloud Server Apache konfiguriert SSL-Zertifikate, um HTTPS erfolgreich zu aktivieren (verzeichnet verschiedene Fallstricke)
  • Lösung für den Fall, dass localhost nicht verfügbar ist, nachdem Apache unter Win10 den virtuellen Host konfiguriert hat
  • So konfigurieren Sie mehrere virtuelle Hosts lokal über Apache

<<:  Analyse der problematischen „Aborted“-Warnung in MySQL anhand von Fallstudien

>>:  Dieser Artikel hilft Ihnen, den Quellcode von PReact10.5.13 zu verstehen

Artikel empfehlen

Vue realisiert die Funktion zum Hochladen von Fotos auf den PC

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der Wissenspunkte zum B-Tree-Index bei der MySQL-Optimierung

Warum müssen wir SQL optimieren? Wenn wir SQL-Anw...

Wie die MySQL Select-Anweisung ausgeführt wird

Wie wird die MySQL-Select-Anweisung ausgeführt? I...

So installieren und konfigurieren Sie MySQL 5.7.19 unter CentOS 6.5

Die detaillierten Schritte zur Installation von m...

So verwenden Sie den Flat Style zum Gestalten von Websites

Das Wesen einer flachen Website-Struktur liegt in...

Installationshinweise zur komprimierten Version von MySQL 5.7.17

In diesem Artikel werden die Installationsschritt...

Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL

Manchmal müssen wir eine ganze Datenspalte aus ei...

In wenigen Schritten zum einfachen Aufbau eines Windows-SSH-Servers

Das hier erwähnte SSH heißt Security Shell. Ich g...

Transkript der Implementierung berechneter Vue-Eigenschaften

In diesem Artikel wird das Implementierungszeugni...

Implementierungscode zur Verwendung der MongoDB-Datenbank in Docker

Holen Sie sich das Mongo-Image sudo docker pull m...

5 Tipps zum Schreiben von CSS, um Ihren Stil standardisierter zu gestalten

1. CSS alphabetisch ordnen Nicht in alphabetischer...

Erläuterung zum Lastenausgleich und Reverseproxy von Nginx

Inhaltsverzeichnis Lastenausgleich Klassifizierun...

Verwenden Sie CSS, um einen kreisförmigen Welleneffekt zu erzielen

Auf Mobilgeräten sehe ich häufig kreisförmige Wel...

JS realisiert den Effekt der Baidu News-Navigationsleiste

In diesem Artikel wird der spezifische JS-Code zu...