zoukankan      html  css  js  c++  java
  • 6.Nginx作为负载均衡服务器应用

    案例:Nginx作为负载均衡服务器应用

             nginx的负载均衡功能是通过upstream命令实现的,因此他的负载均衡机制比较简单,是一个基于内容和应用的7层交换负载均衡的实现。Nginx负载均衡默认对后端服务器有健康监测能力,但是监测能力较弱,仅限于端口监测,在后端服务器比较少的情况下(10台以下)负载均衡能力表现突出。而对于有大量后端节点的负载应用,由于所有访问请求都从一台服务器进出,容易发生请求堵塞进而引发连接失败,因此无法充分发挥后端服务器的性能。

     

    Nginx负载均衡算法

             Nginx的负载均衡模块目前支持4中调度算法,下面分别进行介绍,其中,后两种属于第三方调度方法:

    • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
    • weight:指定轮询权值,weight值越大,分配到访问概率越高,主要用于后端每台服务器性能不均衡的情况下。
    • ip_hash:每个请求按照ip的哈希结果分配,这样来自同一个ip的访客固定访问一台后端服务器,有效解决动态网页存在的session共享问题。
    • fair:它是比上面两种更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能的进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载nginx的upstream_fair模块。
    • url_hash:按访问URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包。

    HTTP Upstream模块中,可以通过server命令指定后端服务器的IP地址和端口,同时还可以设定每台后端服务器在负载均衡调度中的状态。常用的状态有:

    • down:表示当前的server暂时不参与负载均衡。
    • backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最轻。
    • max_fails:允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误。
    • fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

    注意:当调度算法为ip_hash时,后端服务器在负载均衡调度中的调度状态不能是weight和backup。

     

    Nginx的负载均衡配置

    http {

             upstream myserver {

        server 192.168.1.120:80 weight=1 max_fails=3 fail_timeout=20s;

        server 192.168.1.121:80 weight=1 max_fails=3 fail_timeout=20s;

    }

        server {

            listen       80;

            server_name  localhost;

            index  index.html index.htm;

            #ciharset koi8-r;

            root html;

            #access_log  logs/host.access.log  main;

     

            location / {

            proxy_pass http://myserver;

            proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;

     

            }

    }

    在上面这段配置中,upstream关键字标识负载均衡配置开始,upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面。通过upstream制定一个负载均衡器的名称为myserver。这个名称可以任意指定,在后面需要的地方直接调用即可。

     

    每天学习一点点,重在积累!
  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/GXLo/p/5169118.html
Copyright © 2011-2022 走看看