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;
}
}
上面代码中,我们配置了一个upstream
,其中的内容就是负载均衡背后,应用服务器节点的各个地址。在server
中,我们通过proxy_pass
反向代理应用服务器集群,这样就实现了一个最简单的负载均衡。如果一个节点失效,Nginx是能够感知到的,并通过一定的算法逐步剔除该节点。
其实Nginx默认的节点失效剔除还是对用户具有一定的影响,解决这个问题最好的办法是使用心跳检测,这需要Nginx扩展支持,心跳检测并不复杂,很多人都造过这个轮子。
默认情况下,负载均衡策略是轮询,每个后端服务器会被均匀的轮流访问。除此之外,还有几种其它策略: