您的位置:首页 > 理论基础 > 计算机网络

使用Nginx为HTTP服务做负载均衡

2015-12-17 13:34 363 查看
      介绍      首先要介绍的就是什么是负载均衡。      众所周知一个互联网应用必须能承受大量的并发访问,而再好的服务器也无法做到可以承受无限制增长的并发访问量,并提供优秀的容错机制。于是“集群”这一概念就应运而生,所谓“集群”,简单点来说就是使用N个廉价的PC机共同作为服务器使用,从而达到降低成本、提高容错率等效果。(本文不再详细赘述)      而既然使用集群,那么就必然要面临一个问题——当服务端接收到一个请求的时候,我该安排哪个服务器为其服务呢?我是应该挑选空闲的服务器为其服务还是选用性能优秀的服务器?或者使用它之前就访问过的服务器来提高缓存的命中率?这一系列的问题就是著名的“负载均衡”,本文就将隆重介绍高性能负载均衡服务器Nginx。     负载均衡算法      下面就简单介绍几种负载均衡的算法:       轮询法   ——    轮询使用所有挂载在代理服务器下的服务实例,为请求提供服务。       最少连接数法  ——  每次接收请求以后都自动寻找当前连接数最少的服务器为其服务。       ip 哈希法   ——   建立一个合适的哈希算法,通过请求者的ip对服务器进行映射,选取被映射到的服务器为其服务,这样可以保证每个ip都是由一个与它对应的服务器服务。        下面就介绍负载均衡算法如何在Nginx中配置默认的负载均衡配置      
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}

server {
listen 80;

location / {
proxy_pass http://myapp1; }
}
}
上面就是最简单的负载均衡配置,在这样的配置下,默认使用的负载均衡算法就是轮询法。代理端口为80,一共代理srv1、srv2、srv3三个服务器。意思就是请求只需要访问该机器的80端口,Nginx就会自动将请求转发到所配置的三个服务器下面,选择服务器的算法就是轮询法。
最少连接数算法
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
若要使用最小连接数算法,只需要在最上面添上“least_conn” 即可。
ip哈希法
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
 与最少连接数法类似,只需在配置中添加"ip_hash" 即可使用ip哈希算法做负载均衡。
 权重法
最后再介绍一种负载均衡算法——权重法。配置如下:
upstream myapp1 {server srv1.example.com weight=3;server srv2.example.com;server srv3.example.com;}
如上所示,只需在服务器的后面添加“weiht=x”即可奉陪某个服务器的权重(默认是1)。上述配置的作用就是如果有5个请求,那么srv1将会处理3个,其它各处理1个。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nginx HTTP