Linux營運必會的面試題(一)

來源:互聯網
上載者:User

標籤:linux   營運   面試題   

一、Varnish、Nginx、Squid各自緩衝的優缺點

要做cache服務的話,我們肯定是要選擇專業的cache服務,優先選擇Squid和Varnish。


    

  Varnish


                   Nginx


       Squid

優點

1. 高效能;

2. 多核支援;

3. 支援0-60秒的精確緩衝時間。
  1. 跨平台

  2. 非阻塞、高並發串連(得益於使用了最新的epoll模型)

  3. 事件驅動(通過非同步非阻塞的事件處理機制,Nginx實現由進程迴圈處理多個準備好的事件,從而實現高並發和輕量級)

  4. Master/Worker結構

  5. 記憶體消耗小

  6. 內建健全狀態檢查功能

  7. 節省寬頻(支援Gzip壓縮)

  8. 穩定性高

  1. 提供緩衝加速、應用程式層過濾控制功能

  2. 完整的龐大的cache技術資料

  3. 很多的應用生產環境

缺點 1. 不具備自動容錯和恢複功能,重啟後資料丟失;

2. 線上擴容比較難。

3. 32位機器上快取檔案大小為最大2GB;

4. 不支援叢集。


1.不支援帶參數的動態連結 

2.Nginx緩衝內部沒有緩衝到期和清理的任何機制,這些緩衝的檔案會永久性地儲存在機器上,如果要緩衝的東西非常多,那就會撐暴整個硬碟空間。

3.只能緩衝200狀態代碼,因此後端返回301/302/404等狀態代碼都不會緩衝,假如恰好有一個訪問量很大的偽靜態連結被刪除,那就會不停穿透導致後端承載不小壓力

4.Nginx不會自動選擇記憶體或硬碟作為儲存介質,一切由配置決定,當然在當前的作業系統裡都會有作業系統級的檔案快取機制,所以存在硬碟上也不需要過分擔心大並發讀取造成的io效能問題。
1.配置複雜
應用情境 並發要求不是很大的小型系統和應用 大量提供社交網路、新聞資訊、電子商務、虛擬機器主機等web服務的企業 工作於各大古老的cdn上

總結:緩衝加速(靜態加速、節省寬頻、邊緣推送):Varnish>Squid>Nginx

    反向 Proxy(路有加速、隱藏主節點):Nginx>Varnish>Squid

二、CDN的內部業務

答:CDN根據使用者的地理位置、頻寬、網路流量將使用者請求到想到離使用者最近的CDN緩衝節點來響應使用者請求。從而達到解決Internet網路擁擠的狀況,提高使用者訪問網站的響應速度的目的。

三、查詢DNS的深層結構

1.在瀏覽器輸入www.qq.com訪問網域名稱時,作業系統會先檢查自己本地的hosts檔案是否有這個網址映射關係,如果有,就先調用這個IP地址映射,完成網域名稱解析。 

2.如果hosts裡沒有這個網域名稱的映射,則尋找本地DNS解析器緩衝,是否有這個網址映射關係,如果有,直接返回,完成網域名稱解析。 

3.如果hosts與本地DNS解析器緩衝都沒有相應的網址映射關係,首先會找TCP/ip參數中設定的首選DNS伺服器(本地DNS伺服器),此伺服器收到查詢時,如果要查詢的網域名稱,包含在本地配置地區資源中,則返回解析結果給客戶機,完成網域名稱解析,此解析具有權威性。 

4.如果要查詢的網域名稱,不由本地DNS伺服器地區解析,但該伺服器已緩衝了此網址映射關係,則調用這個IP地址映射,完成網域名稱解析,此解析不具有權威性。 

5.如果本地DNS伺服器本地地區檔案與緩衝解析都失效,則根據本地DNS伺服器的設定(是否設定轉寄站)進行查詢,如果未用轉寄模式,本地DNS就把請求發至13台根DNS,根DNS伺服器收到請求後會判斷這個網域名稱(.com)是誰來授權管理,並會返回一個負責該頂級網域名稱伺服器的一個IP。本地DNS伺服器收到IP資訊後,將會聯絡負責.com域的這台伺服器。這台負責.com域的伺服器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS伺服器位址(qq.com)給本地DNS伺服器。當本地DNS伺服器收到這個地址後,就會找qq.com網域服務器,重複上面的動作,進行查詢,直至找到www.qq.com主機。 

6.如果用的是轉寄模式,此DNS伺服器就會把請求轉寄至上一級DNS伺服器,由上一級伺服器進行解析,上一級伺服器如果不能解析,或找根DNS或把轉請求轉至上上級,以此迴圈。不管是本地DNS伺服器還是用轉寄,還是根提示,最後都是把結果返回給本地DNS伺服器,由此DNS伺服器再返回給客戶機。

註:從用戶端到本地DNS伺服器是屬於遞迴查詢,而DNS伺服器之間就是的互動查詢就是迭代查詢。

四、LVS的三種模式

關於群集的負載平衡調度技術,可以基於IP、連接埠、內容等進行分發,其中基於IP的負載調度是效率最高的。基於IP的負載平衡模式中,常見的有地址轉換、IP隧道和直接路由三種工作模式,

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/90/EB/wKiom1jzM_iQLjRGAADS_tfDcqo842.png-wh_500x0-wm_3-wmp_4-s_553566918.png" title="LVS.png" alt="wKiom1jzM_iQLjRGAADS_tfDcqo842.png-wh_50" />

1.地址轉換(Network Address Translation):簡稱NAT模式,類似於防火牆的私人網路結構,負載調度器作為所有伺服器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口。伺服器節點使用私人IP地址,與負載調度器位於同一個物理網路,安全性要優於其他兩種方式。

2.IP隧道(IP Tunnel):簡稱TUN模式,採用開放式的網路結構,負載調度器僅作為客戶機的訪問入口,各節點通過各自的Internet串連直接回應客戶機,而不再經過負載調度器。伺服器節點分散在互連網中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互連信。

3.直接路由(Direct Routing):簡稱DR模式,採用半開放式的網路結構,與TUN模式的結構類似,但各節點並不是分散在各地,而是與調度器位於同一個物理網路。負載調度器與各節點伺服器通過本網串連,不需要建立專用的IP隧道。

總結:以上三種工作模式中,NAT方式只需要一個公網IP地址,從而成為最易用的的一種負載平衡模式,安全性也比較好,許多硬體負載平衡裝置就是採用這種方式;相比較而言,DR模式和TUN模式的負載能力更強大,適用範圍更廣,但節點的安全性要稍微差一些。

五、LVS、Nginx、Haproxy優缺點





        Nginx




     LVS




     Haproxy










  




 

  



 




 點

1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對網域名稱、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。

2、Nginx對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一;相反LVS對網路穩定性依賴比較大,這點本人深有體會;

3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌列印出來。LVS的配置、測試就要花比較長的時間了,LVS對網路依賴比較大。

3、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的並發量,負載度比LVS相對小些。

4、Nginx可以通過連接埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態代碼、逾時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支援url來檢測。比如使用者正在上傳一個檔案,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台伺服器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的檔案或者很重要的檔案的話,使用者可能會因此而不滿。

5、Nginx不僅僅是一款優秀的負載平衡器/反向 Proxy軟體,它同時也是功能強大的Web應用伺服器。LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

6、Nginx現在作為Web反向加速緩衝越來越成熟了,速度比傳統的Squid伺服器更快,可以考慮用其作為反向 Proxy加速器。

7、Nginx可作為中層反向 Proxy使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了,不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍。

8、Nginx也可作為靜態網頁和圖片伺服器,這方面的效能也無對手。還有Nginx社區非常活躍,第三方模組也很多。

1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載平衡軟體裡的效能最強的,對記憶體和cpu資源消耗比較低。

2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率。

3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived。

4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的效能不會收到大流量的影響。

5、應用範圍比較廣,因為LVS工作在4層,所以它幾乎可以對所有應用做負載平衡,包括http、資料庫、線上聊天室等等。

1、HAProxy也是支援虛擬機器主機的。

2、HAProxy的優點能夠補充Nginx的一些缺點,比如支援Session的保持,Cookie的引導;同時支援通過擷取指定的url來檢測後端伺服器的狀態。

3、HAProxy跟LVS類似,本身就只是一款負載平衡軟體;單純從效率上來講HAProxy會比Nginx有更出色的負載平衡速度,在並發處理上也是優於Nginx的。

4、HAProxy支援TCP協議的負載平衡轉寄,可以對MySQL讀進行負載平衡,對後端的MySQL節點進行檢測和負載平衡,大家可以用LVS+Keepalived對MySQL主從做負載平衡。

5、HAProxy負載平衡策略非常多,HAProxy的負載平衡演算法現在具體有如下8種:

①roundrobin,表示簡單的輪詢,這個不多說,這個是負載平衡基本都具備的;

② static-rr,表示根據權重,建議關注;

③leastconn,表示最少串連者先處理,建議關注;

④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注;

⑤ri,表示根據請求的URI;

⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URLparameter name;

⑦hdr(name),表示根據HTTP要求標頭來鎖定每一次HTTP請求;

⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並雜湊每一次TCP請求。

  



  



 

  


  

 點

1、Nginx僅能支援http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點。

2、對後端伺服器的健全狀態檢查,只支援通過連接埠來檢測,不支援通過url來檢測。不支援Session的直接保持,但能通過ip_hash來解決。

1、軟體本身不支援Regex處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。

2、如果是網站應用程式比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了,特別後面有WindowsServer的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
1.擴充性差


本文出自 “你好陽光” 部落格,請務必保留此出處http://hexiaoshuai.blog.51cto.com/12156333/1916464

Linux營運必會的面試題(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.