1.4 服務(wù)器健康檢測
負(fù)載均衡器現(xiàn)在都使用了非常多的服務(wù)器健康檢測技術(shù),主要是通過發(fā)送不同類型的協(xié)議包并通過檢查能否接收到正確的應(yīng)答來判斷后端服務(wù)器是否存活,如果后端服務(wù)器出現(xiàn)故障就會自動剔除。涉及的主要技術(shù)有以下3種。
·ICMP:負(fù)載均衡器向后端的服務(wù)器發(fā)送ICMP ECHO包(就是我們俗稱的“ping”),如果能正確收到ICMP REPLY,則證明服務(wù)器ICMP處理正常,即服務(wù)器是活著的。
·TCP:負(fù)載均衡器向后端的某個端口發(fā)起TCP連接請求,如果成功完成三次握手,則證明服務(wù)器TCP處理正常。
·HTTP:負(fù)載均衡器向后端的服務(wù)器發(fā)送HTTP請求,如果收到的HTTP應(yīng)答內(nèi)容是正確的,則證明服務(wù)器HTTP處理正常。
這里以Nginx LB舉例來簡單說明健康檢查機(jī)制。
upstream模塊是Nginx負(fù)載均衡的主要模塊,它提供了簡單的辦法來實(shí)現(xiàn)在輪詢和客戶端IP之間的后端服務(wù)器負(fù)載均衡,并可以對服務(wù)器進(jìn)行健康檢查。upstream并不處理請求,而是通過請求后端服務(wù)器得到用戶的請求內(nèi)容。在轉(zhuǎn)發(fā)給后端時,默認(rèn)是輪詢,upstream模塊包含的文件內(nèi)容如下:
upstream php_pool { server 192.168.1.7:80 max_fails=2 fail_timeout=5s; server 192.168.1.8:80 max_fails=2 fail_timeout=5s; server 192.168.1.9:80 max_fails=2 fail_timeout=5s; }
以下是upstream模塊相關(guān)指令的說明。
·max_fails:定義可以發(fā)生錯誤的最大次數(shù)。
·fail_timeout:Nginx在fail_timeout設(shè)定的時間內(nèi)與后端服務(wù)器通信失敗的次數(shù)超過max_fails設(shè)定的次數(shù),則認(rèn)為這個服務(wù)器不再起作用;在接下來的fail_timeout時間內(nèi),Nginx不再將請求分發(fā)給失效的機(jī)器。
·down:把后端標(biāo)記為離線,僅限于ip_hash。
·backup:標(biāo)記后端為備份服務(wù)器,若后端服務(wù)器全部無效則啟用。
Nginx的健康檢查主要體現(xiàn)在后端服務(wù)上,且功能被集成在upstream模塊中。
以下是Nginx健康檢查機(jī)制的說明。
Nginx在檢測到后端服務(wù)器故障后,它依然會把請求轉(zhuǎn)向該服務(wù)器,當(dāng)Nginx發(fā)現(xiàn)timeout或者refused時,就會把該請求分發(fā)到upstream的其他節(jié)點(diǎn)上,直到獲得正常數(shù)據(jù)后,Nginx才會把數(shù)據(jù)返回給用戶,這也體現(xiàn)了Nginx的異步傳輸。這跟LVS/HAProxy的區(qū)別很大,在LVS/HAProxy里,每個請求都只有一次機(jī)會,假如用戶發(fā)起一個請求,結(jié)果該請求分到的后端服務(wù)器剛好掛掉了,那么這個請求就失敗了。
- 全屋互聯(lián):智能家居系統(tǒng)開發(fā)指南
- Linux設(shè)備驅(qū)動開發(fā)詳解(第2版)
- 樂學(xué)Windows操作系統(tǒng)
- Google系統(tǒng)架構(gòu)解密:構(gòu)建安全可靠的系統(tǒng)
- Windows Phone 7.5 Data Cookbook
- 精解Windows8
- SharePoint 2013 應(yīng)用開發(fā)實(shí)戰(zhàn)
- 嵌入式實(shí)時操作系統(tǒng)μC/OS原理與實(shí)踐
- Joomla! 3 Template Essentials
- Application Development in iOS 7
- Red Hat Enterprise Linux 6.4網(wǎng)絡(luò)操作系統(tǒng)詳解
- 從實(shí)踐中學(xué)習(xí)Windows滲透測試
- Linux內(nèi)核API完全參考手冊(第2版)
- iOS 10快速開發(fā):18天零基礎(chǔ)開發(fā)一個商業(yè)應(yīng)用
- OpenHarmony開發(fā)與實(shí)踐:基于紅莓RK2206開發(fā)板