天天看點

使用 ngx_http_upstream_session_sticky_module 實作基于cookie的負載均衡

如果浏覽器不支援cookie,那麼sticky不生效,畢竟整個子產品是給予cookie實作的

1、nginx sticky 子產品工作流程圖

使用 ngx_http_upstream_session_sticky_module 實作基于cookie的負載均衡

nginx sticky

2、下載下傳安裝nginx sticky

下載下傳位址:http://code.google.com/p/nginx-sticky-module/downloads/list

目前共有2個版本,一個是1.0,一個是1.1,1.0已經壽終正寝了.1.1增加了權重的參數.

安裝nginx + sticky子產品 (tengine已經自帶了此子產品,無需再次編譯,直接配置即可)

<code># ./configure --prefix=/usr/local/nginx-1.0.6 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1</code>

<code># make</code>

<code># make install</code>

3、配置nginx sticky

nginx 的upstream使用sticky,如下

upstream www_server_pool{

     session_sticky  path=/ expires=1h;

     server   192.168.1.210:80;

     server   192.168.1.211:80;

}

<code>/usr/</code><code>local</code><code>/nginx-1.0.6/sbin/nginx -t</code>

<code>/usr/</code><code>local</code><code>/nginx-1.0.6/sbin/nginx -s reload</code>

5、測試nginx sticky

使用sticky的情況下,不管怎麼重新整理都是下面圖

使用 ngx_http_upstream_session_sticky_module 實作基于cookie的負載均衡

nginx sticky 子產品

不使用nginx sticky子產品,多刷幾次就變了(有時候刷一次,有時候多刷幾次,看機率,不過肯定會變),如下圖

使用 ngx_http_upstream_session_sticky_module 實作基于cookie的負載均衡

備注:每台後端真實伺服器都會有一個唯一的route值,是以不管你真實伺服器前端有幾個裝了sticky的nginx代理,他都是不會變化的. 這個cookie是會話方式的,是以你浏覽器關閉了,伺服器會給你重新配置設定一台伺服器。

6、nginx sticky其他文法

<code>sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [</code><code>hash</code><code>=index|md5|sha1] [no_fallback];</code>

<code>name: 可以為任何的string字元,預設是route</code>

<code>domain:哪些域名下可以使用這個cookie</code>

<code>path:哪些路徑對啟用sticky,例如path/</code><code>test</code><code>,那麼隻有</code><code>test</code><code>這個目錄才會使用sticky做負載均衡</code>

<code>expires:cookie過期時間,預設浏覽器關閉就過期,也就是會話方式。</code>

<code>no_fallbackup:如果設定了這個,cookie對應的伺服器當機了,那麼将會傳回502(bad gateway 或者 proxy error),建議不啟用</code>

      本文轉自crazy_charles 51CTO部落格,原文連結:http://blog.51cto.com/douya/1555514,如需轉載請自行聯系原作者

繼續閱讀