Heim > Backend-Entwicklung > PHP-Tutorial > Nginx Tomcat Redis implementiert die Sitzungsfreigabe

Nginx Tomcat Redis implementiert die Sitzungsfreigabe

WBOY
Freigeben: 2016-08-08 09:24:04
Original
1809 Leute haben es durchsucht

nginx 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 auf

Linux 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

 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

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-manager

3, 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 anzeigen

drucken?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.Archives

049 .//}

050.

051.task copyJars(type: Copy) {

052.from Configurations.runtime

053.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 Befehl

gradle 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

Konfiguration

Installieren und konfigurieren Sie zwei Maschinen Tomcat Web

Server, bzw. ändern Sie die

Connector 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

Taiwan

Tomcat 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 verschiedene

Webserver 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-master

Als Tomcat-Sitzung

Manager

1 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.4.host='localhost'

5.port='6379'

6.database='0'

7.maxInactiveInterval='60' />

8.

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 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 umleiten

34.#

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ört

41.#

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 übereinstimmt

58.#

59. #location ~ /.ht {

60.#    deny  alle;

61.#}

62.}

2nginx 重新加载配置

Quelle anzeigendrucken?

1.nginx -s reload

八、配置Tomcat

保存的

Sitzung实体是放到redis中,tomcat可以记录session-id值与redis 进行对比,session-id是从Cookie中取得的,不同的tomcat存储sessioncookie的位置是不同的,所以必须修改所有tomcatconf/context.xml,修改内容如下:

 sessionCookiePath="/">

九、测试结果

1、访问 http://10.129.221.70:8080 直接请求到tomcat_1服务器,

    显示

 “ 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

Sitzung

bleibt 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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage