美文网首页
Nginx之反向代理与负载均衡实现动静分离实战

Nginx之反向代理与负载均衡实现动静分离实战

作者: 心疼你萌萌哒 | 来源:发表于2018-07-10 21:46 被阅读0次
    负载均衡指的是对请求数据包的转发,从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器
    的客户端的真实用户,而反向代理服务器指的是接收到用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,范文的节点服务器的客户端用的就是反向代理服务器了,而非真实的网站访问用户。
    

    Nginx http功能模块

    ngx_nginx upstream       负载均和模块,可以实现网站的负载均衡功能及节点的健康检查
    
    ngx_http_proxy_module      Proxy模块,用于把请求后抛给服务器节点或upstream服务器池
    

    Nginx的upstream支持5种分配方式。其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:

    1)rr轮询     
            轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端
    服务器down掉后,能自动剔除。按照1:1轮询。
            upstream backend {
                server 192.168.1.101:88;
                server 192.168.1.102:88;
            }
    2)wrr轮询       
            轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
            upstream backend {
                server 192.168.1.101 weight=1;
                server 192.168.1.102 weight=2;
                server 192.168.1.103 weight=3;
            }
    3)ip_hash  (upstream_fair)      
            每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问
    一个后端服务器,可以解决session一致问题。
            upstream backend {
                ip_hash;
                server 192.168.1.101:81;
                server 192.168.1.102:82;
                server 192.168.1.103:83;
            }
    注:当使用ip_hash时,服务器状态不可使用weight和backup
    4)fair    (第三方的hash模块)      
            fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优
    先分配请求。
            upstream backend {
                server 192.168.1.101;
                server 192.168.1.102;
                fair;
            }
    5)url_hash
            与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应
    用于后端服务器为缓存时的场景下。
            upstream backend {
                server 192.168.1.101;
                server 192.168.1.102;
                hash $request_uri;
                hash_method crc32;
            }
    

    upstream支持的状态参数

    down:               暂停对该服务器的调度
    backup:             类似于LVS Sorry Server,当所有的非backup的服务器故障
    max_fails:          请求失败的次数,默认为1
    fail_timeout:       在经历max_fails次失败后,暂停服务的时间
    
                  [vip: 10.0.0.11]
    
            [LB1 Nginx]         [LB2 Nginx]
            10.0.0.20           10.0.0.21
    
              web1     web2              phpserver1     phpserver2
        10.0.0.22      10.0.0.23           10.0.0.24       10.0.0.24
    

    一、实施过程

    后端服务器部署详细过程:
    安装软件:
        # yum install nginx php php-fpm -y
        # vim /etc/nginx/nginx.conf   //添加php配置
        在server里面添加如下配置:
        location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
       
       修改php-fpm进程账户并开启php-fpm的进程: 端口是9000  
       #vim /etc/php-fpm.d/www.conf  //修改如下参数,默认值是apache
       user = nginx
       group = nginx
       
       为什么设置成nginx:
           因为nginx.conf配置的账户为nginx
       
       # systemctl start php-fpm
           
    
    前端nginx反向代理服务器:
    upstream web {
        server 10.0.0.22 weight=1 max_fails=2 fail_timeout=2;
            server 10.0.0.23 max_fails=2 fail_timeout=5 down;
            }
    upstream phpserver {
        server 10.0.0.24 backup;
        server 10.0.0.25;
            }       #上面的配置写到http里面server外面
           
    server {
        listen 80;
            server_name www.baidu.com;
    location ~* \.html${            #html的配置
            proxy_pass http://web;
            }
    
    location ~* \.php$ {         #php的配置
            proxy_pass http://phpserver;
        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_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
    
        proxy_buffering on;      
        proxy_buffer_size 32k;   
        proxy_buffers 4 128k;
        proxy_busy_buffers_size 256k;
        proxy_max_temp_file_size 256k;
            }
    }
    

    相关文章

      网友评论

          本文标题:Nginx之反向代理与负载均衡实现动静分离实战

          本文链接:https://www.haomeiwen.com/subject/tuoqpftx.html