Nginx Tomcat Redis implementiert die Sitzungsfreigabe
Aug 08, 2016 am 09:24 AMnginx Als derzeit beliebtester Open-Source-Reverse-Proxy HTTP-Server wird er zur Implementierung von Ressourcen-Caching, Webserver verwendet Lastausgleich und andere Funktionen werden aufgrund ihres geringen Gewichts, ihrer hohen Leistung, ihrer hohen Zuverl?ssigkeit und anderer Eigenschaften h?ufig in Internet--Projekten verwendet. Es gibt online umfangreiche Einführungen zu verwandten Konzepten. Nachdem der verteilte Webserver-Cluster bereitgestellt wurde, ist es notwendig, die Sitzungsfreigabe für die Implementierung von Tomcat Server Es gibt verschiedene L?sungen, wie z. B. Tomcat-Cluster-Sitzung Broadcast, Nginx-IP-HashStrategie, Nginx Sticky Module und andere L?sungen. In diesem Artikel wird haupts?chlich die Freigabel?sung für die Verwendung des Redis -Servers für Sitzung vorgestellt Einheitliche Speicherverwaltung.
Die relevante Anwendungsstruktur bezieht sich auf die folgende Abbildung: 2. Umgebungskonfiguration Die Testumgebung basiert aufLinux CentOS 6.5 , bitte installieren Sie zuerst Tomcat, Redis, Nginx verwandte Umgebungen wird in diesem Artikel nicht im Detail beschrieben. Die Testkonfiguration ist wie folgt:
Version
| IP_Port | ||||||||||||||||
nginx | 1.6.2 | 10.129.221.70:80 | |||||||||||||||
tomcat_1 | 7.0.54 | 10.129.221.70 :8080 | |||||||||||||||
tomcat_2 | 7.0.54 | 10.129.221.70:9090 | |||||||||||||||
redis | 2.8.19 | 10.129 .221.70:6379 |
3. Erstellen Sie tomcat-redis-session-manager-master
1 Da der Quellcode auf gradle, bitte konfigurieren Sie zuerst die gradle -Umgebung.
2, holen Sie sich tomcat-redis-session-manager-master von github Quellcode, die Adresse lautet wie folgt:
Quelle anzeigendrucken?
1. https://github.com/jcoleman/tomcat-redis-session-manager3, finden Sie build.gradle in der Quellcodedatei , da der Autor ein Drittanbieter-Warehouse (sonatype) verwendet, müssen Sie ein Konto registrieren, was zu mühsam ist. Verwenden Sie einfach mavenCentral Warehouse, w?hrend signaturbezogene Skripte mit Anmerkungen versehen und Ausgabeskripte für abh?ngige Pakete hinzugefügt werden copyJars (dist Verzeichnis), ge?ndert build.gradle Die Datei lautet wie folgt:
Quelle anzeigendrucken?001.apply-Plugin: 'java'
002.apply-Plugin: 'maven'
003. Plugin anwenden: 'signing'
004.group = 'com.orangefunction'
006.version = '2.0.0'
007.
008.repositories {
009.mavenCentral()
010.}
011.
012.compileJava {
013.sourceCompatibility = 1.7
014.targetCompatibility = 1.7
015.}
016.
017.dependencies {
018.compile-Gruppe: 'org.apache', Name: 'tomcat-catalina', Version: '7.0.27'
019.compile-Gruppe: 'redis.clients', Name: 'jedis', Version: '2.5.2'
020.compile-Gruppe: 'org.apache.commons', Name: 'commons-pool2', Version: '2.2'
021.//compile-Gruppe: 'commons-codec', Name: 'commons-codec', Version: '1.9'
022.testCompile-Gruppe: 'junit', Name: 'junit', Version: '4.+'
024.testCompile 'org.hamcrest:hamcrest-core:1.3'
025.testCompile 'org.hamcrest:hamcrest-library :1.3'
026.testCompile 'org ', Version: '7.0.27'
028.}
029.
030.task javadocJar(Typ: Jar, dependOn: javadoc) {
031.classifier = 'javadoc'
032.from 'build/docs/javadoc'
033.}
034.
035. Aufgabe QuellenJar(Typ: Jar) {
036 .from sourceSets.main.allSource
037.classifier = 'sources'
038.}
039.
040.artifacts {
041.archives jar
042.
043.archives javadocJar
044.archives resourcesJar
045.??>
046. 047.//Signing {048.// Sign Configurations.Archives049 .//}050.051.task copyJars(type: Copy) {052.from Configurations.runtime053.into ' dist' 054.}055.signPom(deployment) }060.//repository(url: '
https://oss.sonatype.org/service/local/staging/deploy/ maven2/
') {062.// Authentifizierung (Benutzername: sonatypeUsername, Passwort: sonatypePassword)063.//}064.//repository (url: '
https://oss.sonatype.org/content/repositories/snapshots
') {065.// Authentifizierung(Benutzername: sonatypeUsername, Passwort: sonatypePassword)066.//}067. 068.pom.project {
069.name 'tomcat-redis-session-manager'
070.packaging 'jar'071.description 'Tomcat Redis Session Manager ist eine Tomcat-Erweiterung zum Speichern von Sitzungen Redis'072.url 'https:// github.com/jcoleman/tomcat-redis-session-manager'
073 074.issueManagement {075.url 'https: //github.com
:jcoleman/tomcat-redis-session-manager/issues'076.system ' GitHub Issues'077.}078 081.connection 'scm:git:git://github.com/jcoleman/tomcat-redis-session-manager. git
'082.developerConnection 'scm:git:git@github.com:jcoleman/tomcat-redis-session-manager.git'
083.}
084 ??>085.licenses {
086.license {
087.name 'MIT'
088.url '
http://opensource.org/licenses /MIT'089.distribution 'repo'
090.}
091.}
092 093.developers {
094.developer {
095.id 'jcoleman'
096.name 'James Coleman'
097.email 'jtc331 @gmail.com'
098.url '
https://github.com/jcoleman'
099.}100.}
101.}
102.}
103.}
104.}
4, führen Sie den Befehlgradle aus, um den Quellcode zu erstellen, zu kompilieren und tomcat-redis-session-manager-master und Abh?ngigkeiten auszugeben GlasPaketQuelle anzeigen
Drucken?1.gradle build -x test copyJars Alle Ausgabelistendateien lauten wie folgt:
4.
Tomcat KonfigurationInstallieren und konfigurieren Sie zwei Maschinen Tomcat Web
Server, bzw. ?ndern Sie dieConnector Portnummern auf 8080 und 9090 und stellen Sie sicher, dass sie alle ordnungsgem?? funktionieren. Natürlich k?nnen Sie dieselbe Portnummer verwenden, wenn sie auf verschiedenen Hosts verteilt sind. 5. Schreiben Sie eine Testseite Um den Zugriff von
2 TaiwanTomcat Schreiben Sie die Seite und verpacken Sie sie für die Bereitstellung: 1, schreiben Sie eine Testseite für
tomcat_1, zeigen Sie "Antwort von Tomcat_1" an, und die Seite bietet eine Schaltfl?che zum Anzeigen des aktuellen Sitzungswerts, des Pakets und der Ver?ffentlichung in tomcat_1 Server; 2, schreiben Sie eine Testseite für
tomcat_2 , zeigt " Antwort von tomcat_2 " an, und die Seite bietet eine Schaltfl?che zum Anzeigen des aktuellen Sitzungs-Werts, Pakets und Ver?ffentlichen Sie es auf dem Server tomcat_2 . Besuchen Sie zu diesem Zeitpunkt http://10.129.221.70:8080 und http://10.129.221.70:9090
-Adresse, da auf verschiedeneWebserver zugegriffen wird, sodass jeder unterschiedliche Seiteninhalte anzeigt und Sitzung Werte müssen unterschiedlich sein. 6. tomcat session manager Konfiguration ?ndern Sie die Konfiguration mit
tomcat-redis-session-manager-masterAls Tomcat-Sitzung
Manager1 bzw. das im dritten generierte tomcat-redis-session-manager-master und Abh?ngigkeiten
jar Paket umfasst tomcat lib Ordner des Installationsverzeichnisses 2, entsprechend 2 ?ndern Taiwan
Tomcat s context.xml -Datei, verwenden Sie tomcat-redis-session-manager - Master dient als Sitzungsmanager und gibt au?erdem die Redis-Adresse und den Port an. context.xml Fügen Sie die folgende Konfiguration hinzu: Quelle anzeigen
Drucken ?
1.2.
3
, starten Sie jeweils
2
Stationen
Tomcat Server neu. 7. nginx Konfiguration1
, Standard ?ndern .conf Konfigurationsdatei, aktivieren Sie
Upstream Lastausgleich Tomcat-Cluster und verwenden Sie standardm??ig Polling. Quelle anzeigendrucken?
01.upstream site {ip_hash; //Verteilt basierend auf ip_hash
02.server localhost:8080;03.server localhost:9090; 04.} 05.
06.server {07.listen 80;08.server_name??localhost;
09.?
10.#charset?koi8-r;
11.#access_log??/var/log/nginx/log/host.access.log??main;
12.?
13.location?/?{
14.#root???/usr/share/nginx/html;
15.#index??index.html?index.htm;
16.index??index_tel.http://www.it165.net/pro/webjsp/"?target="_blank"class="keylink">jsp a>?index.http://www.it165.net/pro/webjsp/"target="_blank"?class="keylink">jsp?index.html?index.htm?;?
17.proxy_redirect??????????off;???
18.proxy_set_header????????Host????????????$host;???
19.proxy_set_header????????X-Real-IP???????$remote_addr;???
20.proxy_set_header????????X-Forwarded-For?$proxy_add_x_forwarded_for;???
21.client_max_body_size????10m;???
22.client_body_buffer_size?128k;???
23.proxy_buffers???????????32?4k;?
24.proxy_connect_timeout???3;???
25.proxy_send_timeout??????30;???
26.proxy_read_timeout??????30;??
27.proxy_pass?http://site;
28.?
29.??>
30.?31.#error_page??404??????????????/404.html;32.?33.#?Serverfehlerseiten?zur?statischen?Seite?/50x.html umleiten34.#35.error_page???500?502?503?504??/50x.html;36.location?=?/50x.html?{37.root???/usr/share/nginx/html;38.}39.?40.#?Proxy?der?PHP-Skripte?an?Apache, der?auf?127.0.0.1:80?h?rt41.#42.#location?~?.php$?{43.#????proxy_pass???http://127.0.0.1;44.#}45.?46.#?übergeben?die?PHP-Skripte?an den?FastCGI-Server, der?127.0.0.1:9000 überwacht.47.#48.#location?~?.php$?{49.#????root???????????html;50.#????fastcgi_pass???127.0.0.1:9000;51.#????fastcgi_index??index.php;52.#????fastc gi_param??SCRIPT_FILENAME /scripts$fastcgi_script_name;53.#????include????????fastcgi_params;54.#}55.?56.#?Zugriff?auf?.htaccess-Dateien verweigern,?wenn?Apaches?Dokumentstammverzeichnis?57.#?mit?nginx?übereinstimmt58.#59. #location?~?/.ht?{60.#????deny??alle;61.#}62.}
2、nginx?重新加載配置
Quelle anzeigendrucken?
1.nginx?-s?reload八、配置Tomcat保存的Sitzung實體是放到redis中,tomcat可以記錄session-id值與redis 進行對比,session-id是從Cookie中取得的,不同的tomcat存儲sessioncookie的位置是不同的,所以必須修改所有tomcat中conf/context.xml,修改內(nèi)容如下:
1、訪問?http://10.129.221.70:8080?直接請求到tomcat_1服務(wù)器,
顯示?“?Antwort?von?tomcat_1?”,?Sitzung?值為'56E2FAE376A47F1C0961D722326B8423';
2, besuchen Sie http://10.129.221.70:9090 Anfragen direkt an tomcat_2 Server,
Anzeige ?Antwort von Tomcat_2“ , Sitzung Wert ist '56E2FAE376A47F1C0961D722326B8423'; ??> (Standardport
80) Anfragen an nginx Reverse-Proxy zum angegebenen Web Der Server ist aufgrund der standardm??igen Polling-Lademethode Der durch wiederholtes Aktualisieren der Seite angezeigte Inhalt ist in " Antwort von tomcat_1 " und "Antwort von Tomcat_2 " wechselt zwischen, aber der Wert für
Sitzungbleibt bei '56E2FAE376A47F1C0961D722326B8423'; 4, verwenden Sie redis-cli , um eine Verbindung herzustellen Auf dem
Redis-Server wird in der Ansicht ?There is "56E2FAE376A47F1C0961D722326B8423" key of session Daten und Wert sind serialisierte Daten. 10. Bisher Sitzung basierend auf nginx Load Balancing Tomcat Cluster realisiert
Konsistenz. Startsequenz: redis——nginx——tomcat
redisStartskript=/usr/locat/redis.2.0.1/src/redis-servernginx+tomcat+redis realisiert die Sitzungsfreigabe Das Obige stellt die Nginx-Tomcat-Redis-Implementierung der Sitzungsfreigabe vor, einschlie?lich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Das Aktualisieren der Tomcat -Version im Debian -System enth?lt im Allgemeinen den folgenden Vorgang: Vor der Durchführung des Update -Vorgangs stellen Sie sicher, dass Sie die vorhandene Tomcat -Umgebung vollst?ndig erfüllen. Dies deckt den Ordner /opt /tomcat und seine zugeh?rigen Konfigurationsdokumente wie Server.xml, context.xml und web.xml ab. Die Sicherungsaufgabe kann über den folgenden Befehl ausgeführt werden: SudoCP-R/Opt/Tomcat/Opt/tomcat_backup erhalten Sie die neue Version Tomcat, um die offizielle Website von Apachetomcat zu erhalten, um die neueste Version herunterzuladen. Laut Ihrem Debian -System

Linux -System beschr?nkt die Benutzerressourcen durch den Befehl ulimit, um eine überm??ige Verwendung von Ressourcen zu verhindern. 1.ulimit ist ein integrierter Shell-Befehl, mit dem die Anzahl der Dateideskriptoren (-n), die Speichergr??e (-V), die Threadzahl (-U) usw. begrenzt werden kann, die in Soft Limit (aktueller effektiver Wert) und hartem Grenze (maximale Obergrenze) unterteilt sind. 2. Verwenden Sie den Befehl ulimit direkt zur vorübergehenden ?nderung, wie z. B. Ulimit-N2048, ist jedoch nur für die aktuelle Sitzung gültig. 3. Für den dauerhaften Effekt müssen Sie /etc/security/limits.conf- und PAM -Konfigurationsdateien ?ndern und SessionRequiredpam_Limits.so hinzufügen. 4. Der SystemD -Dienst muss Lim in der Einheitsdatei einstellen

Java Middleware ist eine Software, die Betriebssysteme und Anwendungssoftware verbindet und allgemeine Dienste bietet, um Entwicklern dabei zu helfen, sich auf die Gesch?ftslogik zu konzentrieren. Zu den typischen Anwendungen geh?ren: 1. Webserver (wie Tomcat und Jetty), das HTTP -Anforderungen abwickelt; 2. Meldungswarteschlange (wie Kafka und Rabbitmq), die die asynchrone Kommunikation behandelt; 3. Transaktionsmanagement (z. B. Springtransaction), das die Datenkonsistenz gew?hrleistet; 4. Orm Framework (wie Hibernate und MyBatis), was die Datenbankvorg?nge vereinfacht.

Die Seiten -Caching -Strategie von Laravel kann die Leistung der Website erheblich verbessern. 1) Verwenden Sie Cache -Helferfunktionen, um das Seiten zwischen Seiten zu implementieren, wie z. 2) W?hlen Sie das entsprechende Cache -Backend wie Redis aus. 3) Achten Sie auf Probleme mit der Datenkonsistenz und Sie k?nnen feink?rnige Caches oder Event-H?rer verwenden, um den Cache zu l?schen. 4) Die weitere Optimierung wird mit Routing -Cache-, Ansichts -Cache- und Cache -Tags kombiniert. Durch die rationale Anwendung dieser Strategien kann die Leistung der Website effektiv verbessert werden.

Das Konfigurieren von Tomcats Speicher im Debian -System beinhaltet normalerweise die ?nderung von Tomcats Startup -Skript Catalina.sh. Hier sind einige Tipps zur wichtigen Speicherkonfiguration: ?ndern Sie die Datei catalina.sh, um die Datei /usr/share/tomcat9/bin/catalina.sh zu ?ffnen (der Pfad kann je nach Tomcat -Version variieren). Fügen Sie die folgende Konfiguration oben in der Datei hinzu: exportjava_opts = "-xms512m-xmx1024m-xx: maxmetaspaceSize

RediSISunique-komparedTotraditionalsqldatabaseSInseveralways: 1) ItoperatePliminalinmemory, EnablingFasterReadandWriteoperations.2) ituSeSaflexibleKey-valedatamodel, unterstützend variousDatatypeslikestringsandsets Sets.3) RedissisSsets

Zu den Schritten zur Fehlerbehebung und Reparatur von Redis-Master-Slave-Replikationsfehlern geh?ren: 1. überprüfen Sie die Netzwerkverbindung und verwenden Sie Ping oder Telnet, um die Konnektivit?t zu testen; 2. überprüfen Sie die Redis-Konfigurationsdatei, um sicherzustellen, dass die Replikation und die Wiederholungs-Timeout korrekt eingestellt sind. 3. überprüfen Sie die Redis -Protokolldatei und finden Sie Fehlerinformationen. 4. Wenn es sich um ein Netzwerkproblem handelt, starten Sie das Netzwerkger?t neu oder wechseln Sie den alternativen Pfad. 5. Wenn es sich um ein Konfigurationsproblem handelt, ?ndern Sie die Konfigurationsdatei. 6. Wenn es sich um ein Problem mit der Datensynchronisierung handelt, verwenden Sie den Befehl slaveof, um die Daten neu zu synchronisieren.

Die Schnellpositions- und Verarbeitungsschritte für den Fehler mit Redis -Cluster -Knoten sind wie folgt: 1. Best?tigen Sie den Fehler: Verwenden Sie den Befehl cluSernodes, um den Knotenstatus anzuzeigen. Wenn der Fehler angezeigt wird, f?llt der Knoten aus. 2. Ermitteln Sie die Ursache: überprüfen Sie das Netzwerk, die Hardware und die Konfiguration. Zu den h?ufigen Problemen geh?ren Ged?chtnisgrenzen, die überschritten werden. 3. Reparatur und Wiederherstellung: Treffen Sie Ma?nahmen, die auf den Gründen basieren, z. B. das Neustart des Dienstes, das Ersetzen der Hardware oder das ?ndern der Konfiguration. 4. Hinweise: Stellen Sie die Datenkonsistenz sicher, w?hlen Sie geeignete Failover -Richtlinien und stellen Sie die überwachungs- und Alarmsysteme fest.
