阅读原文:
https://www.cnblogs.com/wzjhoutai/p/6932007.html
https://blog.csdn.net/qq_32625839/article/details/82184739
Nginx能够配置代理多台服务器,实现服务高可用。详细配置步骤例如以下:
1. 在http节点下,加入upstream节点。
upstream linuxidc {
server 10.0.6.108:7080;
server 10.0.0.85:8980;
}
2. 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即 "http://linuxidc"。
location / {
root html;
index index.html index.htm;
proxy_pass http://linuxidc;
}
3. 如今负载均衡初步完毕。upstream依照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不同的后端服务器。假设后端服务器down掉,能自己主动剔除。这种方式配置最简单,但存在缺点:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。
除此之外,upstream还有其他的分配策略,分别例如以下:
weight(权重)
指定轮询几率,weight和接收到请求比率成正比,用于后端服务器性能不均的情况。例如以下所看到的,10.0.0.88接收到请求的比率要比10.0.0.77接收到请求的比率高一倍。
upstream linuxidc {
server 10.0.0.77 weight=5;
server 10.0.0.88 weight=10;
}
ip_hash(访问ip)
每一个请求按访问ip的hash结果分配。这样每个客户固定访问一个后端服务器,能够解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。
upstream favresin {
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}
fair(第三方)
按后端服务器的响应时间来分配请求。响应时间短的优先分配,与weight分配策略相似。
upstream favresin {
server 10.0.0.10:8080;
server 10.0.0.11:8080;
fair;
}
url_hash(第三方)
按访问url的hash结果来分配请求,使每一个url定向到同一个后端服务器。后端服务器为缓存时比较有效。
注意:在upstream中加入hash语句。server语句中不能写入weight等其他的參数,hash_method是使用的hash算法。
upstream resinserver {
server 10.0.0.10:7777;
server 10.0.0.11:8888;
hash $request_uri;
hash_method crc32;
}
upstream还能够为每一个设备设置状态值,这些状态值的含义分别例如以下:
down:表示当前的server临时不參与负载。
weight:默认值为1。weight越大,负载的权重就越大。
max_fails:同意请求失败的次数,默认值为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout:max_fails次失败后,暂停的时间,默认值是 10s。
backup:其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend { #定义负载均衡设备的Ip及设备状态
ip_hash;
server 10.0.0.11:9090 down;
server 10.0.0.11:8080 weight=2;
server 10.0.0.11:6060;
server 10.0.0.11:7070 backup;
}
负载均衡实例
upstream tel_img_stream {
ip_hash;
server 192.168.11.68:20201;
server 192.168.11.69:20201 weight=100 down;
server 192.168.11.70:20201 weight=100;
server 192.168.11.71:20201 weight=100 backup;
server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}
说明:
(1)down:表示当前的server暂时不参与负载。
(2)weight:默认为1。weight越大,负载的权重就越大。
(3)backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
(4)上例中192.168.11.72:20201 设置最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。
注意,当upstream中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。
weight\backup 不能和 ip_hash 关键字一起使用。
最后在需要使用负载均衡的server中增加proxy_pass http://tel_img_stream/,对应upstream的名字。
浙公网安备 33010602011771号