nginx负载resin,实现session共享-JVM_ROUTE
NGINX负载配置:
upstream backend {#集群服务器 server 127.0 . 0.1 : 8080 srun_id=resinserver1; server 127.0 . 0.1 : 8081 srun_id=resinserver2; jvm_route $cookie_JSESSIONID|sessionid;#session共享 }
修改resinserver.xml
<server id="a" address="192.168.6.121" port="6800"> <!-- server2 address=192.168.6.162 --> <http id="" port="8080"/> </server> <server id="b" address="192.168.6.121" port="6801"> <!-- server2 address=192.168.6.162 --> <http id="" port="8081"/> </server>
tomcat服务器
10.110.5.151修改为
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”resinserver1”>
10.110.5.152修改为
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”resinserver2”>
jvm_route介绍
Thismoduleachievessessionstickinesswiththesessioncookie.IfthesessionisnotinthecookieorURL,themodulewillbeanormalRound-Robinupstreammodule.
INSTALLATION
EXAMPLE
1.Forresin
upstreambackend
{
server192.168.0.100srun_id=a;
server192.168.0.101srun_id=b;
server192.168.0.102srun_id=c;
server192.168.0.103srun_id=d;
jvm_route$cookie_JSESSIONID
;
}
DIRECTIVES
jvm_route
syntax:jvm_route$cookie_COOKIE[|session_url][reverse]
default:none
context:upstream
description:
'$cookie_SESSION_COOKIE'specifiesthesessioncookiename(0.7.24+).'session_url'specifiesadifferentsessionnameintheURLwhentheclientdoesnotacceptacookie.Thesessionnameiscase-insensitive.Inthismodule,ifitdoesnotfindthesession_url,itwillusethesessioncookienameinstead.SoifthesessionnameincookieisthenamewithitsinURL,youdon'tneedgivethesession_urlname.
Withscanningthiscookie,themodulewillsendtherequesttorightbackendserver.AsfarasIknow,theresin'ssrun_idnameisintheheadofcookie.Forexample,requestswithcookievalue'a***'arealwayssenttotheserverwiththesrun_idof'a'.Buttomcat'sJSESSIONIDisopposite,whichislike'***.a'.Theparameterof'reverse'specifiesthecookiescannedfromtailtohead.
Iftherequestfailstobesenttothechosenbackendserver,ItwilltryanotherserverwiththeRound-Robinmodeuntilalltheupstreamserverstried.Thedirectiveproxy_next_upstreamcanspecifyinwhatcasestherequestwillbetransmittedtothenextserver.Ifyouwanttoforcethesessionsticky,youcanset'proxy_next_upstreamoff'.
server
Everysyntaxisthesamewiththeofficialdirectiveexcepttheparameterof'srun_id'whichidentifiedthebackendJVM'snamebycookie.Thedefaultsrun_id'svalueis'a';
NOTE
Thisisathird-partymodule.Andyouneedcarefultestbeforeusingthismoduleinyourproductionenvironment.
Questions/patchesmaybedirectedtoWeibinYao,[email protected].