精华内容
下载资源
问答
  • nginx负载均衡

    千次阅读 2020-12-24 19:38:29
    nginx负载均衡简介 随着网站的发展,服务器压力越来越大,我们可能首先会将数据库,静态文件分离出去。但是随着发展,单独业务API的请求的压力也会变得很大,这时候我们可能需要做负载均衡将一台服务器面临的压力...

    nginx负载均衡简介

    随着网站的发展,服务器压力越来越大,我们可能首先会将数据库,静态文件分离出去。但是随着发展,单独业务API的请求的压力也会变得很大,这时候我们可能需要做负载均衡将一台服务器面临的压力分散到多台服务器上。

    nginx 不仅可以作为强大的web服务器,也可以作为反向代理服务器,而且nginx还可以按照调度规则实现动静分离,还可以对后端的服务器做负载均衡。

    nginx负载均衡配置

    nginx的负载均衡主要是对proxy_pass和upstream的配置。

    http {
        upstream upstream_name{
            server ip1:port;
            server ip2:port;
            #如 server 192.168.1.10:8080
        }
    
        server {
            listen       8080;
            server_name  localhost;
    
            location / {
                proxy_pass http://upstream_name;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }
    }
    

    我这里没有把默认的一些配置贴出来。

    首先,在http下添加 upstream upstream_name {} 来配置要映射的服务器。

    其中的upstream_name大家可以指定为服务的域名或者项目的代号。

    server下的location 我们将 / 下的全部请求转发到 http://upstream_name ,也就是我们上面配置的服务器列表中的某一台服务器上。具体是哪台服务器,nginx会根据配置的调度算法来确认。

    nginx负载均衡策略

    nginx的负载均衡策略有4种:

    轮询(默认)

    最基本的配置方法,它是upstream的默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器。

    参数有:

    参数 描述
    fail_timeout 与max_fails结合使用
    max_fails 设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了
    fail_time 服务器会被认为停机的时间长度,默认为10s。
    backup 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
    down 标记服务器永久停机了。
    注意:

    在轮询中,如果服务器down掉了,会自动剔除该服务器。
    缺省配置就是轮询策略。
    此策略适合服务器配置相当,无状态且短平快的服务使用。
    权重

    在轮询策略的基础上制定沦陷的几率。例如

    upstream foo {
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    这里例子中,weight参数用于制定轮询的几率,weight默认值为1;weight的数值和被访问的几率成正比。

    注意:

    权重越高分配到需要处理的请求越多。
    此策略可以与least_conn和ip_hash结合使用。
    此策略比较适合服务器的硬件配置差别比较大的情况。
    ip_hash

    负载均衡器按照客户端IP地址的分配方式,可以确保相同客户端的请求一直发送到相同的服务器。这样每个访客都固定访问一个后端服务器。

    upstream foo {
        ip_hash;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    注意:

    在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
    ip_hash不能与backup同时使用。
    此策略适合有状态服务,比如session。
    当有服务器需要剔除,必须手动down掉。
    least_conn 最小连接

    把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果

    upstream foo {
        least_conn;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
    除了上面这些调度策略之后,还有一些第三方的调度策略可以集成到nginx中。

    在实际运用中,需要根据不同的场景选择不同的策略,大多是多种策略结合使用以达到实际需求的性能。

    参考资料:
    https://www.cnblogs.com/lave/p/10477375.html

    展开全文
  • nginx 负载均衡

    千次阅读 2018-08-31 14:40:49
    示例: ... #配置nginx 负载均衡 upstream www.hello.com { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=2; } #server配置 server { listen 80; server_name www....

    示例:

        #配置nginx 负载均衡
        upstream www.hello.com {
    		server 127.0.0.1:8081 weight=1;
    		server 127.0.0.1:8082 weight=2;
    	}
    	
        #server配置
    	server {
            listen       80;
            server_name  www.hello.com;
    
            location / {
                #重点是这里 和上边的域名一样
                proxy_pass	http://www.hello.com;
                proxy_redirect	default;
            }
        }
    
    
    

    网址访问:http://www.hello.com/examples/index2.html

    8081出现一次

    8082出现俩次

     

    展开全文
  • Nginx负载均衡

    2016-01-26 19:06:35
    Nginx负载均衡在大型Web架构中分布式和负载均衡是必不可少的,一般企业常用的负载均衡方式有Nginx负载均衡、LVS负载均衡、硬件负载均衡器(贵)、cdn负载均衡(贵、大公司)等几种方式,LVS工作在网络4层架构中,而...

    Nginx负载均衡

    在大型Web架构中分布式和负载均衡是必不可少的,一般企业常用的负载均衡方式有Nginx负载均衡、LVS负载均衡、硬件负载均衡器(贵)、cdn负载均衡(贵、大公司)等几种方式,LVS工作在网络4层架构中,而Nginx负载均衡工作在网络7层架构中,相对于性能方面来讲,LVS负载均衡方案要高出Nginx负载均衡方案不少,并且能够用在更多的场合,比如Mysql,Redis等的负载均衡上。Nginx负载均衡方案配置比较简单,并且只能应用在HTTP协议层的负载均衡上。废话不多说,先简单地讲解一下Nginx负载均衡的配置,解决中小型项目的燃眉之急。

    一、准备工作

    1.安装准备(三台机器)

    没错,就是三台机器,最低要求,那不然玩什么负载均衡。觉得贵,没办法,只能自己装个虚拟机咯。推荐用VMware, 安装完Linux(我实验的时候是安装的Centos 6.5),然后安装Nginx(不太清楚的可以看一下我的这个Blog中Nginx安装配置部分),安装完成后,其余两台机器可以快速克隆。克隆后可能会出现eth0网卡找不到的情况(提示:修改网卡,具体自己百度吧)

    2.配置明细

    姑且,认为所有的基础环境已经搭建成功,并能够独立访问每台服务器。

    下面,看一下配置明细:

    之前我们准备了三台服务器分别为:

    • 192.168.164.240 Master服务器
    • 192.168.164.241 Slave-one 1号从服务器
    • 192.168.164.242 Slave-two 2号从服务器

    浏览器通过访问 Master服务器,然后Master服务器通过一定的规则来转发到两台从服务器上,从而实现负载均衡。

    3.负载均衡配置

    A.首先配置Master服务器

    #user  nobody;
    worker_processes  4;
    
    pid        /var/run/nginx.pid;
    worker_rlimit_nofile 65535;
    
    events {
        use epoll;
        worker_connections  10000;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  0;
    
        #gzip  on;
    
        # upstream slave config
        upstream master{
                server 192.168.164.241 weight=2;
                server 192.168.164.242 weight=1;
        }       
    
        # upstream master server
        server{
                listen          80;
                server_name     master;
    
                location ~ / {
                        proxy_set_header Host $host;
    
                        proxy_set_header X-Real-IP $remote_addr;
    
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
                        proxy_buffering off;
    
                        proxy_pass http://master;
                }
    
        }
    }
    

    upstream 是上游的意思,也就是来源。当一个请求到来的时候,location到了 / ,然后通过 proxy_pass http://master; 通过上面配置的的upstream来进行代理,请求被转发到upstream上,upstream会按照一定的权重规则(weight=1,默认的权重是1:1,就是平均分配。但是如果在开发过程中如果某台服务器相对来说比较破旧,就需要将它的权重值调低,在upstream中值越大,权重越高,被调用的频率也就会越高。比如客户端发来3次请求,将会有两次落在slave-one服务器上,一次落在slave-two服务器上,这就是权重的作用。)

    B.配置两台从服务器

    #user  nobody;
    worker_processes  4;
    
    pid        /var/run/nginx.pid;
    worker_rlimit_nofile 65535;
    
    events {
        use epoll;
        worker_connections  10000;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  0;
    
        #gzip  on;
    
        # slave server config
        server {
                listen       80;
                server_name  localhost;
                #charset koi8-r;
                access_log  logs/host.access.log  main;
    
                location ~ / {
                        root            /website;
                        index           index.html index.htm;
                }
        }
    }
    

    4.测试

    搭建好环境后,分别在Slave-one服务器 和 Slave-two服务器 的/website/index.html中写上不同的内容。

    # 向Slave-one服务器的index.html文件写入
    echo 'I am from 241 Server' > /website/index.html
    
    # 向Slave-two服务器的index.html文件写入
    echo 'I am from 242 Server' > /website/index.html
    

    通过访问 http://192.168.164.240/,我们可以看到,发送到Master服务器的请求被成功转发到Slave服务器上,并且Slave-one和Slave-two服务器之间的频率是2:1。

    5.Slave故障

    之前我也以为,Master服务器对Slave服务器的down是毫不知情的,但是经过我测试,我在访问Master服务器的时候,突然stop掉其中一台Slave服务器,结果Nginx能够正常识别到Slave的挂掉,并且以后的请求都不会再发送到挂掉的那台服务器。

    其实,这里Master服务器还是存在单点故障,放下次Blog中讲解吧。

    展开全文
  • Nginx 负载均衡

    2019-07-19 17:43:48
    Nginx 负载均衡 什么是负载均衡 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡,英文名称...

    Nginx 负载均衡

    什么是负载均衡

    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

    负载均衡,英文名称为 Load Balance,其意思就是分摊到多个操作单元上进行执行,例如 Web 服务器、FTP 服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

    Nginx 实现负载均衡

    • Nginx 作为负载均衡服务器,用户请求先到达 Nginx,再由 Nginx 根据负载配置将请求转发至 Tomcat 服务器
    • Nginx 负载均衡服务器:192.168.77.121:80
    • Tomcat1 服务器:192.168.77.121:8081
    • Tomcat2 服务器:192.168.77.121:8082
    • 修改 /usr/local/docker/nginx/conf 目录下的 nginx.conf 配置文件:
    user  nginx;
    worker_processes  1;
    
    events {
        use epoll;
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        sendfile        on;
    
        keepalive_timeout  65;
    	
    	upstream myapp1 {
    		server 192.168.141.121:8081 weight=10;
    		server 192.168.141.121:8082 weight=10;
    	}
    
    	server {
    		listen 80;
    		server_name nginx.funtl.com;
    		location / {
    			proxy_pass http://myapp1;
    			index index.jsp index.html index.htm;
    		}
    	}
    }
    

    相关配置说明

    # 定义负载均衡设备的 Ip及设备状态 
    upstream myServer {
        server 127.0.0.1:9090 down;
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:6060;
        server 127.0.0.1:7070 backup;
    }
    

    在需要使用负载的 Server 节点下添加

    proxy_pass http://myServer;
    
    • upstream:每个设备的状态:
    • down:表示当前的 server 暂时不参与负载
    • weight:默认为 1 weight 越大,负载的权重就越大。
    • max_fails:允许请求失败的次数默认为 1 当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
    • fail_timeout:max_fails 次失败后,暂停的时间。
    • backup:其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻
    展开全文
  • Linux Nginx 负载均衡

    万次阅读 2020-03-05 11:07:04
    负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载...
  • NGINX负载均衡算法

    2019-03-14 17:51:24
    NGINX负载均衡算法Nginx负载均衡算法NGINX常见用途NGINX负载均衡算法 Nginx负载均衡算法 NGINX常见用途 反向代理 负载均衡 动静分离 NGINX负载均衡算法 RR轮训。default 每个请求按着时间顺序注意分配到后端...
  • DNS负载均衡与NGINX负载均衡策略

    万次阅读 2017-11-23 23:00:17
    ①客户端与反向代理服务器之间的DNS负载均衡②反向代理服务器与应用服务器之间的负载均衡(这种负载均衡有很多,可以是weblogic的负载均衡,可以是Apache+Tomcat负载均衡,也可以是nginx负载均衡,这里只讨论nginx...
  • nginx 负载均衡策略

    千次阅读 2020-10-01 14:40:08
    Nginx负载均衡有四种方案配置 1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器上。 注意: 缺省配置就是轮询策略; nginx负载均衡支持http和https协议,只需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,282
精华内容 15,712
关键字:

nginx负载均衡