本文主要介紹 Tengine 的主動式后端服務器健康檢查的擴展功能,其他的擴展功能可參考官網檔案:http://tengine.taobao.org/;文中所使用到的軟體版本:Centos 7.9.2009、Tengine 2.3.3,
1、相關指令
1.1、check
Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port] Default: 如果沒有配置引數,默認值是:interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp Context: upstream
該指令用于打開后端服務器的健康檢查功能,
引數含義:
interval:向后端發送的健康檢查包的間隔,fall(fall_count): 如果連續失敗次數達到 fall_count,服務器就被認為是 down,rise(rise_count): 如果連續成功次數達到 rise_count,服務器就被認為是 up,timeout: 后端健康請求的超時時間,default_down: 設定初始時服務器的狀態,如果是 true,就說明默認是 down 的,如果是 false,就是 up 的,默認值是 true,也就是一開始服務器認為是不可用,要等健康檢查包達到一定成功次數以后才會被認為是健康的,type:健康檢查包的型別,現在支持以下多種型別tcp:簡單的 tcp 連接,如果連接成功,就說明后端正常,ssl_hello:發送一個初始的 SSL hello 包并接受服務器的 SSL hello 包,http:發送 HTTP 請求,通過后端的回復包的狀態來判斷后端是否存活,mysql: 向 mysql 服務器發送連接,通過接收服務器的 greeting 包來判斷后端是否存活,ajp:向后端發送 AJP 協議的 Cping 包,通過接收 Cpong 包來判斷后端是否存活,
port: 指定后端服務器的檢查埠,你可以指定不同于真實服務的后端服務器的埠,比如后端提供的是 443 埠的應用,你可以去檢查 80 埠的狀態來判斷后端健康狀況,默認是 0,表示跟后端 server 提供真實服務的埠一樣,
1.2、check_keepalive_requests
Syntax: check_keepalive_requests request_num Default: 1 Context: upstream
該指令用于配置一個連接發送的請求數,其默認值為 1,表示 Tengine 完成 1 次請求后即關閉連接,
1.3、check_http_send
Syntax: check_http_send http_packet Default: "GET / HTTP/1.0\r\n\r\n" Context: upstream
該指令用于配置 http 健康檢查包發送的請求內容,為了減少傳輸資料量,推薦采用 "HEAD" 方法,
當采用長連接進行健康檢查時,需在該指令中添加 keep-alive 請求頭,如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n",
同時,在采用 "GET" 方法的情況下,請求 uri 的 size 不宜過大,確保可以在 1 個 interval 內傳輸完成,否則會被健康檢查模塊視為后端服務器或網路例外,
1.4、check_http_expect_alive
Syntax: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ] Default: http_2xx | http_3xx Context: upstream
該指令指定 HTTP 回應的成功狀態,默認認為 2XX 和 3XX 的狀態是健康的,
1.5、check_shm_size
Syntax: check_shm_size size
Default: 1M
Context: http
所有的后端服務器健康檢查狀態都存于共享記憶體中,該指令用于設定共享記憶體的大小,默認是 1M,如果你有 1 千臺以上的服務器并在配置的時候出現了錯誤,就可能需要擴大該記憶體的大小,
1.6、check_status
Syntax: check_status [html|csv|json]
Default: check_status html
Context: location
顯示服務器的健康狀態頁面,
2、使用樣例
upstream cluster { server 10.49.196.30:8080 weight=2; server 10.49.196.31:8080 weight=3; check interval=3000 rise=2 fall=5 timeout=2000 type=http; check_keepalive_requests 5; check_http_send "HEAD / HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; } server { listen 8081; server_name localhost-8081; access_log logs/access-8081.log; location / { proxy_pass http://cluster/; } location /status { check_status; } }
后端服務器健康檢查,可以避免把請求轉發到假死(請求無回應或回應很慢)的服務器上,提高了應用的可用性;監控狀態頁面如下,可以清晰的看到后端服務器的狀態:

參考:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554282.html
標籤:其他
下一篇:返回列表
