nginx负载均衡的一些问题和具体配置

3 篇文章 0 订阅
2 篇文章 0 订阅

对于服务器集群的搭建,nginx负载均衡是很好的方式:思路如下图

这里的session采用了session共享的方式,这样来避免一些情况下的session丢失。下面我会具体说到。

session丢失:是因为文件存储session的方式会把session存储到当前服务器中,通过cookie中的sessionID来获取相应的session,如果第二次请求跟第一次请求不再一个服务器上那么session就没了。

nginx的分配方式:

1.轮询,也是nginx的默认分配方式

这种方式就会造成我上面说到的session丢失的问题。

轮询的方式可以通过配置weight的方式来实现权重的控制 权重越高 分配到的几率也就越高。

2.ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,就不会造成session丢失的问题。

3.url_hash

按访问url的hash结果来分配请求,使同样的url定向到同一个后端服务器。

4.fair(需要服务器支持)

这种分配方式就比较智能了,根据服务器的响应时间来分配请求,根据时时的服务器状态来职能分配。


明确了上面的问题,session最好放到缓存中,最常用的memcache就可以 只要简单的配置下就ok了。

修改php.ini

session.save_handler = memcache  
session.save_path = "tcp://127.0.0.1:11211" 

把文件存储缓存缓存存储就可以实现session的贡献 key是sessionID value就是序列号后的session内容

ps:memcache服务器要是宕机的话会很尴尬。

==============================================

知道了session的问题,明确了分配方式下面就是具体的配置了:

在http {}配置模块里添加upstream 在server配置中通过proxy_pass命令来实现代理分配

upstream test {

             #ip_hash;//分配方式,默认为轮询

 

             server 192.168.1.111 weight 1;

             server 192.168.1.112;

             server 192.168.1.113;

         }

 

server {

        listen       80;

        server_name  test;

 

        location / {

              #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

             proxy_set_header Host $host;

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 

             #禁用缓存

             proxy_buffering off;


             #反向代理的地址

             proxy_pass http://test;     

        }

}

ps:如果不设置proxy_set_header  你获取到的客户端地址都变成你代理服务器的地址了 就尴尬了。。。所以最好都设置一下。


总结:

注意session的问题,选择合理的分配方式。还要根据公司的流量,pv来看看是不是真的需要应用负载均衡。

每一个服务器的运行状态,安装的环境版本最好都保持一致,否则会有问题,对于DB的读取,也要做好合理的安排。如果单机的时候mysql的可访问权限要是localhost那么换成集群以后记得修改,否则就死了......

值得注意的是,如果采用了负载均衡,在布置代码的时候就会很麻烦,所以自动化运维也是很必要的一件事,我看过一篇帖子是美团的自动化运维发展史,每个公司的具体情况都不一样,所以没有好的公共的方法可以实现 适合大多数公司的自动化运维。一般都是自己的运维人员开发一套适合公司情况的自动化运维系统。

目前就想到这么多,欢迎指正。= =  今天搞一下HHVM,搞好了我会贴出来。。。。(如果不懒的话今天就会贴出来,懶的话就不知道啥时候了:)




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__DEBUG__

来杯可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值