RSS订阅懒人笔记
你的位置:首页 » 安装教程 » 正文

nginx负载均衡

选择字号: 超大 标准 发布时间:2020年02月19日 | 作者:admin | 0个评论 | 222人浏览

负载均衡
场景:反向代理过程中,每台服务器处理来自客户端的请求都应该是均衡的。
原理:使用一个反向代理服务器指向多台部署相同应用的服务器,客户端请求直接向反向代理服务器发起,反向代理服务器根据负载均衡机制,将请求转发到不同的应用服务器上。
负载均衡机制:
nginx提供了一下三种方法:
1)round-robin:请求以循环、轮转的方式分发到服务器
2)least-connected:下一个请求被分配到拥有最少活动连接数的服务器
3)ip-hash:使用一个哈希函数,基于客户端ip地址判断下一个请求应该被分发到哪台服务器
相关配置说明
1)循环、轮转负载均衡
round-robin:默认情况下,使用循环、轮转的方式分发请求到服务器
配置示例:

http{
    upstream myapp{
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
    server{
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}

 
当不指定负载均衡方式时,默认以round-robin方式实现。所有请求都会被代理到myapp服务器,根据负载均衡机制分发请求。 
2)最少连接负载均衡
least-connected:当一些请求处理的时间比较长时,最少连接负载均衡能够争取到更大的公平。
配置示例:
 upstream myapp{
     least-conn;
     server srv1.example.com;
     server srv2.example.com;
     server srv3.example.com;
 }
 
3)基于ip地址的负载均衡 
ip-hash:采用目标地址散列调度(Destination Hashing Scheduling)算法,根据请求的目标ip地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器可用且未超载,则将请求发送带服务器,否则返回空。
 upstream myapp{
     ip-hash;
     server srv1.example.com;
     server srv2.example.com;
     server srv3.example.com;
 }
 
 
 
 
 ##################################################
 
 
 2.Nginx负载均衡的集中方式介绍
2.1 轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。
upstream  dalaoyang-server {
       server    localhost:10001;
       server    localhost:10002;
}
2.2 权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。
upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
2.3 iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream  dalaoyang-server {
       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
2.4 最少连接
将请求分配到连接数最少的服务上。
upstream  dalaoyang-server {
       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
2.5 fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}
3.Nginx配置
以轮训为例,如下是nginx.conf完整代码。
worker_processes  1;
events {
    worker_connections  1024;
}
http {
   upstream  dalaoyang-server {
       server    localhost:10001;
       server    localhost:10002;
   }
   server {
       listen       10000;
       server_name  localhost;
       location / {
        proxy_pass http://dalaoyang-server;
        proxy_redirect default;
      }
    }
}


标签:

欢迎加QQ:2908190019

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。