官术网_书友最值得收藏!

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ù)器剛好掛掉了,那么這個請求就失敗了。

主站蜘蛛池模板: 板桥市| 阳高县| 襄城县| 伊川县| 临海市| 屯留县| 辽源市| 治多县| 孟津县| 太保市| 信丰县| 息烽县| 平泉县| 固始县| 威宁| 樟树市| 宜昌市| 中方县| 噶尔县| 江都市| 安阳县| 江永县| 徐闻县| 甘洛县| 个旧市| 河西区| 安庆市| 当阳市| 久治县| 林周县| 黔西县| 电白县| 沁阳市| 榆社县| 兰州市| 隆安县| 博爱县| 峨边| 布拖县| 翁牛特旗| 浑源县|