運維面試問題-1

1、爲什麼我們要使用tomcat,類似的軟件有哪些?

因爲Apache僅支持靜態網站,不能解析Java、Jsp,它們服務端口也不同Apache端口80  tomcat端口8080

類似的軟件有Weblogic (收費)Jboss(免費)Resin、Jetty

2、tomcat優化

內存優化:JAVA_OPTS='-Xms=256m -Xmx=1024m -Xmn=512m'

併發優化:maxProcessors=2000,最大處理線程數

maxSpareThreads=2000,tomcat連接器的最大空閒socket線程數

緩存優化:compressionMinSize=2048,啓動壓縮的輸出內容大小,默認2048

3、影響mysql主從不同步的因素可能有哪些?

  1. 網絡延遲
  2. 主從兩臺機器的負載不一樣(單位時間內活躍的進程)
  3. mysql異常宕機情況下,如果未設置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出現binlog或者relaylog文件出現損壞,導致主從不一致
  4. mysql本身的bug引起的主從不同步
  5. mysql版本不一致
  6. mysql的最大連接數用完了

4、MySQL主從同步的原理是什麼?MySQL是通過什麼來保證主從數據的同步?

同步原理:從服務器的IO線程從主服務器獲取bin-log二進制日誌,並在本地保存爲relay-log中繼日誌,然後通過SQL線程來在從服務器上執行中繼日誌中的內容,從而使從庫和主庫保持一致。

在slave上修改配置,通過binlog日誌保證主從數據同步。

在master上修改配置參數:Innodb_flush_log_at_trx_commit = 1;Sync_binlog = 1

在slave上修改配置參數:Master_info_replication = “table”;

Relay_log_info_replication = “table”;Relay_log_recovery = 1

5、MySQL的主從複製過程是同步的還是異步的?

主從複製的過程是異步的複製過程,主庫完成寫操作並計入binlog日誌中,從庫再通過請求主庫的binlog日誌寫入relay中繼日誌中,最後再執行中繼日誌的sql語句。

6、存儲引擎InnoDB和MyISAM有什麼區別?

主要差別:兩種類型最主要的差別就是InnoDB支持事務處理與外鍵和行級鎖,而MyISAM不支持。所以MyISAM往往就容易被人認爲只適合在小項目中使用。

MyISAM的索引和數據是分開的,並且索引是有壓縮的,內存使用率高,能加載更多索引,而InnoDB是索引和數據是緊密捆綁的,沒有壓縮,體積比MyISAM大。

7、NGINX代理負載均衡的調度算法有哪些?具體實現時的現象是什麼?

1.輪詢(默認):每個請求按時間順序注意分配到不同的後端,如果後臺某臺服務器宕機,自動剔除故障系統,使用戶訪問不受影響,這種方式簡便,成本低,但是可靠性低,負載均衡不均衡,適用於圖片服務器集羣和純靜態頁面服務器集羣。

2.weight(權重):weight的值越大分配到訪問概率越高,主要用於後端每臺服務器性能不均衡的情況下,或者僅僅爲在主從的情況下設置不同的權值,達到合理有效的利用主機資源。

3.IP_HASH(訪問IP):每個請求按訪問的哈希結果分配,使來自同一個IP的訪問固定一臺後端服務器,並且可以有效解決動態網頁存在的session的共享問題。

4.FAIR(第三方):比weight、ip_hash更加智能的負載均衡算法,fair算法可以根據頁面大小和加載時間長短智能的進行均衡負載,也就是根據後端服務器的響應時間來分配請求,響應時間短的優先分配。nginx本身不支持fair,如果需要這種調度算法,則需要安裝upstream_fair模塊。

5.URL_HASH(第三方):按訪問的URL的哈希結果來分配請求,使每個URL定向到一臺後端服務器,可以進一步提高後端緩存服務器的效率。這種調度算法需要安裝nginx的hash軟件包 

8、爲什麼是四層的負載均衡,而不是其他層

在四層模式下,僅僅只是流量轉發或者是TCP的porxy。七層是full proxy,需要分析協議。顯然四層的轉發效率更快,但功能少了許多。MySQL的負載均衡僅僅只是發生在網絡層,所以選四層代理。

9、keepalived的工作原理是什麼,使用的是什麼協議?

keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了,這時就需要根據vrrp的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

10、nginx的七層代理有什麼好處?

   請求如果直接發到同步處理的後端,那麼從收到請求到把響應發出去的這段時間中,一個進程的資源就被佔用了。在慢鏈接的情況下,這個進程除了處理之外,大多數時間基本耗費在等待上,而nginx有異步非阻塞模型,它可以通過基於事件的方式同時處理和維護多個請求,而後端只需要做邏輯計算,節約了等待事件去處理更多的請求。

   動態頁面的IO性能不好,nginx可以將請求緩存下來,再將完整的請求轉發給後端服務器做處理,減少後端服務器的等待時間。

11、nginx upstream的容錯機制是怎麼樣的(有臺機器掛掉了,nginx怎麼處理的)

   nginx收到客戶端的請求,將請求根據調度算法轉發給後臺服務器,後臺服務器防問被拒接或者返回錯誤信息。nginx將其暫停一段時間,在這段時間內不再將請求轉發給服務器,並將請求轉發給後臺的其他服務器響應。

12、瀏覽器中輸入域名回車後HTTP的請求是怎麼進行的?

   http將請求發送給nginx代理,nginx將請求轉發給後臺服務器,後臺服務器接收請求,並返回信息給nginx,nginx收到後臺服務器的信息後返回給http。

13、nginx如何配置多域名,防盜鏈

server {
       listen    80;
       server_name www.xxx.com mall.xxx.com img.xxx.com;
}
location / {
     valid_referers nono blocked mall.xxx.com;
     if ($invalid_referer){
     return 403;}
}

14、Apache、Nginx、Lighttpd都有哪些優缺點

   Apache特點:1)幾乎可以運行在所有的計算機平臺上;2)支持最新的http/1.1協議;3)簡單而且強有力的基於文件的配置(httpd.conf);4)支持通用網關接口(cgi);5)支持虛擬主機;6)支持http認證,7)集成perl;8)集成的代理服務器;9)可以通過web瀏覽器監視服務器的狀態,可以自定義日誌;10)支持服務器端包含命令(ssi);11)支持安全socket層(ssl);12)具有用戶繪畫過程的跟蹤能力;13)支持fastcgi;14)支持java servlets

   Nginx特點:nginx是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP代理服務器,處理靜態文件,索引文件以及自動索引,無緩存的反向代理加速,簡單的負載均衡和容錯,具有很高的穩定性,支持熱部署。

   Lighttpd特點:是一個具有非常低的內存開銷,CPU佔用率低,效能好,以及豐富的模塊,Lighttpd是衆多opensource輕量級的webserver中較爲優秀的一個,支持fastcgi,cgi,auth,輸出壓縮,url重寫,alias等重要功能。

15、什麼是七層的負載均衡和4層的負載均衡,我們的訪問請求經過這兩種負載均衡都做了些什麼處理?

   七層負載均衡是基於URL等應用層的負載均衡;請求經過七層時,七層負載均衡接受虛擬url請求,很具調度算法轉發請求到後臺服務器

   四層負載均衡是基於IP+端口的負載均衡;請求經過四層時,四層負載均衡根據請求的IP和端口,跟據調度算法將請求轉發到後臺。

16、LVS的三種工作模式是什麼?分別是如何工作的

   NAT模式(VS-NAT):LVS將客戶端發來的數據包的IP頭的目的地址轉換成其中一臺RS(real server)的IP地址,由RS處理數據並返回給LVS,LVS再把數據包的源IP改爲自己的IP,目的地址IP改爲客戶端的IP地址發送給客戶端。

   IP隧道模式(VS-TUN):將哭護短髮來的數據包封裝一個新的目的IP頭標記,通過IP隧道轉發給RS,RS收到後,先把數據包的頭解開,還原數據包,處理後直接返回給客戶端,不需要再經過LVS。

   DR模式(VS-DR):客戶端發送請求到VIP,LVS將請求報文的目標MAC地址改爲RS的MAC地址,將請求轉發給RS,而RS響應後的處理結果直接返回給客戶端。

17、LVS、NGINX、HAPROXY的優缺點

LVS優點:具有很好的可伸縮性、可靠性、可管理性。抗負載能力強、對內存和CPU資源消耗比較低。工作在四層上,僅作分發,所以它幾乎可以對所有的應用做負載均衡,且沒有流量的產生,不會受到大流量的影響。

缺點:軟件不支持正則表達式處理,不能做動靜分離,如果web應用比較龐大,LVS/DR+KEEPALIVED實施和管理比較複雜。相對而言,nginx和haproxy就簡單得多。

nginx優點:工作在七層之上,可以針對http應用做一些分流的策略。比如針對域名、目錄結構。它的正則規則比haproxy更爲強大和靈活。對網絡穩定性依賴非常小。理論上能PING就能進行負載均衡。配置和測試簡單,可以承擔高負載壓力且穩定。nginx可以通過端口檢測到服務器內部的故障。比如根據服務器處理網頁返回的狀態碼、超時等。並且可以將返回錯誤的請求重新發送給另一個節點,同時nginx不僅僅時負載均衡器/反向代理軟件。同事也是功能強大的web服務器,可以作爲中層反向代理、靜態網頁和圖片服務器使用。

缺點:不支持URL檢測,僅支持HTTP和EMAIL,對session的保持,cookie的引導能力相對欠缺。

Haproxy優點:支持虛擬主機、session的保持、cookie的引導;同時支持通過獲取指定的url來檢測後端服務器的狀態。支持TCP協議的負載均衡;單純從效率上講比nginx更出色,且負載策略非常多。

缺點:擴展性能差;添加新功能很費勁,對不斷擴展的新業務很難對付。

18、DNS/智能DNS/CDN原理是什麼?

DNS正向解析將客戶端請求的域名轉換成IP地址、反向解析將IP轉換成域名。

智能DNS在DNS的基礎上通過匹配客戶端的IP將請求分流到最近的服務器上,達到負載均衡。

CDN在DNS和智能DNS的基礎上,將客戶端的請求轉給後臺真實服務器,返回給客戶端的同時,緩存到本地服務器上,下次客戶端再次訪問該頁面時直接將緩存返回給客戶端。

19、將本機80端口請求轉發到另外一臺主機的8080端口

iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080 

iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 80 -j SNAT --to-source 192.168.1.1

20、如何將本地80端口的請求轉發到8080端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章