负载均衡是扩展应用程序并提高其性能和冗余的绝佳方法。
Nginx是一种流行的Web服务器软件,可以配置为简单但功能强大的负载均衡器,以提高服务器资源的可用性和效率。在负载 均衡配置中,nginx充当在多个单独服务器上工作的分布式Web应用程序的单个入口点。
如果没有定义其他方法,默认情况下nginx负载均衡会使用循环算法,如上面的第一个示例所示。使用循环方案,将根据您在load-balancer.conf 文件中设置的顺序轮流选择每个服务器。这平衡了短期操作的请求数量。
基于最少连接的负载均衡是另一种简单的方法。顾名思义,此方法将请求定向到当时具有最少活动连接的服务器。对于请求有时可能需要更长时间才能完成的应用程序,它比循环法更有效。
要启用最少连接均衡方法,请将参数least_conn添加到上游 部分,如下例所示。
1
2
3
4
5
6
upstream backend {
least_conn;
server 10.1.0.101;
server 10.1.0.102;
server 10.1.0.103;
}
虽然循环和最少连接平衡方案是公平的并且有其用途,但是它们不能提供会话持久性。如果您的Web应用程序要求用户随后被定向到与之前连接相同的后端服务器,则应使用IPhash方法。IPhash使用访问者IP地址作为密钥来确定应选择哪个主机来为请求提供服务。这允许访问者每次被定向到同一服务器。
要使用此方法,请将ip_hash 添加到 upstream 段,如下面的示例所示。
1
2
3
4
5
6
upstream backend {
ip_hash;
server 10.1.0.101;
server 10.1.0.102;
server 10.1.0.103;
}
在一组主机之间的可用资源不相等的服务器配置中,可能希望某些服务器优先于其它服务器。定义服务器权重允许您进一步微调 nginx 负载均衡。负载均衡中权重最高的服务器最常选择。
1
2
3
4
5
upstream backend {
server 10.1.0.101 weight=4;
server 10.1.0.102 weight=2;
server 10.1.0.103;
}
例如,在上面的配置中,第一个服务器的选择频率是第二个服务器的两倍,是第三个服务器的四倍。