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関連環境をインストールしてください.詳細は説明しません.本試験の構成は以下の通りです.
 	 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整合性が実現される.