上周五同事跟我提一个需求,大概描述是酱紫:“我们现在终端都在访问同一台服务器,如果流量过大造成服务器down掉,做一个转发到其他服务器正常使用…”.我想了想应了下来,决定下周开始研究下,周末和朋友吃饭的时候聊了聊,一个朋友和我说现在很多框架都自带分布式例如tp啊,我理解分布式架构是一个大型项目分布多个模块,放在不同逻辑服务器上(若有不准确望能指正)和我现在想完成的需求不太一样,后来想在nginx在做些处理。前文交代完毕,下面进入正题把这两天的理解写下来。
如图,我想做一个nginx负载均衡,一台前端服务器做流量转发,两台逻辑服务器也就是后端服务器处理请去。使用nginx upstream 做轮番请求,如果server 1 或 server 2 其中一台down掉,会被剔除能保证终端用户正常使用。
当然upstream 也支持权重分配,根据服务器的配置 分配不同比例,可以起到负载均衡效果。
这个官网给的实例,要做http 中定义 upstream 模块,模块后跟的名字(myproject)要和server 模块中 location / 一致。 server 127.0.0.1:8000 weight = 3; 中 ‘weight’是上文提到的 ‘权重’值,值越高服务的频率会越高。若server 189.1.22.1:8000 down; 表示该服务器不参与负载,backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
本地环境 centos
配置nginx.conf
server中:
我在本地服务器经过测试,分别在 186 与 195 写了不同的php界面,从189访问基本成功。
后来我给同事展示了一下,他微笑的看着我问道:“这个不同服务器怎么解决session共享的问题”,我想了想是啊,可以试试 ip_hash这样的方式,详细可以参考这篇文章:http://www.360doc.com/content/13/0725/12/5054188_302368351.shtml
(adsbygoogle = window.adsbygoogle || []).push({});