TongHttpServer(简称THS)通过三种方式保证session亲和。
方式一:基于cookie的亲和
见https.conf配置 stickysession=ROUTEID 表示开启cookie方式session亲和,为每个TongWeb节点增加唯一route名后,通过THS访问HTTP头上会增加标识TongWeb节点的信息,以此来分辩分发到哪个TongWeb节点。
<Proxy balancer://tongSSLCluster>
BalancerMember "http://192.168.1.78:8080" route=node1
BalancerMember "http://192.168.1.79:8090" route=node2
</Proxy>
#将ROUTEID值加入cookie中。
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
ProxyPass / balancer://tongSSLCluster/ stickysession=ROUTEID growth=100
方式二:基于JSESSIONID的亲和
httpd.conf中主要配置, stickysession=JSESSIONID|jsessionid 表示开启JSESSIONID的session亲和。特别需要注意的是THS的route值要与TongWeb节点中的jvmRoute值一一对应。通过THS访问时可以看到HTTP头的JSESSIONID值后面增加了各个节点的route值,以此来分辩分发到哪个TongWeb节点。
<Proxy "balancer://tongSSLCluster">
#route值要与每个TongWeb节点的jvmRoute值对应。
BalancerMember "http://127.0.0.1:8080" route=worker1
BalancerMember "http://127.0.0.1:8090" route=worker2
</Proxy>
ProxyPass / balancer://tongSSLCluster/ stickysession=JSESSIONID|jsessionid
方式三:其于IP的亲和
通过基于源IP哈希算法,也可以保证每个客户端的session亲和。
ProxyPass / balancer://tongSSLCluster/ lbmethod=iphash