<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 什么是Nginx? * Nginx是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。 * 2011年6月1日,nginx 1.0.4發布。 * 特點是配置簡單,占有內存少,并發能力強。 ## nginx的四大功能是什么? (1)正向代理 在客戶端(瀏覽器)配置代理服務器,通過代理服務器進行互聯網訪問。 (2)反向代理 我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,在返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址。 (3)負載均衡 單個服務器解決不了,我們增加服務器的數量,然后將請求分發到各個服務器上,將原先請求集中到單個服務器上的情況改為將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們所說的負載均衡。 (4)動靜分離 為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的服務器來解析,加快解析速度。降低原來單個服務器的壓力。 ## nginx和apache的區別? 輕量級:同樣起web 服務,nginx 比apache 占用更少的內存及資源; 抗并發:nginx處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能; 模塊化:nginx編寫模塊相對簡單; IO事件模型:apache是同步多進程模型,一個連接對應一個進程,阻塞;nginx是異步的,多進程單線程,異步非阻塞,多個連接(萬級別)可以對應一個進程。 功能豐富:Nginx提供負載均衡,可以做做反向代理,前端服務器 ## Nginx 常用命令有哪些? * 啟動`nginx`。 * 停止`nginx -s stop`或`nginx -s quit`。 * 重啟`nginx -s reload`或`service nginx reload`。 * 重載指定配置文件`.nginx -c /usr/local/nginx/conf/nginx.conf`。 * 查看 nginx 版本`nginx -v`。 ## nginx報500、502、503、504 有什么區別? 簡單的說, **500**: Internal Server Error 內部服務錯誤,比如腳本錯誤,編程語言語法錯誤。 **502**: Bad Gateway錯誤,網關錯誤。比如服務器當前連接太多,響應太慢,頁面素材太多、帶寬慢。 **503**: Service Temporarily Unavailable,服務不可用,web服務器不能處理HTTP請求,ip超頻訪問導致限流,或者臨時超載或者是服務器進行停機維護。 **504**: Gateway timeout 網關超時,程序執行時間過長導致響應超時,例如程序需要執行20秒,而nginx最大響應等待時間為10秒,這樣就會出現超時。 ## Nginx的負載均衡算法都有哪些? 0)、輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 1)、weight 指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。 2)、ip\_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 3)、fair(第三方) 按后端服務器的響應時間來分配請求,響應時間短的優先分配。 4)、url\_hash(第三方) 根據url的hash結果分配 ## Nginx的 反向代理和正向代理怎么理解? 正向代理:局域網中的電腦用戶想要直接訪問網絡是不可行的,只能通過代理服務器來訪問,這種代理服務就被稱為正向代理。 ![](https://img.kancloud.cn/8b/29/8b2919153e35dc312f8dbc4b73a6d560_624x411.png) 反向代理:客戶端無法感知代理,因為客戶端訪問網絡不需要配置,只要把請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據,然后再返回到客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址 ![](https://img.kancloud.cn/28/c1/28c1cb649db30c3ba3f01d07c06f62e7_658x471.png) > 正向代理服務器代理的是客戶端,而反向代理服務器代理的是服務端 ## 為什么Nginx性能這么高? 得益于它的事件處理機制: 異步非阻塞事件處理機制:運用了epoll模型,提供了一個隊列,排隊解決 ## 為什么不使用多線程? Nginx:采用單線程來異步非阻塞處理請求(管理員可以配置Nginx主進程的工作進程的數量),不會為每個請求分配cpu和內存資源,節省了大量資源,同時也減少了大量的CPU的上下文切換,所以才使得Nginx支持更高的并發。 ## 什么是C10K問題? C10K問題是指無法同時處理大量客戶端(10,000)的網絡套接字。 ## 使用反向代理的優點是什么? 反向代理服務器可以隱藏源服務器的存在和特征。它充當互聯網云和web服務器之間的中間層。 這對于安全方面來說是很好的,特別是當您使用web托管服務時。 ## Nginx應用場景有哪些? 1. http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。 2. 虛擬主機。可以實現在一臺服務器虛擬出多個網站,例如個人網站使用的虛擬機。 3. 反向代理,負載均衡。當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理。并且多臺服務器可以平均分擔負載,不會應為某臺服務器負載高宕機而某臺服務器閑置的情況。 4. nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口網關,對每個接口服務進行攔截。 ## Nginx怎么處理請求的? nginx接收一個請求后,首先由listen和server\_name指令匹配server模塊,再匹配server模塊里的location,location就是實際地址。 ~~~ server { # 第一個Server區塊開始,表示一個獨立的虛擬主機站點 listen 80; # 提供服務的端口,默認80 server_name localhost; # 提供服務的域名主機名 location / { # 第一個location區塊開始 root html; # 站點的根目錄,相當于Nginx的安裝目錄 index index.html index.htm; # 默認的首頁文件,多個用空格分開 } # 第一個location區塊結果 ~~~ ## nginx的目錄結構了解么? ~~~ [root@localhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp ├── conf # Nginx所有配置文件的目錄 │ ├── fastcgi.conf # fastcgi相關參數的配置文件 │ ├── fastcgi.conf.default # fastcgi.conf的原始備份文件 │ ├── fastcgi_params # fastcgi的參數文件 │ ├── fastcgi_params.default │ ├── koi-utf │ ├── koi-win │ ├── mime.types # 媒體類型 │ ├── mime.types.default │ ├── nginx.conf # Nginx主配置文件 │ ├── nginx.conf.default │ ├── scgi_params # scgi相關參數文件 │ ├── scgi_params.default │ ├── uwsgi_params # uwsgi相關參數文件 │ ├── uwsgi_params.default │ └── win-utf ├── fastcgi_temp # fastcgi臨時數據目錄 ├── html # Nginx默認站點目錄 │ ├── 50x.html # 錯誤頁面優雅替代顯示文件,例如當出現502錯誤時會調用此頁面 │ └── index.html # 默認的首頁文件 ├── logs # Nginx日志目錄 │ ├── access.log # 訪問日志文件 │ ├── error.log # 錯誤日志文件 │ └── nginx.pid # pid文件,Nginx進程啟動后,會把所有進程的ID號寫到此文件 ├── proxy_temp # 臨時目錄 ├── sbin # Nginx命令目錄 │ └── nginx # Nginx的啟動命令 ├── scgi_temp # 臨時目錄 └── uwsgi_temp # 臨時目錄 ~~~ ## Nginx配置文件nginx.conf有哪些屬性模塊? ~~~ worker_processes 1; # worker進程的數量 events { # 事件區塊開始 worker_connections 1024; # 每個worker進程支持的最大連接數 } # 事件區塊結束 http { # HTTP區塊開始 include mime.types; # Nginx支持的媒體類型庫文件 default_type application/octet-stream; # 默認的媒體類型 sendfile on; # 開啟高效傳輸模式 keepalive_timeout 65; # 連接超時 server { # 第一個Server區塊開始,表示一個獨立的虛擬主機站點 listen 80; # 提供服務的端口,默認80 server_name localhost; # 提供服務的域名主機名 location / { # 第一個location區塊開始 root html; # 站點的根目錄,相當于Nginx的安裝目錄 index index.html index.htm; # 默認的首頁文件,多個用空格分開 } # 第一個location區塊結果 error_page 500502503504 /50x.html; # 出現對應的http狀態碼時,使用50x.html回應客戶 location = /50x.html { # location區塊開始,訪問50x.html root html; # 指定對應的站點目錄為html } } ...... ~~~ ## 虛擬主機是什么意思? Nginx可以實現一臺服務器虛擬出多個站點。 ## location的作用是什么? location指令的作用是根據用戶請求的URI來執行不同的應用,也就是根據用戶請求的網站URL進行匹配,匹配成功即進行相關的操作。 ## location的語法能說出來嗎? 注意:~ 代表自己輸入的英文字母 | 匹配符 | 匹配規則 | 優先級 | | --- | --- | --- | | \= | 精確匹配 | 1 | | ^~ | 以某個字符串開頭 | 2 | | ~ | 區分大小寫的正則匹配 | 3 | | ~\* | 不區分大小寫的正則匹配 | 4 | | !~ | 區分大小寫不匹配的正則 | 5 | | !~\* | 不區分大小寫不匹配的正則 | 6 | | / | 通用匹配,任何請求都會匹配到 | 7 | ## Nginx 壓縮了解嗎,如何開啟壓縮? 開啟nginx gzip壓縮后,圖片、css、js等靜態資源的大小會減小,可節省帶寬,提高傳輸效率,但是會消耗CPU資源。 開啟: ~~~ # 開啟gzip gzip off; # 啟用gzip壓縮的最小文件,小于設置值的文件將不會壓縮 gzip_min_length 1k; # gzip 壓縮級別,1-9,數字越大壓縮的越好,也越占用CPU時間,后面會有詳細說明 gzip_comp_level 1; # 進行壓縮的文件類型。javascript有多種形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; ~~~ ## nginx是如何實現高并發的? 簡單來講,就是: > **異步,非阻塞,使用了epoll和大量的底層代碼優化** 稍微詳細一點展開的話,就是nginx的特殊進程模型和事件模型的設計。 **進程模型** nginx采用一個master進程,多個woker進程的模式。 1. master進程主要負責收集、分發請求。當一個請求過來時,master拉起一個worker進程負責處理這個請求。 2. master進程也要負責監控woker的狀態,保證高可靠性 3. woker進程一般設置為跟cpu核心數一致。nginx的woker進程跟apache不一樣。apche的進程在同一時間只能處理一個請求,所以它會開很多個進程,幾百甚至幾千個。而nginx的woker進程在同一時間可以處理額請求數只受內存限制,因此可以處理多個請求。 **事件模型** nginx是異步非阻塞的。 每進來一個request,會有一個worker進程去處理。但不是全程的處理,處理到什么程度呢?處理到可能發生阻塞的地方,比如向上游(后端)服務器轉發request,并等待請求返回。那么,這個處理的worker不會這么傻等著,他會在發送完請求后,注冊一個事件:“如果upstream返回了,告訴我一聲,我再接著干”。于是他就休息去了。此時,如果再有request 進來,他就可以很快再按這種方式處理。而一旦上游服務器返回了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。 web server的工作性質決定了每個request的大部份生命都是在網絡傳輸中,實際上花費在server機器上的時間片不多。這是幾個進程就解決高并發的秘密所在。 ## Nginx的master和worker是如何工作的? 可以參考上題,nginx的事件模型和進程模型。 ## nginx怎么結合php處理動態請求? Nginx不支持對外部程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調用。 FastCGI接口在Linux下是socket,(這個socket可以是文件socket,也可以是ip socket)。為了調用CGI程序,還需要一個FastCGI的wrapper(wrapper可以理解為用于啟動另一個程序的程序),這個wrapper綁定在某個固定socket上,如端口或者文件socket。 當Nginx將CGI請求發送給這個socket的時候,通過FastCGI接口,wrapper接納到請求,然后派生出一個新的線程,這個線程調用解釋器或者外部程序(php-fpm)處理腳本并讀取返回數據。 接著,wrapper再將返回的數據通過FastCGI接口,沿著固定的socket傳遞給Nginx; 最后,Nginx將返回的數據發送給客戶端,這就是Nginx+FastCGI的整個運作過程。 ![](https://img.kancloud.cn/4f/28/4f28367364d203823d48221a41e90dfe_573x235.png) ![](https://img.kancloud.cn/48/b5/48b58d76c1b37f01b9d2903e070acea2_723x370.png) ## nginx中fastcgi有什么優化點? fastcgi\_cache\_path /usr/local/nginx/fastcgi\_cache levels=1:2 keys\_zone=TEST:10minactive=5m; 這個指令為FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。 fastcgi\_connect\_timeout 300; 指定連接到后端FastCGI 的超時時間。 fastcgi\_send\_timeout 300; 向FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手后向FastCGI 傳送請求的超時時間。 fastcgi\_read\_timeout 300; 接收FastCGI 應答的超時時間,這個值是指已經完成兩次握手后接收FastCGI 應答的超時時間。 fastcgi\_buffer\_size 4k; 指定讀取FastCGI 應答第一部分需要用多大的緩沖區,一般第一部分應答不會超過1k,由于頁面大小為4k,所以這里設置為4k。 fastcgi\_buffers 8 4k; 指定本地需要用多少和多大的緩沖區來緩沖FastCGI 的應答。 fastcgi\_busy\_buffers\_size 8k; 這個指令我也不知道是做什么用,只知道默認值是fastcgi\_buffers 的兩倍。 fastcgi\_temp\_file\_write\_size 8k; 在寫入fastcgi\_temp\_path 時將用多大的數據塊,默認值是fastcgi\_buffers 的兩倍。 fastcgi\_cache TEST 開啟FastCGI 緩存并且為其制定一個名稱。個人感覺開啟緩存非常有用,可以有效降低CPU 負載,并且防止502 錯誤。 fastcgi\_cache\_valid 200 302 1h; fastcgi\_cache\_valid 301 1d; fastcgi\_cache\_valid any 1m; 為指定的應答代碼指定緩存時間,如上例中將200,302 應答緩存一小時,301 應答緩存1 天,其他為1 分鐘。 fastcgi\_cache\_min\_uses 1; 緩存在fastcgi\_cache\_path 指令inactive 參數值時間內的最少使用次數,如上例,如果在5 分鐘內某文件1 次也沒有被使用,那么這個文件將被移除。 fastcgi\_cache\_use\_stale error timeout invalid\_header http\_500; ## nginx的常用優化方案有哪些? 可以分為**nginx指令中的優化**和**內核參數的優化**。 >worker_processes 改為cpu核心數 worker_processes? 4;  #定位為cpu的內核數量,最大8 >worker_cpu_affinity 開啟多核CPU使用 worker_cpu_affinity 0001 0010 0100 1000 第一位0001(關閉第四個、關閉第三個、關閉第二個、開啟第一個) 第二位0010(關閉第四個、關閉第三個、開啟第二個、關閉第一個) 第三位0100(關閉第四個、開啟第三個、關閉第二個、關閉第一個) > errorlog 配置crit盡量精簡寫log,減少磁盤IO **error_log? /data/logs/nginx/error.log crit;** 常見的錯誤日志級別有\[debug | info | notice | warn | error | crit | alert | emerg\],級別越高記錄的信息越少。 生產場景一般是?warn | error | crit?這三個級別之一 注意:不要配置info等級較低的級別,會帶來大量的磁盤I/O消耗。 >worker_rlimit_nofile 自行配置nginx的worker進程打開的最大文件數, worker_rlimit_nofile 65535; 如果不配置,會讀取服務器內核參數(通過ulimit -a查看) >網絡IO事件模型使用 epoll use epoll; >worker_connections 設置一個worker可以打開的最大連接數 worker\_connections 65535; > 開啟gzip,會大量減少我們的發數據的量 gzip on; ## 作為負載均衡,lvs和nginx有什么區別? lvs 與 nginx 對比: 負載度: ? ?lvs 優于 nginx? 穩定度: ? ?lvs 優于 nginx 服務器性能要求: lvs 優于 nginx 網絡層數的效率: lvs 優于 nginx(網絡七層:應用層、會話層、表示層、傳輸層、網絡層、鏈路層、 物理層) 功能多少 :? nginx 優于 lvs nginx工作在網絡的第7層,lvs工作在第四層。所以nginx可以針對http應用本身來做分流策略,比如針對域名、目錄結構等,相比之下lvs并不具備這樣的功能。 ## nginx如何實現限流? Nginx 提供兩種限流方式,一是控制速率,二是控制并發連接數。 (1)控制速率 `ngx_http_limit_req_module`模塊提供了漏桶算法(leaky bucket),可以限制單個IP的請求處理頻率。 如: **1.1 正常限流:** ~~~ http { limit_req_zone 192.168.1.1 zone=myLimit:10m rate=5r/s; } server { location / { limit_req zone=myLimit; rewrite / http://www.hac.cn permanent; } } ~~~ 參數解釋: ~~~ key: 定義需要限流的對象。 zone: 定義共享內存區來存儲訪問信息。 rate: 用于設置最大訪問速率。 ~~~ 表示基于客戶端192.168.1.1進行限流,定義了一個大小為10M,名稱為myLimit的內存區,用于存儲IP地址訪問信息。rate設置IP訪問頻率,rate=5r/s表示每秒只能處理每個IP地址的5個請求。Nginx限流是按照毫秒級為單位的,也就是說1秒處理5個請求會變成每200ms只處理一個請求。如果200ms內已經處理完1個請求,但是還是有有新的請求到達,這時候Nginx就會拒絕處理該請求。 **1.2 突發流量限制訪問頻率** 上面rate設置了 5r/s,如果有時候流量突然變大,超出的請求就被拒絕返回503了,突發的流量影響業務就不好了。 這時候可以加上**burst**參數,一般再結合**nodelay**一起使用。 ~~~ server { location / { limit_req zone=myLimit burst=20 nodelay; rewrite / http://www.hac.cn permanent; } } ~~~ `burst=20 nodelay`表示這20個請求立馬處理,不能延遲,相當于特事特辦。不過,即使這20個突發請求立馬處理結束,后續來了請求也不會立馬處理。burst=20 相當于緩存隊列中占了20個坑,即使請求被處理了,這20個位置這只能按 100ms一個來釋放。 (2)控制并發連接數 `ngx_http_limit_conn_module`提供了限制連接數功能。 ~~~ limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; limit_conn perserver 100; } ~~~ `limit_conn perip 10`作用的key 是`$binary_remote_addr`,表示限制單個IP同時最多能持有10個連接。 `limit_conn perserver 100`作用的key是`$server_name`,表示虛擬主機(server) 同時能處理并發連接的總數。 \> 注:**limit\_conn perserver 100**作用的key是\*\*$server\_name\*\*,表示虛擬主機(server) 同時能處理并發連接的總數。 **1.3 白名單區分限速** 如果不想做限流,還可以設置白名單: 利用 Nginx`ngx_http_geo_module`和`ngx_http_map_module`兩個工具模塊提供的功能。 ~~~ ##定義白名單ip列表變量 geo $limit { default 1; 10.0.0.0/8 0; 192.168.0.0/10 0; 81.56.0.35 0; } map $limit $limit_key { 0 ""; 1 $binary_remote_addr; } # 正常限流設置 limit_req_zone $limit_key zone=myRateLimit:10m rate=10r/s; ~~~ **geo**對于白名單 將返回0,不限流;其他IP將返回1,進行限流。 ## nginx可以實現限速么? 除此之外: `ngx_http_core_module`還提供了限制數據傳輸速度的能力(即常說的下載速度) ~~~ location /flv/ { flv; limit_rate_after 500m; limit_rate 50k; } ~~~ 針對每個請求,表示客戶端下載前500m的大小時不限速,下載超過了500m后就限速50k/s。 ## 如何修改worker 進程數? 在 conf/nginx.conf 文件中修改 worker\_processes 數字即可。 ![在這里插入圖片描述](https://www.pianshen.com/images/820/1aab3dd1ff59916253de79c11cbe58ec.png) ## Nginx 基本命令有哪些? ./nginx -s stop ./nginx -s quit ./nginx -s reload ./nginx ./nginx -t ## Nginx進程模型 ![](https://img.kancloud.cn/23/bb/23bb40683f360232932cdf107e913c52_755x361.png) ## Nginx 搶占機制 ![](https://img.kancloud.cn/01/76/01766937ae8923d90d47eafeef38057b_820x217.png) ## 怎么修改nginx打印的日志格式? Nginx 服務器提供了一個 HttpLogModule 模塊,可以通過它來設置日志的輸出格式。 ![](https://img.kancloud.cn/92/6b/926b20a7541312216361c0d43ec246b6_744x106.png) Nginx 日志格式中,有很多參數,總結如下: ~~~ 參數 說明 示例 $remote_addr 客戶端地址 14.116.133.170 $remote_user 客戶端用戶名稱 -- $time_local 訪問時間和時區 03/Mar/2019:16:43:53 +0800 $request 請求的URI和HTTP協議 "GET /city/static/js/illegals/vehicle-search.js HTTP/1.1" $http_host 請求地址,即瀏覽器中你輸入的地址(IP或域名) www.super.com 192.168.118.15 $status HTTP請求狀態 200 $upstream_status upstream狀態 200 $body_bytes_sent 發送給客戶端文件內容大小 1547 $http_referer url跳轉來源 https://www.baidu.com/ $http_user_agent 用戶終端瀏覽器等信息 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0 $ssl_protocol SSL協議版本 TLSv1 $ssl_cipher 交換數據中的算法 RC4-SHA $upstream_addr 后臺upstream的地址,即真正提供服務的主機地址 192.168.118.16:8080 $request_time 整個請求的總時間 0.205 $upstream_response_time 請求過程中,upstream響應時間 0.002 ~~~ 通過更改這里,可以達到想要的結果,如果想打印post請求傳參,可以通過安裝第三方組件來完成。 ## 簡單的說下nginx優化的點 1.使用epoll模型 2.提高進程數、打開連接數 3.啟用gzip壓縮傳輸 4.為靜態文件啟用緩存 5.Timeouts設置 6.防盜鏈設置 7.非法腳本 8.防止ddoc攻擊 9.禁止惡意域名解析 10.隱藏版本信息 ## keepalived是什么? keepalived最初是專為LVS負載均衡軟件設計的,用來管理并監控LVS集群系統中各個服務節點的狀態,后來又加入了實現高可用的VRRP功能。keepalived除了能夠管理LVS軟件外,還能支持其他服務的高可用解決方案。 keepalived通過VRRP協議實現高可用功能的。VRRP(Virtual Router Redundancy Protocol)虛擬路由冗余協議。VRRP出現的目的就是為了解決靜態路由單點故障問題,它能保證當個別節點宕機時,整個網絡可以不間斷地運行。 ## keepalived高可用故障轉移原理是什么? keepalived高可用服務之間的故障轉移,是通過VRRP來實現的。在keepalived服務工作時,主Master節點會不斷地向備節點發送(多播的方式)心跳消息,用來告訴備Backup節點自己還活著。 當主節點發生故障時,無法給備節點發送心跳消息,如果備節點無法繼續檢測到來自主節點的心跳。就會調用自身的接管程序,接管主節點的IP資源和服務。當主節點恢復時,備節點又會釋放主節點故障時自身接管的IP資源和服務,恢復到原來的備用角色。 ## nginx反向代理負載均衡,如何和php通信的 可以按照輪詢、ip哈希、URL哈希、權重等多種方式對后端服務器做負載均衡 nginx 的 upstream目前支持 4 種方式的分配 1)、輪詢(默認)   每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 ![](https://img.kancloud.cn/ac/4a/ac4a619507d47e53a19bba0c37e4c06c_1139x102.png) 2)、weight   指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。 ![](https://img.kancloud.cn/a9/52/a952d2f5a87275f0043658c0b1125300_1140x100.png) 2)、ip\_hash   每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 ![](https://img.kancloud.cn/9c/55/9c5587292d75e37acfb88c76eeec72c8_1138x136.png) 3)、fair(第三方)   按后端服務器的響應時間來分配請求,響應時間短的優先分配。 ![](https://img.kancloud.cn/33/74/337491cd2e15eb26622802dd204def75_1148x136.png) 4)、url_hash(第三方) ![](https://img.kancloud.cn/65/e1/65e1877f5c2f0b888ed8a26a50a47186_1145x165.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看