关于nginx:点击参考
Using nginx as HTTP load balancer
介绍(Introduction)
跨多个应用程序实例的负载平衡是一种用于优化资源利用率,最大化吞吐量,减少延迟和确保容错配置的常用技术。
可以将nginx用作非常有效的HTTP负载平衡器,以将流量分配到多个应用程序服务器,改善Web应用程序的性能,可伸缩性和可靠性。
负载均衡方法
nginx支持以下负载平衡机制(或方法):
- 轮循:对应用程序服务器的请求以轮循方式分配,
- 连接最少:将下一个请求分配给活动连接数最少的服务器,
- ip-hash:哈希函数用于确定应为下一个请求选择哪个服务器(基于客户端的IP地址)。
默认负载均衡配置(Default load balancing configuration)
使用nginx进行负载平衡的最简单配置可能如下所示:
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
在上面的示例中,同一应用程序的3个实例在srv1-srv3上运行。 如果未特别配置负载平衡方法,则默认为循环。 所有请求都被代理到服务器组myapp1,nginx应用HTTP负载平衡来分发请求。
nginx中的反向代理实现包括HTTP,HTTPS,FastCGI,uwsgi,SCGI,memcached和gRPC的负载平衡。
要为HTTPS(而非HTTP)配置负载平衡,只需使用“ https”作为协议。
为FastCGI,uwsgi,SCGI,memcached或gRPC设置负载平衡时,请分别使用fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass和grpc_pass指令。
最小连接负载均衡(Least connected load balancing)
另一个负载平衡原则是连接最少的。 最少连接允许在某些请求需要较长时间才能完成的情况下更公平地控制应用程序实例上的负载。
使用最少连接的负载平衡,nginx将尝试不使繁忙的应用程序服务器因过多的请求而过载,而是将新的请求分配给不太繁忙的服务器。
当least_conn指令用作服务器组配置的一部分时,将激活nginx中的最小连接负载平衡:
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}