阅读原文:
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的名字。

 

posted on 2021-06-29 11:57  51core  阅读(193)  评论(0)    收藏  举报