Nginx 部分 (五)负载均衡与资源动静分离

   直到自己翻查笔记的时候才发现,原来遗漏了这部分,还自信满满地仔细翻阅,结果硬是没有~~~~

  本章内容主要如标题,了解配置服务器均衡与前后分离产品的动静态资源处理问题。

目录

   负载均衡

1、按照先来后到的顺序(默认)

2、对不起,分配的人公报私仇的方式(权重)

3、排号按照规律分配(ip_hash)

4、谁做的快谁来好吗?(fair,第三方,需要upstream-fair插件)

5、根据客户名字来分配给你们吧(url_hash ,第三方)

动静分离


 

   负载均衡

  谈谈负载均衡,哟嚯,什么的,听起来就高大上,其实也没有这么神,相当于一个小店里面,开始的时候,因为客户少,亲事亲为是没有什么问题,等名声传开后,总是一个老板去招待客人也不够去应对吧,客人在时间内不得到招待,也会影响口碑,于是会去招聘服务员,然后将不同的客人根据不同的需求方式分给服务员去招待,这样效率就会提升上来,类似的就是这个例子

然后我们说说招待方式:(因为是举例子,会以最简单的配置写出)  

1、按照先来后到的顺序(默认)

根据时间顺序来分配服务员招待客户,当然如果是不太方便的服务员存在的话,当然是不会分配给他/她,我们是会在分配的时候筛选掉这种可能      

    upstream test {
        server localhost:8080;
        server localhost:8081;
    }
    server {
        listen       81;                                                         
        server_name  localhost;                                               

        location / {
            proxy_pass http://test;
            proxy_set_header Host $host;
        }
    }

 

2、对不起,分配的人公报私仇的方式(权重

   我对某几个服务员很不爽哦,我要给他/她们分配多点任务,忙哭他们,哟嚯,如下,基本说来10个客人,只有一个客人分配给8081号服务员,8080对不起,我忙死你

  upstream test {
        server localhost:8080 weight=9; //看你不爽,做多点
        server localhost:8081 weight=1;
    }

 

3、排号按照规律分配(ip_hash

也是到了要摇号分配的时期了,这样我这个老板显得公平点哩

    upstream test {
        ip_hash;
        server localhost:8080;
        server localhost:8081;
    }

tip:(对于不是无状态的程序,一般我们用这种方式避免服务器会话丢失的问题,特别是针对session保存数据的,当然,你本身是共享sessino处理的,当我没说)

 

4、谁做的快谁来好吗?(fair,第三方,需要upstream-fair插件)

根据响应时间分配,做得快的做多点,能者多劳吧。

  upstream backend { 
        fair; 
        server localhost:8080;
        server localhost:8081;
    } 

5、根据客户名字来分配给你们吧(url_hash ,第三方

好吧,这个很难讲故事,正常来:

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend { 
        hash $request_uri; 
        hash_method crc32; 
        server localhost:8080;
        server localhost:8081;
    } 

 

 

动静分离

   其实说白了就是将经常变动和不经常变动的文件进行分配,不是总流行说什么 网页静态化 炫炸天的名称吗?就是按照一定的规律将这些资源分开,并对静态资源做一定的缓存,这大概就折中了这个名词了。

走一个例子:

upstream test{  
       server localhost:8080;  
       server localhost:8081;  
    }   

    server {  
        listen       80;  
        server_name  localhost;  

        location / {  
            root   /coffeeandice/html;  
            index  index.html;  
        }  

        # 所有静态请求都由nginx处理,存放目录为html  
        location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
            root    /coffeeandice/resource;  
        }  

        # 所有动态请求都转发给tomcat处理  
        location ~ .(jsp|do)$ {  
            proxy_pass  http://test;  
        }  

        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   /coffeeandice/html;  
        }  
    } 

这样我们就可以将    

(1) HTML以及 其他资源 放到coffeeandice目录下

(2)tomcat只负责处理jsp和请求

例如当我们后缀为gif的时候,Nginx默认会从coffeeandice获取到当前请求的动态图文件返回,当然这里的静态文件跟Nginx是同一台服务器,我们也可以在另外一台服务器,然后通过反向代理和负载均衡配置过去就好了,只要搞清楚了最基本的流程,很多配置就很简单了。

 好吧,结束。

你可能感兴趣的:(nginx)