首页 > 学院 > 操作系统 > 正文

使用tengine解决负载均衡的session问题

2024-06-28 16:00:45
字体:
来源:转载
供稿:网友

事情的经过时这样的~~,我看了好多好多百度中nginx负载均衡中解决session问题的方式,我选择了研究url_hash的方式。经过一番配置之后,我越发觉得这百度搜出来的帖子也太过久远了吧,去http://wiki.nginx.org/上找了找这个模块

,在github下载的位置上看到了这样一段话:

NOTE: This module is obsolete as of Nginx 1.7.2, which includes the hashdirective. This repository remains for historical interest only. 我的理解是此版本是绝对的使用nginx1,7,2,此库仅为历史感兴趣的参考,而百度翻译则是此模块为过时的,我就无法理解了。

正在迷茫之际,我看到了tengine,这是淘宝对nginx的一种扩展的优化吧。然后我就转而研究这个了,发现在tengine之中有一个叫做ngx_http_upstream_session_sticky_module的模块,很是贴合我的目的,他是利用用户的cookie来保持对session的支持。具体原理还有待研究,总之得试试吧

安装过程可以参考这个:http://www.mamicode.com/info-detail-98992.html。(指出这个文章有问题的地方,在安装nginx的时候使用 ./configure –PRefix=/opt/nginx –user=www –group=www –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-openssl=/usr/local/src/openssl-1.0.1h –with-zlib=/usr/local/src/zlib-1.2.8 –with-pcre=/usr/local/src/pcre-8.35 –with-jemalloc=/usr/local/jemalloc-3.6.0这个命令)

经过各种踩坑之后,整好了:(这个界面也是尊重nginx,依然那么简约 。 - - !) 这里写图片描述

那么我们就来试试那个神奇的模块吧,配置如下:

upstream rock{ server 127.0.0.1:8081; server 127.0.0.1:8082; session_sticky;}server { server_name www.rockcoding.com rockcoding.com; listen 80; index index.html index.htm index.jsp; location / { proxy_pass http://rock; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #access_log /data/log/rockman/www.rockcoding.com main; #日志文件 }}

公司的同事,对于外网来说ip都一样,只要访问到不同的两台服务器且连续刷新不会改变session不会失效(其实就是不会跳转到另一台服务器),那么就成功了。两台电脑访问,或者不同的浏览器访问都可以,模块式基于cookie来判断的~

嗯,比ip_hash强多了,但是要编译那么多东西,总觉得还需要再深入研究一下,才方便使用这个tengine吧~


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表