成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx入門到實(shí)戰(zhàn)(3)負(fù)載均衡和緩存服務(wù)

fredshare / 1130人閱讀

摘要:負(fù)載均衡與緩存服務(wù)也是屬于的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒有一同放入入門到實(shí)戰(zhàn)場(chǎng)景實(shí)現(xiàn)篇文章中,將其多帶帶提取出來一負(fù)載均衡負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向代理。

負(fù)載均衡與緩存服務(wù)也是屬于 nginx 的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒有一同放入 Nginx入門到實(shí)戰(zhàn)(2)場(chǎng)景實(shí)現(xiàn)篇 文章中,將其多帶帶提取出來
一、負(fù)載均衡

負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向代理 。將客戶的請(qǐng)求通過 nginx 分發(fā)(反向代理)到一組多臺(tái)不同的服務(wù)器上

這一組服務(wù)器我們稱為 服務(wù)池(upstream server),池內(nèi)的每一個(gè)服務(wù)器稱為一個(gè) 單元,服務(wù)池內(nèi)將對(duì)每一個(gè)單元進(jìn)行請(qǐng)求輪訓(xùn),實(shí)現(xiàn)負(fù)載均衡

#配置
語法:upstream name ...
默認(rèn):——
位置:http
upstream #自定義組名 {
    server x1.baidu.com;    #可以是域名
    server x2.baidu.com;    
    #server x3.baidu.com    
                            #down         不參與負(fù)載均衡
                            #weight=5;    權(quán)重,越高分配越多  
                            #backup;      預(yù)留的備份服務(wù)器
                            #max_fails    允許失敗的次數(shù)
                            #fail_timeout 超過失敗次數(shù)后,服務(wù)暫停時(shí)間
                            #max_coons    限制最大的接受的連接數(shù)
                            #根據(jù)服務(wù)器性能不同,配置適合的參數(shù)
    
    #server 106.xx.xx.xxx;        可以是ip
    #server 106.xx.xx.xxx:8080;   可以帶端口號(hào)
    #server unix:/tmp/xxx;        支出socket方式
}

假設(shè)我們有三臺(tái)服務(wù)器,并且假設(shè)它們的IP地址,前端負(fù)載均衡服務(wù)器A(127.0.0.1),后臺(tái)服務(wù)器B(127.0.0.2),后臺(tái)服務(wù)器C(127.0.0.3)

新建文件 proxy.conf,內(nèi)容如下,上一章介紹的反向代理配置

proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
#服務(wù)器A的配置
http {
    ...
    upstream xxx {
        server 127.0.0.2;
        server 127.0.0.3;
    }
    server {
        liseten 80;
        server_name localhost;
        location / {
            proxy_pass http://xxx     #upstream 對(duì)應(yīng)自定義名稱
            include proxy.conf;  
        }
    }
}
#服務(wù)器B、服務(wù)器C的配置
server {
    liseten 80;
    server_name localhost;
    location / {
         index  index.html
    }
}

調(diào)度算法

輪訓(xùn):按時(shí)間順序逐一分配到不同的后端服務(wù)器

加權(quán)輪訓(xùn):weight值越大,分配到的幾率越高

ip_hash:每個(gè)請(qǐng)求按訪問IP的hash結(jié)果分配,這樣來自同一個(gè)IP固定訪問一個(gè)后端服務(wù)器

least_conn:最少鏈接數(shù),哪個(gè)機(jī)器連接數(shù)少就分發(fā)給誰

url_hash:按照訪問的URL的hash結(jié)果來分配請(qǐng)求,每一個(gè)URL定向到同一個(gè)后端服務(wù)器

hash關(guān)鍵數(shù)值:hash自定義key

ip_hash 配置

  upstream xxx {
        ip_hash;
        server 127.0.0.2;
        server 127.0.0.3;
  }

ip_hash存在缺陷,當(dāng)前端服務(wù)器再多一層時(shí),將獲取不到用戶的正確IP,獲取的將是前一個(gè)前端服務(wù)器的IP,因此 nginx1.7.2版本推出了 url_hash

url_hash 配置

  upstream xxx {
        hash $request_uri;
        server 127.0.0.2;
        server 127.0.0.3;
  }
二、緩存服務(wù)

1. 緩存類型

服務(wù)端緩存:緩存存儲(chǔ)在后端服務(wù)器,如redis,memcache

代理緩存:緩存存儲(chǔ)在代理服務(wù)器或者中間件上,它的內(nèi)容是從后端服務(wù)器獲取的,但是保存在自己本地

客戶端緩存:緩存在瀏覽器內(nèi)的

2. nginx 代理緩存
客戶端請(qǐng)求nginx,nginx查看本地是否有緩存數(shù)據(jù),若有直接返回給客戶端,若沒有再去后端服務(wù)器請(qǐng)求

http {          
    proxy_cache_path    /var/www/cache #緩存地址
                        levels=1:2 #目錄分級(jí)
                        keys_zone=test_cache:10m #開啟的keys空間名字:空間大小(1m可以存放8000個(gè)key)
                        max_size=10g #目錄最大大小(超過時(shí),不常用的將被刪除)
                        inactive=60m #60分鐘內(nèi)沒有被訪問的緩存將清理
                        use_temp_path=pff; #是否開啟存放臨時(shí)文件目錄,關(guān)閉默認(rèn)存儲(chǔ)在緩存地址 
                                         
    server {
        ...
        location / {
            proxy_cache test_cache;    #開啟緩存對(duì)應(yīng)的名稱,在keys_zone命名好
            proxy_cache_valid 200 304 12h;    #狀態(tài)碼為200 304的緩存12小時(shí)
            proxy_cache_valid any 10m;    #其他狀態(tài)緩存10小時(shí)
            proxy_cache_key $host$uri$is_args$args;    #設(shè)置key值
            add_header Nginx-Cache "$upstream_cache_status";
        }     
    }                    
}

當(dāng)有個(gè)特定請(qǐng)求我們不需要緩存的時(shí)候,在上面配置的內(nèi)容中加入以下配置

server {
    ...
    if ($request_uri ~ ^/(login|register) ) {    #當(dāng)請(qǐng)求地址有l(wèi)ogin或register時(shí)
        set $nocache = 1;    #設(shè)置一個(gè)自定義變量為true
    }  
    location / {
        proxy_no_cache $nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authoriztion;
    }
}

3. 分片請(qǐng)求

早期版本 nginx 對(duì)大文件的分片請(qǐng)求不支持緩存,1.9版本后slice模塊實(shí)現(xiàn)了這個(gè)功能
前端發(fā)起請(qǐng)求,nginx去獲取這個(gè)請(qǐng)求文件的大小,若超過我們的定義slice的大小,會(huì)進(jìn)行切片,分割成多個(gè)小的請(qǐng)求去請(qǐng)求后端,到前端就成為一個(gè)一個(gè)獨(dú)立的緩存文件

優(yōu)勢(shì):每個(gè)子請(qǐng)求收到的數(shù)據(jù)都會(huì)形成獨(dú)立文件,一個(gè)請(qǐng)求中斷了,其他請(qǐng)求不受影響,原本情況請(qǐng)求中斷,再次請(qǐng)求文件將從頭開始,而開啟分片請(qǐng)求,就接下去獲取未請(qǐng)求的小文件

劣勢(shì):當(dāng)文件很大或者slice很小時(shí),可能會(huì)導(dǎo)致文件描述符耗盡等情況

 語法:   slice size;    #當(dāng)大文件請(qǐng)求時(shí),設(shè)置size為每個(gè)小文件的大小
 默認(rèn):   slice 0;
 位置:   http/server/location

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30801.html

相關(guān)文章

  • Nginx入門實(shí)戰(zhàn)3負(fù)載均衡緩存服務(wù)

    摘要:負(fù)載均衡與緩存服務(wù)也是屬于的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒有一同放入入門到實(shí)戰(zhàn)場(chǎng)景實(shí)現(xiàn)篇文章中,將其單獨(dú)提取出來一負(fù)載均衡負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向代理。 負(fù)載均衡與緩存服務(wù)也是屬于 nginx 的實(shí)用場(chǎng)景之一,因?yàn)槟K相對(duì)重要,所以沒有一同放入 Nginx入門到實(shí)戰(zhàn)(2)場(chǎng)景實(shí)現(xiàn)篇 文章中,將其單獨(dú)提取出來 一、負(fù)載均衡 負(fù)載均衡的實(shí)現(xiàn)方法就是我們上章介紹的反向...

    fsmStudy 評(píng)論0 收藏0
  • 后端工程師的 Nginx 服務(wù)器烹調(diào)書

    摘要:說明對(duì)后端服務(wù)來講,服務(wù)器由其高性能得到廣泛應(yīng)用。原書為英文版,由于自己英語水平所限,在進(jìn)行系統(tǒng)學(xué)習(xí)之前,大致瀏覽并使用翻譯工具將免費(fèi)版服務(wù)器配置部分進(jìn)行了漢化整理,并取名烹調(diào)書。手冊(cè)發(fā)布當(dāng)前漢化版發(fā)布在烹調(diào)書,會(huì)于近期將源碼發(fā)布到。 說明 對(duì)后端服務(wù)來講,Nginx 服務(wù)器由其高性能得到廣泛應(yīng)用。使用 PHP 語言從事后端服務(wù)開發(fā)工作 6 年,但是如何入門 Nginx 及如何配置優(yōu)化...

    kevin 評(píng)論0 收藏0
  • 基于Nginx的中間件架構(gòu)(二):代理服務(wù)負(fù)載均衡、緩存服務(wù)、動(dòng)靜分離

    摘要:缺點(diǎn)客戶端可能會(huì)再用一層代理三緩存服務(wù)理解緩存類型配置語法協(xié)議等域名請(qǐng)求參數(shù)清理指定緩存讓部分頁(yè)面不緩存大文件分片請(qǐng)求四動(dòng)靜分離參考視頻資料入門到實(shí)踐不管是運(yùn)維還是開發(fā)都是你的必備技能下一篇基于的中間件架構(gòu)三規(guī)則和讀取地域信息模塊服務(wù) 上一篇:基于Nginx的中間件架構(gòu)(一):配置語法、Nginx模塊、請(qǐng)求限制和訪問控制、靜態(tài)WEB服務(wù) 一、代理服務(wù)(理解) 代理 - 代為辦理(如代...

    Wuv1Up 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

fredshare

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<