实现负载均衡

Nginx能够十分方便的实现软负载均衡功能,而且性能非常不错,我们这里演示一个例子。

配置基本的负载均衡

upstream www.example.com {
        server 192.168.1.108:8081;
        server 192.168.1.108:8090;
}
server {
        listen 80;
        server_name www.example.com;
        location / {
                proxy_pass http://www.example.com;
        }
}
  • 192.168.1.108:8081 应用服务器1
  • 192.168.1.108:8090 应用服务器2

上面代码中,我们配置了一个upstream,其中的内容就是负载均衡背后,应用服务器节点的各个地址。在server中,我们通过proxy_pass反向代理应用服务器集群,这样就实现了一个最简单的负载均衡。如果一个节点失效,Nginx是能够感知到的,并通过一定的算法逐步剔除该节点。

其实Nginx默认的节点失效剔除还是对用户具有一定的影响,解决这个问题最好的办法是使用心跳检测,这需要Nginx扩展支持,心跳检测并不复杂,很多人都造过这个轮子。

配置负载均衡策略

默认情况下,负载均衡策略是轮询,每个后端服务器会被均匀的轮流访问。除此之外,还有几种其它策略:

  • least_conn:访问次数最少的节点下次将被访问
  • weight:根据设定的权重,分配节点被访问的比例
  • ip_hash:根据请求者IP,将同一个IP分配到同一个节点上,不常用
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap