JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Nginx负载均衡

wys521 2024-09-06 04:30:43 精选教程 73 ℃ 0 评论


Nginx的安装配置在之前的文章中已经介绍过了,点击跳转

负载均衡简介

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

Nginx负载均衡策略

目前nginx负载策略共两大类,分别是:内置策略和扩展策略。 内置策略有四种:轮询策略、加权轮询策略、 最少连接策略和ip_hash策略。默认情况下内置策略会编译进Nginx的内核,只需要在nginx配置中指明参数即可。 扩展策略有三种:fair 策略,url_hash 策略,sticky 策略。

  • 轮询策略

Nginx的默认策略,把每个请求依次按顺序分配给每个服务器,如果其中某个服务器宕机,会自动剔除。

http {
     upstream myserver{
        server server1:8888 max_fails=3 fail_timeout=3s ;
        server server2:8888 max_fails=3 fail_timeout=3s ;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}
  • 加权轮询策略

在轮询策略的基础上加权重,即根据权重比例,每个服务器受访的概率不同,权重越大,受访概率越高,此方法适用于服务器配置不同,高配置服务器可设置较高权重。

http {
     upstream myserver{
        server server1:8888 weight=2;
        server server2:8888 weight=4;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}
  • 最少连接策略

Nginx会根据当前所有服务器的繁忙程序(连接数),把当前请求分配给连接数最少的服务器,从而保证了不会过度的请求某一个服务器,此方式适用于当一些请求会占用较大资源时。

http {
    upstream myserver{
 	least_conn;
        server server1:8888;
        server server2:8888;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
    	    proxy_pass http://myserver;
        }
    }
}
  • ip_hash策略

上面提到的三种方式,可能会把同一个用户的每一次请求分发到不同服务器上,这时候就需要我们自己来维护session机制,因为不同的服务器是不会共享session的,而ip_hash策略通过维护访问者IP的hash使每一次请求都分发到同一个服务器,除非某个服务器宕机。

http {
    upstream myserver{
        p_hash;
        server server1:8888;
        server server2:8888;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}
  • fair 策略

此策略与最少连接类似,但是fail策略是根据服务器相应时间来判断服务器繁忙程度,然后将请求分发到相应时间最短的服务器,但是这种策略自适应性很强,实际网络情况是很复杂的,因此慎用。

http {
    upstream myserver{
        server server1:8888;
        server server2:8888;
        fair;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}
  • url_hash 策略

根据服务器维护的url_hash来决定分发服务器,即同一个url会分发到同一个服务器。

http {
    upstream myserver{
        hash $request_uri;
        server server1:8888;
        server server2:8888;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}
  • sticky 策略

保证一个客户端只和一个服务器进行通讯,保存长连接,当会话结束后再选择一个服务器,以此来保证压力平衡。注:浏览器不支持cookie,sticky不生效。

http {
    upstream myserver{
        sticky;
        server server1:8888;
        server server2:8888;
    }
    server {
        listen 80;
        server_name mydomain;
        location / {
            proxy_pass http://myserver;
        }
    }
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表