Nginx 模块推荐 Session 粘连和扩展失败测试

来源:互联网 发布:freebsd与linux 编辑:程序博客网 时间:2024/04/29 09:12

Nginx 的 Session 粘连

在网站的应用中,常常对于同一个 session 的某个客户端的请求,一定要定位到同一台服务器.不然会出现反应登陆提交之类的问题.这一直以来就是一个棘手的问题.常见的解决方案是 session 共享.我们也能使用 nginx 的扩展模块来达到这个功能.就是使用 nginx-sticky-module 这个模块.
默认的 RR 和 ip_hash 之类是肯定不能定位到同一个 session 到相同的应用服务器上.所以使用上面这个模块的作用是根据的 cookie 的信息对后端的机器进行分发请求.
原理其实很简单,当一个客户端请求过来时,会 set-cookie 一个 cookie 来标注本次请求的服务器(第一次是随机).然后下次请求都会包含这个 cookie .然后就能很好的区分原本请求的服务器了.我测试过,当默认请求的后端服务器死掉后,会还是会自动切换的.另外,这个模块并不合适对不支持 Cookie 的浏览器.

下载地址:http://code.google.com/p/nginx-sticky-module/downloads/list

配置非常容易:

1
2
3
4
5
6
upstream {
    sticky;
    server 127.0.0.1:9000;
    server 127.0.0.1:9001;
    server 127.0.0.1:9002;
}

下次请求就会有 cookie 的信息了:象 route=1a06c7beb951fc195dcaf59ca3caa0ff 这种信息.默认 cookie 的 key 是 route .还可以设置很多 Cookie 相关的其它的参数如 domain.这引起可以查看相关文档.

Nginx 的后端检查扩展

现在介绍另一个模块.进行后端 upstream 服务器的扩展监控的模块.默认 Nginx 并不能监控 http 的连接是否正常.所以需要使用这个模块来扩展.推荐的这个模块是基于原来的 healthcheck_nginx_upstreams 的设计思想的.

下载地址:https://github.com/yaoweibin/nginx_upstream_check_module

1
2
3
4
5
6
7
8
9
upstream {
    server 127.0.0.1:9000;
    server 127.0.0.1:9001;
    server 127.0.0.1:9002;
 
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send"GET / HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}

这个也象 haproxy 的这种功能的模块一样,提供了一个简单的界面来显示,只需要简单的配置一下:

1
2
3
4
location /status {
        check_status;
        access_log   off;
}  

难看是难看了点,但有比没有好对吧.



http://www.php-oa.com/2012/03/15/nginx-sticky-upstream-check.html