# 註釋中心主機 [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
假設有A、B兩個節點,都將Session持久化。若是Tomcat A服務下線期間用戶切換到了Tomcat B上,就得到了Tomcat B的Session,就算持久化Session的Tomcat A上線了,也沒用了。nginx