46.什么是Nginx?
# 答案:
'''
Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器,同時也是一個IMAP、POP3、SMTP代理服務器。可以用作HTTP服務器、方向代理服務器、負載均衡。
'''
47.什么是keepalived?
# 答案:
'''
Keepalived起初是為LVS設計的,專門用來監控集群系統中各個服務節點的狀態,它根據TCP/IP參考模型的第三、第四層、第五層交換機制檢測每個服務節點的狀態,如果某個服務器節點出現異常,或者工作出現故障,Keepalived將檢測到,並將出現的故障的服務器節點從集群系統中剔除,這些工作全部是自動完成的,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點。
后來Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虛擬路由冗余協議)出現的目的是解決靜態路由出現的單點故障問題,通過VRRP可以實現網絡不間斷穩定運行,因此Keepalvied 一方面具有服務器狀態檢測和故障隔離功能,另外一方面也有HA cluster功能,下面介紹一下VRRP協議實現的過程。
'''
48.什么是haproxy?
# 答案:
'''
- TCP 代理:可從監聽 socket 接受 TCP 連接,然后自己連接到 server,HAProxy 將這些 sockets attach 到一起,使通信流量可雙向流動。
- HTTP 反向代理(在 HTTP 專用術語中,稱為 gateway):HAProxy 自身表現得就像一個 server,通過監聽 socket 接受 HTTP 請求,然后與后端服務器建立連接,通過連接將請求轉發給后端服務器。
- SSL terminator / initiator / offloader: 客戶端 -> HAProxy 的連接,以及 HAProxy -> server 端的連接都可以使用 SSL/TLS
- TCP normalizer: 因為連接在本地操作系統處終結,client 和 server 端沒有關聯,所以不正常的 traffic 如 invalid packets, flag combinations, window advertisements, sequence numbers, incomplete connections(SYN floods) 不會傳遞給 server 端。這種機制可以保護脆弱的 TCP stacks 免遭協議上的攻擊,也使得我們不必修改 server 端的 TCP 協議棧設置就可以優化與 client 的連接參數。
- HTTP normalizer: HAProxy 配置為 HTTP 模式時,只允許有效的完整的請求轉發給后端。這樣可以使得后端免遭 protocol-based 攻擊。一些不規范的定義也被修改,以免在 server 端造成問題(eg: multiple-line headers,會被合並為一行)
- HTTP 修正工具:HAProxy 可以 modify / fix / add / remove / rewrite URL 及任何 request or response header。
- a content-based switch: 可基於內容進行轉發。可基於請求中的任何元素轉發請求或連接。因此可基於一個端口處理多種協議(http,https, ssh)
- a server load balancer: 可對 TCP 連接 和 HTTP 請求進行負載均衡調度。工作於 TCP 模式時,可對整個連接進行負載均衡調度;工作於 HTTP 模式時,可對 HTTP 請求進行調度。
- a traffic regulator: 可在不同的方面對流量進行限制,保護 server ,使其不超負荷,基於內容調整 traffic 優先級,甚至可以通過 marking packets 將這些信息傳遞給下層以及網絡組件。
- 防御 DDos 攻擊及 service abuse: HAProxy 可為每個 IP地址,URL,cookie 等維護大量的統計信息,並對其進行檢測,當發生服務濫用的情況,采取一定的措施如:slow down the offenders, block them, send them to outdated contents, etc
- 是 network 的診斷的一個觀察節點:根據精確記錄細節豐富的日志,對網絡診斷很有幫助
- an HTTP compression offloader:可自行對響應進行壓縮,而不是讓 server 進行壓縮,因此對於連接性能較差的 client,或使用高延遲移動網絡的 client,可減少頁面加載時間。
'''
49.什么是負載均衡?
# 答案:
'''
系統的擴展可分為縱向(垂直)擴展和橫向(水平)擴展。縱向擴展,是從單機的角度通過增加硬件處理能力,比如CPU處理能力,內存容量,磁盤等方面,實現服務器處理能力的提升,不能滿足大型分布式系統(網站),大流量,高並發,海量數據的問題。因此需要采用橫向擴展的方式,通過添加機器來滿足大型網站服務的處理能力。比如:一台機器不能滿足,則增加兩台或者多台機器,共同承擔訪問壓力。這就是典型的集群和負載均衡架構
'''
50.什么是rpc及應用場景?
# 答案:
'''
RPC主要用於公司內部的服務調用,性能消耗低,傳輸效率高,服務治理方便。HTTP主要用於對外的異構環境,瀏覽器接口調用,APP接口調用,第三方接口調用等...
'''