1、轮询(默认) 应用程序轮流来响应请求


2、最少连接(least-conn)    请求被分配到活动连接最少的服务器上


3、ip-hash    通过一个hash函数决定哪个服务器来响应用户的请求(依据客户端的请求ip)


4、权重配置(weight)


5、手动宕机与备份主机(down,backup)


注意: backup不能和ip_hash一起使用


1、默认的负载均衡方式是轮询,所用的请求通过反向代理给了myapp1组,nginx通过负载均衡来分发这些请求到三个服务上;在nginx中HTTP, HTTPS, FastCGI, uwsgi, SCGI, and memcached 的负载均衡都是通过反向代理实现的。


A.要配置https的负载均衡只需要将http协议改https就可以了,其他位置不变;


B.要实现FastCGI, uwsgi, SCGI, memcached的负载均衡可以分别使用 fastcgi_pass, uwsgi_pass,


scgi_pass, and memcached_pass指令;


2、在“请求需要更长的时间来完成”的场景下采用“最少连接”方式可以更公平的将负载分配到多个机器上面。使用“最少连接”后,nginx不会将请求分发到繁忙的机器上面,而且将请求分发的较清闲的机器上面。


“最少连接”的配置:在upstream{}中添加 least-conn;


3、“轮询”和“最少连接”这两种负载均衡方式会将新的请求分发到不同的机器上,很难保证每个客户端会固定访问某一个服务器。如果需要某个客户端只访问访问固定的一个服务器可以通过ip-hash负载均衡方式实现。


ip-hash实现原理: 使用ip-hash时,客户端的ip作为一个散列的Key来决定服务器组中哪个服务器来响应请求,这种方式可以保证每个客户端每次访问的都是同一个服务器。


"ip-hash"的配置:在upstream{}中添加 ip_hash;


4、服务器权重值越大,nginx将把更多的请求发送给该服务器。


"权重"的配置:在upstream{}中添加 weight;


5、配置手动的宕机、备份主机


down:表示该主机不参与服务;


backup:表示该主机正常访问中不使用,如果所有的主机性能都不够的时候自动启动该配置项;


“手动宕机、备份主机”的配置:在upstream{}中添加 down、backup ;


--------------------------------------------------------------------------


服务器的健康检查:max_fails 与 fail_timeout


如果某个请求被分配到了一个服务器上,服务器无法响应,那么nginx会标记它失败了,在短时间内,nginx是不会将之后的请求分配给标记失败的服务器。


max_fails指令可以设置最大失败次数,默认是1。


fail_timeout指定响应时间超过多少秒就将服务器标记为失败。