> Linux集群 > 负载均衡SLB >

Linux下Nginx反向代理服务器+负载均衡

项目拓扑结构:

配置环境
三台CentOS:
一台做Nginx Revers Proxy
二台Apache做页面测试服务器 网站的域名是www.teddy.com

1.后台的web服务使用Apache,有关apache配置这里不多说,本文重点在配置nginx反向代理和负载均衡.
2.在192.168.1.51上建立反向代理服务器,可以用LNMP,安装好了,然后编辑配置文件,监听本机80端口,在nginx的配置文件nginx.conf的http模块中添加upstream,然后在server模块中定义,负载均衡:
upstream teddy
{
server 192.168.1.5:80 weight=5 max_fails=2 fail_timeout=30s;
server 192.168.1.10:80 weight=5 max_fails=2 fail_timeout=30s;

}
server
{
listen 80;
server_name 192.168.1.51;

location / {
proxy_pass http://teddy;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
编辑好了,保存退出,在重启一下nginx,

以下是HTTP负载均衡模块upstream 指定设置一群服务器,服务器可以指定不同的权重,默认为1。Nginx支持5种方式的查询,
1、轮询 Nginx默认的查询方式
2、Weight 指定分配的轮询方式,根据后端服务器的性能来做权重,在此案例中我们使用这种方式来轮询的
3、Ip_hash 每个请求按照ip的hash结果分配,这样每个IP地址就可以固定的访问后端的一台服务器,解决了session的问题
4、Fair 第三方模块,这个原理是按照响应时间的优先来分配的,
5、url_hash    按照url的hash结果来分配请求,使每个url定向到同一个后端的服务器;

这样的话,如果访问http://teddy.com页面的话,nginx目录下根本没有该文件,但是它会自动将其pass到teddy定义的服务区机群中,分别由192.168.1.5:80;或者192.168.1.10:80;来做处理。上面在定义upstream的时候每个server都是5的权重,表示两者均衡;如果希望某个更多响应的话例如:
upstream teddy {
server 192.168.1.5:80 weight=5;
server 192.168.1.10:80;
}
这样表示5/6的几率访问第一个server,1/6访问第二个。另外还可以定义max_fails和fail_timeout等参数。
3.测试,刷新测试能正常进行负载,可以根据自己的环境来对nginx proxy的设置轮询模式

(责任编辑:IT)