nginx除了可以作为代理服务器之外,还可以给代理设置负载均衡
nginx代理中常见的负载有:
1、round-robin 轮询
2、least-connected 最少连接
3、ip-hash ip哈希
最简单的负载配置:
如果没有指定负载均衡算法,默认是 轮询负载(round-robin)
http {
#myapp1 upstream的名字,upstream中的每个server对应一个真实的后端地址
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1; #此处的域名跟http模块中设置的upstream名对应
}
}
}
此外还可以设置权重(weight=数值),意思是可以在随机中修改某一个后端服务的比重:
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
这样设置之后,意味着,5个请求中有3个由服务1处理,服务2与服务3各分别处理一个,
【ip_hash与least_conn中是否可用?大家可以一试】
最少连接数配置(least_conn)负载配置:
把请求分配给负载不那么重的后端服务中,避免请求发到负担较重的服务器上
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
ip_hash方式配置:
ip_hash是指以客户端请求IP地址作为hash key,以决定由upstream中的哪一个服务后端进行请求处理,由于IP不变,所以每次hash的结果也不会变,所以,每次客户端的请求都会由同一个后端服务处理(除非这个后端服务不可用),这对于那些需要session 粘性的请求来说是最好的选择
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
如果192.168.18.130 hash之后由srv1处理,那每次都会由srv1处理
此外:
本文暂时没有评论,来添加一个吧(●'◡'●)