tomcat 之 httpd session stiky

# 註釋中心主機

[root@nginx ~]# vim /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"


#:配置虛擬主機

[root@nginx ~]# vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
ServerName      node1.magedu.com
ProxyRequests   Off
ProxyVia        On
ProxyPreserveHost On
ProxyPass       / balancer://lbtomcats/
ProxyPassReverse / balancer://lbtomcats/
</VirtualHost>

<Proxy balancer://lbtomcats>
BalancerMember http://node1.magedu.com:8080 loadfactor=1
BalancerMember http://node2.magedu.com:8080 loadfactor=2
</Proxy>

#:分別配置tomcat
[root@node1 ~]# vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="node1.magedu.com" jvmRoute="Tomcat1">
[root@node2 ~]# vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="node2.magedu.com" jvmRoute="Tomcat2">



#觀察結果是輪詢的
#:使用session粘性

[root@nginx ~]# vim /etc/httpd/conf.d/tomcat.conf
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<VirtualHost *:80>
ServerName      node1.magedu.com
ProxyRequests   Off
ProxyVia        On
ProxyPreserveHost On
ProxyPass       / balancer://lbtomcats/
ProxyPassReverse / balancer://lbtomcats/
</VirtualHost>

<Proxy balancer://lbtomcats>
BalancerMember http://node1.magedu.com:8080 loadfactor=1 route=Tomcat1
BalancerMember http://node2.magedu.com:8080 loadfactor=2 route=Tomcat2
ProxySet stickysession=ROUTEID
</Proxy>
#
發現Session不變了,一直找的同一個Tomcat服務器

 

#:api

[root@nginx ~]# vim /etc/httpd/conf.d/tomcat.conf 
<VirtualHost *:80>
ServerName      node1.magedu.com
ProxyRequests   Off
ProxyVia        On
ProxyPreserveHost On
ProxyPass       / balancer://lbtomcats/
ProxyPassReverse / balancer://lbtomcats/
</VirtualHost>

<Proxy balancer://lbtomcats>
BalancerMember ajp://node1.magedu.com:8009 loadfactor=1 route=Tomcat1
BalancerMember ajp://node2.magedu.com:8009 loadfactor=2 route=Tomcat2
ProxySet stickysession=ROUTEID
</Proxy>

雖然,上面的作法實現客戶端在一段時間內找同一臺Tomcat,從而避免切換後致使的Session丟失。可是若是html

Tomcat節點掛掉,那麼Session依舊丟失。node

假設有AB兩個節點,都將Session持久化。若是Tomcat A服務下線期間用戶切換到了Tomcat B上,就得到了Tomcat BSession,就算持久化SessionTomcat A上線了,也沒用了。nginx

相關文章
相關標籤/搜索