Nginx 配置 —— 负载均衡
负载均衡的相关理念
以前的传统网站,其并没有太大的访问量,且其处理的相关业务逻辑也较为简单,因此一台服务器便可以胜任。但是随着访问量逐渐增大,一台服务显然难以支撑,因此我们需要多台服务器来避面某一服务器突然出现宕机的现象。
但是虽然有了多台服务器,我们也需要保证这些请求能被较为均衡的发送到各个服务器上。
在 Nginx 之前采用的是 DNS 进行相关负载均衡的转发。但是 DNS 是将解析的域名直接发送给客户机,使得用户的请求可以直接到达目的服务器。但是由于各级节点的缓存原因,在 DNS 对负载均衡策略做出调整后,不能使其在各个客户端生效。
负载均衡相关配置
Nginx 提供了四种负载均衡的策略
- 轮询(默认情况):请求将会依次转发到各个服务器上
- 权重配置:weight 代表权重,默认为1,权重越高被分配的客户越多。
- ip_hash:每个请求的按访问ip 的hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session 问题
- fair:按照后端服务器响应时间来分配请求,响应时间短的优先分配
轮询情况下的负载均衡配置
其中 upstream中 是需要被负载均衡的服务器集群
代码语言:javascript复制http {
upstream myserver {
server 115.28.52.63:8080;
server 115.28.52.63:8081;
}
server {
listen 80:
server_name 115.28.52.63;
location / {
proxy_pass http://myserver;
# proxy 的属性和配置的upstream名称一样
proxy_connect_timeout: 10;
}
}
}
代码语言:javascript复制设置权重的负载均衡的配置
upstream myserver {
server 192.168.0.3:8080 weight=1;
server 192.168.0.3:8081 weight=2;
}
代码语言:javascript复制ip_hash 负载均衡的配置
upstream myserver {
ip_hash;
server 192.168.0.3:8080;
server 192.168.0.3:8081;
}
代码语言:javascript复制fair 负载均衡的策略配置
upstream myserver {
server 192.168.0.3:8080;
server 192.168.0.3:8081;
fair;
}