httpd逆世代+tomcat cluster+redisセッション保持


バージョンの説明:
httpバージョン:2.4.6
tomcatバージョン:7.0.69
dedisバージョン:3.2.3
OSバージョン:CentOS Linux release 7.3.1611
トポロジー:
                                                           tomcat-A/192.168.1.106        
クライアント-->httpd逆エージェント--->redisセッション保持サーバ
                      192.168.1.101               tomcat-B/192.168.1.107                  192.168.1.100
 
httpd逆エージェント:
httpサービスのインストール
yum -y install  httpd

httpdの逆エージェントの実装には、3つのmodulesのサポートが必要です.
mod_proxy.so 
mod_proxy_http.so 
mod_proxy_balancer.so

proxy構成の編集
cat  /etc/httpd/conf.d/tomcat-proxy.conf

        balancermember http://192.168.1.106:8080
        balancermember http://192.168.1.107:8080
        proxyset lbmethod=byrequests   #    ,      ,     



        servername lb.tomcat.com
        proxyvia on
        proxyrequests off
        proxypreservehost on
        
                require all granted
        
        proxypass / balancer://tcsrvs/
        proxypa***everse / balancer://tcsrvs/
        
                require all granted
        

tomcatサーバ構成:
対応するパッケージのインストール
java-1.8.0-openjdk 
tomcat  
tomcat-lib 
tomcat-admin-webapps 
tomcat-webapps
tomcat-docs-webapp

テストファイルの準備
mkdir /usr/share/tomcat/webapps/test/

tomcat-A:
cat /usr/share/tomcat/webapps/test/index.jsp                                                       

TomcatA

TomcatA.com

Session ID
Created on
tomcat-B:
cat /usr/share/tomcat/webapps/test/index.jsp      
TomcatB

TomcatB.com


Session ID
Created on
その後tomcatサービスを開始します
systemctl  start tomcat.service

ブラウザでテストhttp://192.168.1.101/test/
以上はhttpdスケジューリングバックエンドtomcatホストの要件を完了しただけです
クライアントがアクセスすると、会話情報の変更を望んでいません.考えてみてください.あなたは電子商取引サイトで注文しました.それからページスケジューラを更新して、あなたの要求を別の機械にスケジューリングしました.注文がなくなりました.どう思いますか.したがって,このような現象を回避するために,クッキー情報を設定することでセッションをバインドする.
httpサーバ構成:
cat tomcat-proxy.conf  
        header add set-cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED 
        #  cookie  

        balancermember http://192.168.1.106:8080 route=tomcatA loadfactor=1
        balancermember http://192.168.1.107:8080 route=tomcatB loadfactor=1
        proxyset lbmethod=byrequests
        proxyset stickysession=ROUTEID   #         cookie

#route   tomcat jvmRoute  

        servername lb.tomcat.com
        proxyvia on
        proxyrequests off
        proxypreservehost on
        
                require all granted
        
        proxypass / balancer://tcsrvs/
        proxypa***everse / balancer://tcsrvs/
        
                require all granted
        

tomcatホスト構成:
vim server.xml 

#  tomcat  ,jvmRoute        

tomcatBホストでも同様の変更を行います
上記を完了するとクッキーベースのセッションスティッキーを実現でき、ブラウザでテストhttp://192.168.1.101/test/同じホストに移動するだけで、このホストの障害が発生すると別のホストにスケジュールされます.
上記のクッキーベースのセッションスティッキーには、クライアントがクッキーベースでバックエンドサーバAにアクセスし、Aホストが故障するとhttp dはBホストに再スケジュールされるが、Bには以前のセッション情報がないため、クライアントの閲覧記録、注文状況などの情報は消えてしまうという問題がある.
tomcatクラスタと個別のキャッシュサーバredisを使用して上記の問題を解決できます.tomcatクラスタはホストの単一の障害問題を解決し、tomcatホストではなくキャッシュサーバにセッション情報を個別に保存します.
ただしredisは、単一の問題を回避するためにも高可用性を行う必要があります.ここでは、セッションキャッシュ機能を実現できればいいです.高利用者だけが興味を持って自分で研究することができます
セッションサーバを構成するとクッキー情報を使わずにhttpd構成のクッキー構成を削除します
 vim tomcat-proxy.conf 
 header add set-cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
 proxyset stickysession=ROUTEID
 #           ,      

tomcatホスト構成クラスタ:
cat server.xml  
# Engine         

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

以上の内容は多くて、直接コピーすることができて、いかなる修正をしなくて、2台のホストはすべて配置します
リファレンス接続http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html 
注意公式サイトのテンプレートの構成には2つのエラーがあります.
 
 
 #               /

そしてwebを変更します.xml
cat web.cml
 
#    tomcat      

redisをインストールし、設定する
yum -y install redis 
vim /etc/redis.conf
bind 0.0.0.0
#        ,       tcp6379

その後redisサービスを開始します
次にtomcatホストを構成し、そのうちの1台を例に、もう1台もこのように構成します.
cat context.xml   #      
 
 
#192.168.1.100 redis   

jarパッケージ、3つのjarパッケージを準備し、そのダウンロードアドレスは以下の通りです.
https://github.com/izerui/tomcat-redis-session-manager.git
3つのjarパッケージをtomcatのライブラリディレクトリ、すなわち/usr/share/tomcat/lib/に配置します.
tomcatサービスの再起動
ブラウザテストを開きますhttp://192.168.1.101/test/、セッションIDは変更されていませんが、スケジューリングされたバックエンドホストが変更されました.
まとめ:
redisはリスニングアドレスのみを変更すればよく、その他は構成を変更する必要はありません.
httpdは反世代の役割を果たすだけで、バックエンドホストのスケジューリングを構成することが重要です.
tomcatクラスタはserverを変更する必要があります.xmlとweb.xmlファイルは、redisキャッシュに合わせてcontextを構成する必要がある.xmlとjarパッケージの準備
の最後の部分