使用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个。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- nginx代理指定目录
- 访问Nginx发生SSL connection error的一种情况
- Nginx+Naxsi部署专业级Web应用防火墙
- CentOS 6.2实战部署Nginx+MySQL+PHP
- HTTP Header 属性列表
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- Nginx 学习笔记(一)
- 如何在 Linux 中快速地通过 HTTP 提供文件访问服务
- 网站502与504错误分析