指令 | 工作執行緒類型 | 預設值 | 說明 |
---|
connect_timeout | AJP、SUB | 0 |
連線逾時屬性會指示網路伺服器在建立連線後透過 ajp13 連線傳送 PING 要求。參數是等待 PONG 回覆的毫秒數延遲。預設值為零,會停用逾時(無限逾時)。
此功能已新增至 jk 1.2.6,以避免 Tomcat 暫停的問題,並需要 ajp13 ping/pong 支援,而此支援已在 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+ 中實作。預設為停用。
|
prepost_timeout | AJP、SUB | 0 |
Prepost timeout 屬性會告知 Web 伺服器在將要求轉發給 AJP13 連線之前,在該連線上傳送 PING 要求。此參數是等待 PONG 回應的延遲時間(以毫秒為單位)。預設值為零,表示停用逾時(無限逾時)。
此功能已新增至 jk 1.2.6,以避免 Tomcat 發生問題,並需要 AJP13 ping/pong 支援,此支援已實作於 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+。預設為停用。
|
reply_timeout | AJP、SUB | 0 |
此參數是在讀取事件期間等待成功執行的毫秒數。因此,這並非要求的完整回應時間逾時,而只是從 Tomcat 收到兩個封包之間的最長時間。通常最長的暫停時間是在傳送要求和取得回應的第一個封包之間。
如果逾時而未從 Tomcat 收到任何資料,Web 伺服器將不再等待回應的其餘部分,並會傳送錯誤訊息給用戶端(瀏覽器)。通常這並不表示要求也會在 Tomcat 後端中止。如果工作執行緒是負載平衡器的成員,負載平衡器可能會將工作執行緒置於錯誤狀態,並在其他成員上重試要求。另請參閱 max_reply_timeouts、retries 和 recovery_options。
預設情況下(值為零),Web 伺服器將無限期等待,這可能會造成問題。如果您設定 reply_timeout,如果您有執行時間較長的 servlet,請仔細調整。
reply_timeout 可以使用 Apache HTTP 伺服器環境變數 JK_REPLY_TIMEOUT 和 reply_timeout 的工作執行緒對應延伸模組覆寫。
此功能已新增至 jk 1.2.6,以避免 Tomcat 發生問題,並適用於支援 AJP13 的所有 servlet 引擎。變數 JK_REPLY_TIMEOUT 和工作執行緒對應延伸模組已新增至版本 1.2.27。
|
重試次數 | AJP、SUB | 2 |
此指令也存在於負載平衡器工作執行緒中。對於這些工作執行緒,它有 不同的意義。工作執行緒在發生通訊錯誤時傳送要求給 Tomcat 的最大次數。每次重試都會透過另一個連線進行。第一次已計算在內,因此 retries=2 表示錯誤後重試一次。在重試之前,工作執行緒會等待可設定的休眠時間。
另請參閱屬性 recovery_options,以更精細地控制重試,以及 retry_interval 以進行休眠時間設定。
在版本 1.2.16 之前,預設值為 3。
|
retry_interval | AJP、SUB | 100 |
工作執行緒在執行任何重試之前休眠的時間(以毫秒為單位)。
此功能已新增至 jk 1.2.27。
|
recovery_options | AJP、SUB | 0 |
復原選項影響我們在偵測到 Tomcat 問題時應如何處理重試。我們重試的頻率由屬性 retries 控制。
這個屬性是一個位元遮罩。允許以下位元
1:如果 Tomcat 在收到要求後失敗,則不要復原
2:如果 Tomcat 在將標頭傳送給客戶端後失敗,則不要復原
4:如果我們在將答案寫回給客戶端(瀏覽器)時偵測到錯誤,則關閉與 Tomcat 的連線
8:總是復原 HTTP 方法 HEAD 的要求(即使設定了位元 1 或 2)
16:總是復原 HTTP 方法 GET 的要求(即使設定了位元 1 或 2)
此功能已新增至 jk 1.2.6。選項 4 已新增至版本 1.2.16,選項 8 和 16 已新增至版本 1.2.24。
|
fail_on_status | AJP、SUB | 0 |
將此值設定為如果從 Servlet 容器傳回,則會導致工作人員失敗的 HTTP 狀態碼。使用此指令處理 Servlet 容器可以在短時間內臨時傳回非 200 回應的情況,例如在重新部署期間。
錯誤頁面、標頭和原始回應的狀態碼不會傳送回給客戶端。相反,要求將導致 503 回應。如果工作人員是負載平衡器的成員,則該成員將進入錯誤狀態。要求故障轉移和工作人員復原將使用通常的負載平衡器程序處理。
此功能已新增至 jk 1.2.20。
從 jk 1.2.22 開始,可以定義多個以空格或逗號字元分隔的狀態碼。例如:worker.xxx.fail_on_status=500,503
從 jk 1.2.25 開始,您還可以告訴負載平衡器,如果回應傳回 fail_on_status 中的其中一個狀態碼,則不要將成員置於錯誤狀態。此功能透過在這些狀態碼前面加上負號來啟用。例如:worker.xxx.fail_on_status=-404,-500,503
|
busy_limit | AJP、SUB | 0 |
如果設定為正數,則只有當工作人員目前處理的同時要求少於此數字時,才會使用該工作人員來處理要求。
請注意,這與 忙碌負載平衡 方法無關。
此功能為實驗性質,並已新增至 jk 1.2.41。
|
max_packet_size | AJP、SUB | 8192 |
此屬性設定 AJP 封包在位元組中的最大大小。它應該是 1024 的倍數。不是 1024 倍數的組態值將與 1024 的下一個倍數對齊。最大值為 65536。如果您從預設值變更,則必須同時變更 Tomcat 端上 AJP 連接器的 packetSize 屬性!packetSize 屬性在 Tomcat 6.0.2 之後可用。
通常不需要變更最大封包大小。在傳送憑證或憑證鏈時,已報告預設值有問題。
此功能已新增至 jk 1.2.19。
|
prefer_ipv6 | AJP、SUB | false |
當使用 IPV6 支援編譯時,此指令會強制解析同時具有 IPV6 和 IPV4 位址的主機名稱的 IPV6 位址。如果沒有為給定的主機名稱定義 IPV6 位址,則此指令無效。如果僅定義 IPV6 位址,或者在 IPV4 或 IPV6 表示法中為「主機」使用 IP 位址,則此指令也無效。
此功能已新增至jk 1.2.38。
|
secret | AJP、SUB、LB | - |
您可以在 Tomcat AJP Connector 上設定一個機密關鍵字。然後,只有來自具有相同機密關鍵字的工作站的請求才會被接受。
在您的 Tomcat AJP Connector 組態中使用屬性secret="機密關鍵字"。(歷史備註:在 2020 年 2 月之前發布的 Tomcat 9.0、8.x、7.0 版本中,屬性名稱為requiredSecret,在 Tomcat 6.0 及更早版本中為request.secret。)
如果您在負載平衡器上設定機密,其所有成員都將繼承此機密。
此功能已新增至jk 1.2.12。
|
mount | AJP、LB | - |
工作站應處理的 URI 地圖的空格分隔清單。僅在工作站包含在 worker.list 中時才會使用。
此指令可針對同一個工作站多次使用。
|
max_reply_timeouts | LB | 0 |
如果您對負載平衡器工作站的成員使用reply_timeout,而且您想要容忍一些請求花費的時間比 reply_timeout 長,您可以將此屬性設定為一些正值。
執行時間長的請求仍會在等待資料的 reply_timeout 毫秒後逾時,但僅當超過max_reply_timeouts 個請求逾時時,對應的成員工作站才會進入錯誤狀態。更精確地說,每當負載平衡器執行其內部維護時(預設每 60 秒),這些錯誤請求的計數器就會除以 2。
此功能已新增至jk 1.2.24,以使reply_timeout對偶發執行時間長的請求的敏感度降低。
|
recover_time | LB | 60 |
復原時間是負載平衡器在工作站進入錯誤狀態後不會嘗試使用工作站的時間(以秒為單位)。僅在經過此時間後,錯誤狀態中的工作站才會標記為復原中,以便針對新請求嘗試使用該工作站。
不會在每次處理請求時檢查此間隔。相反,它會在執行全域維護期間進行檢查。兩次執行全域維護之間的時間由 worker.maintain 控制。
除非您了解影響,否則請勿將 recover_time 設定為非常短的時間。對錯誤狀態中的工作站的每次復原嘗試都是由實際請求執行的!
|
error_escalation_time | LB | recover_time / 2 |
將負載平衡器的成員設定為錯誤狀態是一件相當嚴重的事情。例如,這表示如果您需要黏著性,則會封鎖對個別節點的階段存取。
某些類型的錯誤偵測不會提供精確資訊,例如節點是否已完全中斷。在這些情況下,負載平衡器不會立即將節點設為錯誤狀態。只有在發生此類錯誤後,error_escalation_time 秒內沒有任何成功回應時,節點才會設為錯誤狀態。
此功能已新增至 jk 1.2.28。
|
session_cookie | LB | JSESSIONID |
包含路由識別碼的 Cookie 名稱,用於會話黏著性。路由識別碼是 Cookie 值中「.」字元之後的所有內容。
此功能已新增至 jk 1.2.27。
|
session_path | LB | ;jsessionid |
包含路由識別碼的路徑參數名稱,用於會話黏著性。路由識別碼是路徑參數值中「.」字元之後的所有內容。
此功能已新增至 jk 1.2.27。
|
set_session_cookie | LB | false |
啟用會話黏著性 Cookie 的產生。通常您不需要此功能。
某些 Web 架構會取代 Tomcat 會話管理,並使用不同的方式產生會話 ID。因此,Tomcat 新增至會話 ID 結尾的路由 ID 會遺失,我們無法再執行黏著式負載平衡。您可以使用下列步驟作為解決方法
- 使用「session_cookie」屬性選擇非標準的 Cookie 名稱。
- 將「set_session_cookie」屬性設為 true 以啟用 Cookie 傳送。
- 將「session_cookie_path」屬性設為正確的應用程式 URI,例如「/myapp/」。
只有在要求不包含同名 Cookie,或該 Cookie 不包含負載平衡器可以滿足的路由 ID 時,才會傳送 Cookie。特別是在節點故障轉移後,我們會傳送新的 Cookie,將黏著性切換至新的節點。
此功能已新增至jk 1.2.38。
|
session_cookie_path | LB | - |
只有當「set_session_cookie」設為 true 時,才會使用此屬性。請參閱「set_session_cookie」以取得說明。如果「session_cookie_path」的值為空 (預設值),則傳送的 Cookie 將不包含 PATH 資訊。
此功能已新增至jk 1.2.38。
|
activation | SUB | 已啟用 |
使用此指令,負載平衡器的平衡工作者可以設定為停用或停止。停用的工作者只會取得屬於該工作者階段的請求。停止的工作者不會取得任何請求。停止的工作者使用者會遺失其階段,除非使用叢集透過階段複製。
使用 d 或 D 停用,使用 s 或 S 停止。如果此指令不存在,則會使用已棄用的指令「disabled」或「stopped」。
此旗標可以使用 status worker 在執行階段變更。
此功能已新增至 jk 1.2.19。
|
route | SUB | 工作者名稱 |
通常,負載平衡器中平衡工作者的名稱等於對應 Tomcat 執行個體的 jvmRoute。如果您要將對應於 Tomcat 執行個體的工作者包含在具有不同平衡組態(例如,停用、停止)的幾個負載平衡器中,您可以使用此屬性。
使用任意工作者名稱為每個負載平衡器和每個 Tomcat 執行個體定義一個獨立的工作者,並將工作者的 route 屬性設定為目標 Tomcat 執行個體的 jvmRoute。
如果此屬性留空,則會使用工作者的名稱。
此屬性可以使用 status worker 在執行階段變更。
如果 route 名稱包含句點,則句點之前的部分會用作網域名稱,除非明確設定 domain。
此功能已在 jk 1.2.16 中新增。
自動網域名稱規則已新增至 jk 1.2.20。
此屬性已從 jvm_route 重新命名為 route,在 jk 1.2.20 中。
|
distance | SUB | 0 |
整數,用於表達負載平衡器工作者的平衡工作者之間的偏好。如果還有其他具有較低距離的可使用工作者,負載平衡器絕不會選擇某些平衡工作者。
只有在低於特定距離的所有工作者都出錯、停用或停止時,距離較大的工作者才有資格進行平衡。
此功能已在 jk 1.2.16 中新增。
|
domain | SUB | - |
只有當工作者是負載平衡器的成員時,才能使用 domain 指令。共用相同網域名稱的工作者會視為單一工作者。如果使用 sticky_session,則網域名稱會用作階段路由。
此指令用於具有超過 6 個 Tomcat 的大型系統,以便能夠將 Tomcat 分成兩組,並因此降低它們之間的階段複製傳輸。
此功能已新增至 jk 1.2.8。
|
redirect | SUB | - |
設定為優先故障移轉工作者的名稱。如果符合 SESSION ID 的工作者處於錯誤狀態,則會改用 redirect 工作者。即使已停用,它仍會被使用,因此提供熱備援。
如果您透過「route」屬性明確設定路由,您必須將「redirect」設定為首選故障轉移工作者的此路由,而非其名稱。
此功能已新增至 jk 1.2.9。
|