|
Version
|
IP_Port
|
nginx
|
1.6.
| 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. tomcat-redis-session-manager-master
1をビルドします。ソースコードはgradleをベースに構築されているため、最初にgradleの環境を設定してください。
2、github からtomcat-redis-session-manager-masterのソースコードを取得します。アドレスは次のとおりです:
ソースを表示print ?
1. https://github.com/jcoleman/tomcat-redis-session-manager
3、作成者が 3 番目のファイルを使用しているため、ソース コード内で build.gradle ファイルを見つけます。 -party ウェアハウス (sonatype)、アカウントを登録する必要がありますが、面倒です。コメントした直後に maven セントラル ウェアハウスを使用し、署名関連のスクリプトをコメントし、その出力スクリプトを追加するだけです。依存パッケージcopyJars (distディレクトリ)、変更されたbuild.gradleファイルは次のとおりです:
ソースを表示print?
001.a 適用プラグイン: 'java'
002.apply プラグイン: 'maven'
003.app ly プラグイン: 'signing'
004.
005.group = 'com.orangefunction'
006.version = '2.0.0 '
007.
008.repositories {
009.mavenCentral()
01 0. }
012.compileJava {
013.sourceCompatibility = 1.7
014.targetCompatibility = 1.7
015.}
016.
017.dependency {
018.compile グループ: 'org.apache.tomcat'、名前: 'tomcat-catalina'、バージョン: '7.0.27'
019.compile グループ: 'redis.clients'、名前: 'jedis'、バージョン: '2.5.2'
020。コンパイルグループ: 'org.apache.commons'、名前: 'commons-pool2'、バージョン: '2.2'
021 .//コンパイル グループ: 'commons-codec'、名前: 'commons-codec'、バージョン: ' 1.9'
022.testCompile グループ: 'junit'、名前: 'junit'、バージョン: '4 .+'
024.testCompile 'org.hamcrest:hamcrest-core:1.3'
025.testCompile 'org.hamcrest:hamcrest-library:1.3'
026.testCompile 'org.mockito:mockito-all:1.9 .5'
027.testCompile グループ: 'org.apache.tomcat'、名前: 'tomcat-coyote'、バージョン: '7.0.27'
028.}
030.task javadocJar(type : Jar、dependsOn: javadoc) {
031.classifier = 'javadoc'
032.from ' build/docs/javadoc'
033.}
034.tasksourcesJar(type: Jar) {
036.fromsourceSets.main.allSource
037.classifier = 'sources'
038. }
040.artifacts {
041.archives jar
042.
043.archives javadocJar
044.archivessourcesJar
045.}
047.//signing {
048.// 署名configurations.archives
049.//}
050. 51.タスクコピーJar (タイプ: コピー) {
052.fromconfigurations.runtime
053.into 'dist'
054.}
055.
056.uploadArchives {
057.repositories {
058.mavenDepロイアー
059.beforeDeployment { MavenDeployment デプロイメント -> signed.sign Pom(デプロイメント)} 061.//repository(url: 'https://oss.sonatype.org/service/local/staging/デプロイ/maven2/
') {062.// 認証(ユーザー名: sonatypeユーザー名、パスワード: sonatypePassword) 063.//}064.//repository(url: 'https://oss.sonatype .org/content/repositories/snapshots
') {065.// 認証(ユーザー名: sonatypeUsername, パスワード: sonatypePassword)066.//}067. 068.pom.project {
069 .name 'tomcat-redis-session-manager'070.packaging 'jar'071.description 'Tomcat Redis Session Manager は、Redis にセッションを保存するための Tomcat 拡張機能です'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 の問題'077.}079 .scm {080.url 'https://github.com
:jcoleman/tomcat-redis-session -manager'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.}
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 gradle
ソースコードをビルドし、コンパイルして出力するコマンド tomcat-redis-session-manager-master
と依存関係
jar
パッケージ
ソースを表示する
print
?1.gradle build -x test co pyJars すべての出力リストファイルは次のとおりです: IV. tomcat Configuration 2つのtomcat webサーバーをそれぞれインストールして構成します。
ポート番号を 8080 と 9090
に接続し、異なるホストに分散されている場合は、同じポート番号を使用できることを確認します。
5. テストページを書く 2station
tomcatのアクセスを区別するために、ページを個別に書いてデプロイ用にパッケージ化します: 1、テストを書きますtomcat_1のページ、「tomcat_1からの応答」を表示し、このページには現在の
セッションの値を表示し、パッケージ化してtomcat_1サーバーに公開するためのボタンが提供されます。 2、
用 tomcat_2によって書かれました テストページには「tomcat_2からの応答」が表示され、ページには現在のセッションの値を表示し、パッケージ化して、 tomcat_2 サーバー; 現時点では、http:// 10.129.221.70:8080 と
http://10.129.221.70:9090 にアクセスします。 ウェブ サーバーなので、それぞれ異なるページのコンテンツと セッション の値が異なります。 6. tomcat セッションマネージャー構成 構成を変更し、tomcat-redis-session-manager-master を
tomcat セッションmanager として使用します。 1、それぞれ3 つの手順で生成された tomcat-redis-session-manager-master と依存する jar パッケージは、
tomcat の lib
フォルダー 2 に含まれています。 インストールディレクトリ 、2
ステーションtomcatのcontext.xmlファイルをそれぞれtomcat-redis-session-manager-masterをsesとして使用するように変更します。しおんマネージャー。 redis アドレスとポートを同時に指定します。
context.xml 次の構成を追加します: ソースを表示print?1.2.3.4.host='localhost'5.port='6379'6.database ='0'7.maxInactiveInterval='60' />
8.3、それぞれ
2ステーションtomcatサーバーを再起動します。
Seven、nginx
を構成する
1
、
default.conf を変更する
構成ファイルを有効にする
アップストリーム ロードバランシング クラスター 、ポーリング モードがデフォルトで使用されます。 ソースを見るprint
?01.upstream site {
ip_hash; //based ip_hashdistribution 02.server localhost:80 80;03.サーバーローカルホスト :9090;04.} 05.06.server {
07.listen 80;
08.サーバー名 ローカルホスト;
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.jsp インデックス。jsp インデックス.html インデックス.htm ;
17.proxy_redirect オフ;
18.proxy_set_header ホスト $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.# サーバーエラーページを静的ページ/50x.htmlにリダイレクトします
34.#
35.error_page 500 502 503 504 /50x.html;
36.location = /50x.html {
37 .root /usr/share/nginx/html;
38.}
39.
40.# PHP スクリプトを 127.0.0.1:80でリッスンする Apache にプロキシします
41.#
42.#location ~ .php$ {
43.# proxy_pass http://127.0.0.1;
44.#}
45.
46.# PHP スクリプトを 127.0.0.1:9000をリッスンするFastCGI サーバーに渡します
47.#
48.#location ~ .php$ {
49.# root html;
50.# fastcgi_pass 127.0 .0.1:9000;
51.# fastcgi_index index.php;
52.# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
53.# include fastcgi_params;
54.#}
55.
56.# Apache のドキュメント ルートが nginx の root と一致する場合、.htaccess ファイルへのアクセスを拒否します
58.#
59.#location ~ /.ht {
60.# 拒否すべて;
61.#}
62.}
2、nginx 重新規追加配置
ソースを表示print?1.ng inx -s reload
八、構成Tomcat
保存された
session实体はredis中に解放されており、tomcatは记录session-id值与redis 実行对比,セッションID はcookie内で取得されており、異なるtomcatが保存されているsessioncookieの位置が異なるため、すべてのtomcat内を変更する必要がありますconf/context.xml 、修正内容は以下の通り: sessionCookiePath="/"
>九、测试結果
1
、访问 http://10.129.221.70 :8080 直接リクエスト到tomcat_1服务器、 显示 “tomcat_1からの応答”
、セッション值は '56E2FAE376A 47F1C0961D722326B8423';
2、http://10.129.221.70:9090にアクセスtomcat_2server、に直接リクエスト
「tomcat_2からの応答」を表示 、セッションの値は'56E2FAE376A47F1C0961D722326B8423'、
3にアクセスしてくださいhttp://10.129.221.70 (デフォルト) 80port) nginx へのリクエスト 指定された へのリバースプロキシWebサーバーは、デフォルトのポーリングロード方式により、 ページを繰り返し更新することで表示される内容は「tomcat_1からの応答」
と「tomcat_2からの応答」の間で切り替わりますが、セッション値は'56E2FAE376A47F1C0961D722326B8423'のままです。4
を使用して接続します redis サーバー、"56E2FAE376A47F1C0961D722326B8423" があることが表示されますkey session data、value はシリアル化されたデータです。 10. この時点で、nginxロードバランシングに基づくtomcat
クラスターのセッションの整合性が達成されています。 起動シーケンス: redis——nginx
——tomcatredis起動スクリプト=/usr/locat/redis.2.0.1/src/redis-server nginx+tomcat+redisでセッション共有を実現
上記は、セッション共有を実現するための nginx+tomcat+redis を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。