Nginx负载均衡PHP、Apache
现在Nginx到处都可以见到,经常会看到宕机后的网页会显示nginx的字样,这也说明Nginx由于高性能、使用配置简、开源单这些特点被越来越多的用户所接受,所使用。其中第一种作为http服务器,结合php-fpm进程,对发来的请求进行处理,nginx本身并不会解析php,他只是作为一个服务器,接受客户端发来 的请求,如果是php请求,则交给php进程处理,并将php处理完成之后的结果发送给客户端。这个很简单,安装好nginx+php-fpm之后配置好 各自的配置文件,启动就可以实现。运行原理可以看下面这段解释:
以下我们就来举例说明如何使用 nginx 实现负载均衡。因为nginx在处理并发方面的优势,现在这个应用非常常见。当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有 nginx擅长。
//上面的文字是复制张贴的,不过写这些东西的文采,比我屌。算了。i/o密集型nginx, cpu密集型 httpd。
额~ 百度会得到很多比如lvs、haproxy、nginx,算了我以后上云的。 keepalived + nginx好像好多都在用。那天研究运维的时候再来写吧。先搞PHP开发方面的。
好了,开始,3台机子。
一台nginx的
两台httpd
upstream qwer{
server 114.215.252.233 weight=3;
server 121.40.76.153 weight=2;
}
location / { }里面加上proxy_pass http://qwer;
随便解释一下weight就是“权重”,写3的就是有3/5的概率被选择到,小学数学了。
weight=2,就是2/5的概率。看下图
设置完后,重新重启nginx。
结果图出来了,能看得懂吧。我看得懂就行了。
max_fails=2 fail_timeout=30s; //后面加上这两个。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 4.fail_timeout:max_fails次失败后,暂停的时间。
写人话吧,按照上面的,当max_fails挂2次之后,fail_timeout每30秒就会拿棍子捅它,看看有没有挂,
如果还是挂了,再等30秒去捅它。直到它起死回生。
我就直接来把它服务停止,让它挂了。
之后,nginx就会选择没有挂的那台,蛮机智的。
之后来写个backup
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
人话:备胎,就是给汽车准备一个备用轮胎,一旦那个轮子爆胎或者出了问题,备用轮胎就方便及时地取而代之,汽车就不至于中途抛锚。
用于我只搞了3台,现在备胎用不了,那么就结果就是一直访问114.215.252.233;
把114.215.25搞宕机后,就用备胎了。看下面的图。
ip_hash;
nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session。
就是变成固定访问了,访问了A机,那么就固定访问A机。不会去访问BCDE机了。
有好处,也有坏处吧。
upstream qwer{
ip_hash;
server 114.215.252.233 weight=3 max_fails=2 fail_timeout=30s;
server 121.40.76.153 weight=2;
}
至于说session共享,这个用户登陆方面,我想到就是把uid存在cookie。
这样用户,至少不用被踢出来。直接读取cookie里面uid。其实貌似现在
第三方的来做session共享。比如memcached redis。额~就这样吧。