nginx 負載均衡,session貼上
1)ip_hash(不推薦使用)
nginx中的ip_hash技術能夠將某個ip的請求定向到同一臺後端,這樣一來這個ip下的某個客戶端和某個後端就能建立起穩固的session,ip_hash是在upstream配置中定義的:
upstream backend {
server 127.0.0.1:8080 ;
server 127.0.0.1:9090 ;
ip_hash;
}
2)nginx_upstream_jvm_route(nginx擴充套件,推薦使用)
nginx_upstream_jvm_route 是一個nginx的擴充套件模組,用來實現基於
Cookie 的 Session Sticky 的功能。
簡單來說,它是基於cookie中的JSESSIONID來決定將請求傳送給後端的哪個server,nginx_upstream_jvm_route會在使用者第一次請求後端server時,將響應的server標識繫結到cookie中的JSESSIONID中,從而當用戶發起下一次請求時,nginx會根據JSESSIONID來決定由哪個後端server來處理。
nginx_upstream_jvm_route安裝
下載地址(svn):http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/
假設nginx_upstream_jvm_route下載後的路徑為/usr/local/nginx_upstream_jvm_route,
(1)進入nginx原始碼路徑
patch -p0 < /usr/local/src/nginx_upstream_jvm_route/jvm_route.patch
(2)./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=/usr/local/src/nginx_upstream_jvm_route
(3)make & make install
配置
nginx配置
upstream tomcats_jvm_route {
# ip_hash;
server 192.168.33.10:8090 srun_id=01;
server 192.168.33.11:8090 srun_id=02;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}
tomcat配置
server.xml
<Enginename="Catalina"defaultHost="localhost">
修改為:
<Enginename="Catalina"defaultHost="localhost"jvmRoute="01">
測試
啟動tomcat和nginx,訪問nginx代理,使用Google瀏覽器,F12,檢視cookie中的JSESSIONID,
形如:AAAAAAAAADDDDDDDDDD.01 ,重新整理也不會變化