nginx tomcat redis分散型webアプリケーションに基づくsession共有構成
5402 ワード
詳細
nginx tomcat redis分散型webアプリケーションに基づくsession共有構成
一、前言
nginxは現在最も流行しているオープンソース逆エージェントHTTP Serverとして、資源キャッシュ、web server負荷均衡などの機能を実現するために使用され、その軽量級、高性能、高信頼性などの特徴がインターネットプロジェクトにおいて非常に普遍的な応用があるため、関連概念はネット上で豊富に紹介されている.分散型web serverクラスタの導入後にセッション共有を実現する必要があり、tomcatサーバの実現案については、tomcat clusterセッションブロードキャスト、nginx IP hashポリシー、nginx sticky moduleなど、tomcatサーバを用いたセッション統合ストレージ管理の共有案を主に紹介した.
関連アプリケーション構造は次の図を参照してください.
二、環境配置
試験環境はLinux CentOS 6.5に基づいており、まずtomcat、redis、nginx関連環境をインストールしてください.詳細は説明しません.本試験の構成は以下の通りです.
三、tomcat-redis-session-manager-masterの構築
1、ソースコード構築はgradleに基づいているので、gradle環境を構成してください.
2、githubからtomcat-redis-session-manager-masterソースコードを取得し、アドレスは以下の通りである.
https://github.com/jcoleman/tomcat-redis-session-manager
3、ソースコードのbuildを見つける.gradleファイルは、著者がサードパーティ製倉庫(sonatype)を使用しているため、アカウントを登録する必要があり、面倒で、注釈後にmaven中央倉庫を直接使用すると同時に、注釈署名関連スクリプトを注釈し、パッケージ依存の出力スクリプトcopyJars(distディレクトリ)を追加し、修正後のbuild.gradleファイルは次のとおりです.
View Code
4、gradleコマンドを実行してソースコードを構築し、tomcat-redis-session-manager-masterと依存jarパッケージをコンパイル出力する
gradle build -x test copyJars
すべての出力リストファイルは次のとおりです.
四、tomcat構成
2台のtomcat Webサーバをインストールし、コネクタポート番号8080と9090をそれぞれ変更し、正常に動作していることを確認します.もちろん、異なるホストに分散している場合は同じポート番号を使用できます.
五、テストページの作成
2台のtomcatのアクセスを区別するために、それぞれページを作成し、配置をパッケージ化します.
1、tomcat_1テストページを作成し、「response from tomcat_1」を表示するとともに、ページ提供ボタンに現在のセッション値が表示され、tomcat_にパッケージ化され、パブリッシュされます.1サーバ;
2、tomcat_2テストページを作成し、「response from tomcat_2」を表示するとともに、ページ提供ボタンに現在のセッション値が表示され、tomcat_にパッケージ化され、パブリッシュされます.2サーバ;
この時点で個別にアクセスhttp://10.129.221.70:8080およびhttp://10.129.221.70:9090アドレスは、異なるウェブサーバにアクセスしているので、それぞれ異なるページ内容とセッション値を表示するのは間違いありません.
六、tomcat session manager配置
変更構成tomcat-redis-session-manager-masterをtomcat sessionマネージャとして使用する
1、ステップ3で生成したtomcat-redis-session-manager-masterおよびjarパッケージに依存してtomcatインストールディレクトリのlibフォルダに上書きする
2、tomcatのcontextを2台ずつ修正する.xmlファイルで、tomcat-redis-session-manager-masterをsessionマネージャとして使用し、redisアドレスとポートを指定します.
context.xmlは、次の構成を追加します.
3、tomcatサーバーをそれぞれ2台再起動する.
七、nginx配置
1、defaultを修正する.confプロファイル、upstream負荷等化tomcat Clusterを有効にし、デフォルトではポーリング方式を使用します.
2、nginx再ロード構成
nginx -s reload
八、テスト結果
1、アクセスhttp://10.129.221.70:8080tomcat_に直接要求1サーバ、
「response from tomcat_1」と表示され、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」である.
2、アクセスhttp://10.129.221.70:9090tomcat_に直接要求2サーバ、
「response from tomcat_2」と表示され、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」である.
3、アクセスhttp://10.129.221.70(デフォルト80ポート)nginx逆エージェントを指定したWebサーバに要求します.デフォルトではポーリング負荷方式が使用されているため、
ページ表示を繰り返しリフレッシュする内容は「response from tomcat_1」と「response from tomcat_2」の間で切り替わるが、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」に維持される.
4、redis-cliを使用してredisサーバーに接続し、「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」keyのセッションデータを表示し、valueはシーケンス化データである.
九、これによりnginx負荷等化に基づくtomcatクラスタのsession整合性が実現される.
nginx tomcat redis分散型webアプリケーションに基づくsession共有構成
一、前言
nginxは現在最も流行しているオープンソース逆エージェントHTTP Serverとして、資源キャッシュ、web server負荷均衡などの機能を実現するために使用され、その軽量級、高性能、高信頼性などの特徴がインターネットプロジェクトにおいて非常に普遍的な応用があるため、関連概念はネット上で豊富に紹介されている.分散型web serverクラスタの導入後にセッション共有を実現する必要があり、tomcatサーバの実現案については、tomcat clusterセッションブロードキャスト、nginx IP hashポリシー、nginx sticky moduleなど、tomcatサーバを用いたセッション統合ストレージ管理の共有案を主に紹介した.
関連アプリケーション構造は次の図を参照してください.
二、環境配置
試験環境はLinux CentOS 6.5に基づいており、まずtomcat、redis、nginx関連環境をインストールしてください.詳細は説明しません.本試験の構成は以下の通りです.
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
三、tomcat-redis-session-manager-masterの構築
1、ソースコード構築はgradleに基づいているので、gradle環境を構成してください.
2、githubからtomcat-redis-session-manager-masterソースコードを取得し、アドレスは以下の通りである.
https://github.com/jcoleman/tomcat-redis-session-manager
3、ソースコードのbuildを見つける.gradleファイルは、著者がサードパーティ製倉庫(sonatype)を使用しているため、アカウントを登録する必要があり、面倒で、注釈後にmaven中央倉庫を直接使用すると同時に、注釈署名関連スクリプトを注釈し、パッケージ依存の出力スクリプトcopyJars(distディレクトリ)を追加し、修正後のbuild.gradleファイルは次のとおりです.
View Code
4、gradleコマンドを実行してソースコードを構築し、tomcat-redis-session-manager-masterと依存jarパッケージをコンパイル出力する
gradle build -x test copyJars
すべての出力リストファイルは次のとおりです.
四、tomcat構成
2台のtomcat Webサーバをインストールし、コネクタポート番号8080と9090をそれぞれ変更し、正常に動作していることを確認します.もちろん、異なるホストに分散している場合は同じポート番号を使用できます.
五、テストページの作成
2台のtomcatのアクセスを区別するために、それぞれページを作成し、配置をパッケージ化します.
1、tomcat_1テストページを作成し、「response from tomcat_1」を表示するとともに、ページ提供ボタンに現在のセッション値が表示され、tomcat_にパッケージ化され、パブリッシュされます.1サーバ;
2、tomcat_2テストページを作成し、「response from tomcat_2」を表示するとともに、ページ提供ボタンに現在のセッション値が表示され、tomcat_にパッケージ化され、パブリッシュされます.2サーバ;
この時点で個別にアクセスhttp://10.129.221.70:8080およびhttp://10.129.221.70:9090アドレスは、異なるウェブサーバにアクセスしているので、それぞれ異なるページ内容とセッション値を表示するのは間違いありません.
六、tomcat session manager配置
変更構成tomcat-redis-session-manager-masterをtomcat sessionマネージャとして使用する
1、ステップ3で生成したtomcat-redis-session-manager-masterおよびjarパッケージに依存してtomcatインストールディレクトリのlibフォルダに上書きする
2、tomcatのcontextを2台ずつ修正する.xmlファイルで、tomcat-redis-session-manager-masterをsessionマネージャとして使用し、redisアドレスとポートを指定します.
context.xmlは、次の構成を追加します.
3、tomcatサーバーをそれぞれ2台再起動する.
七、nginx配置
1、defaultを修正する.confプロファイル、upstream負荷等化tomcat Clusterを有効にし、デフォルトではポーリング方式を使用します.
upstream site {
server localhost:8080;
server localhost:9090;
}
server {
listen 80;
server_namelocalhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
index index_tel.jspindex.jsp index.html index.htm ;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_buffers 32 4k;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://site;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_indexindex.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
2、nginx再ロード構成
nginx -s reload
八、テスト結果
1、アクセスhttp://10.129.221.70:8080tomcat_に直接要求1サーバ、
「response from tomcat_1」と表示され、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」である.
2、アクセスhttp://10.129.221.70:9090tomcat_に直接要求2サーバ、
「response from tomcat_2」と表示され、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」である.
3、アクセスhttp://10.129.221.70(デフォルト80ポート)nginx逆エージェントを指定したWebサーバに要求します.デフォルトではポーリング負荷方式が使用されているため、
ページ表示を繰り返しリフレッシュする内容は「response from tomcat_1」と「response from tomcat_2」の間で切り替わるが、session値は「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」に維持される.
4、redis-cliを使用してredisサーバーに接続し、「56 E 2 FAE 376 A 47 F 1 C 0961 D 722326 B 8423」keyのセッションデータを表示し、valueはシーケンス化データである.
九、これによりnginx負荷等化に基づくtomcatクラスタのsession整合性が実現される.