1. 程式人生 > >nginx 負載均衡,session貼上

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 ,重新整理也不會變化