nginx支持下面几种负载均衡机制:
round-robin:轮询。以轮询方式将请求分配到不一样服务器上
least-connected:最少链接数。将下一个请求分配到链接数最少的那台服务器上
ip-hash :基于客户端的IP地址。散列函数被用于肯定下一个请求分配到哪台服务器上nginx
负载均衡默认配置
nginx负载均衡最简单的配置以下:
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}算法
server {
listen 80;服务器
location / { proxy_pass http://myapp1; }
}
}
在上面的例子中,srv1,srv2,srv3运行着相同的应用程序。若是没有特别指定负载均衡方法默认是以轮询方式。全部的请求被代理到服务组myapp1,而后nginx负载均衡的分发请求。
nginx反向代理实现包括下面这些负载均衡HTTP、HTTPS、FastCGI、uwsgi,SCGI和memcached。
要配置HTTPS的负载均衡,只需使用“https”开头的协议。
当要设置FastCGI,uwsgi,SCGI,或者memcached的负载平衡,分别使用fastcgi_pass,uwsgi_pass,scgi_pass和memcached_pass指令。session
以轮询或最少链接的负载均衡算法,每一个后续的客户端的请求,能够潜在地分配给不一样的服务器上,并不能保证相同的客户端请求将老是指向同一服务器上。
这对于有会话信息的应用场景下,会有问题的。通常的作法是须要将session信息共享,如使用memcache来存放session。
若是将客户端的会话“粘性”或老是试图选择一个特定的服务器,也是能够的。负载均衡的ip-hash机制就能够实现。
配置以下:
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}app
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
这种状况下,每5个新的请求将被分布以下:3请求将被引导到SRV1,一个请求将去SRV2,另外一个请求去srv3。负载均衡