一、ip_hash:
ip_hash使用源地址哈希算法,將同一客戶端的請求總是發往同一個后端服務器,除非該服務器不可用。
ip_hash語法:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
ip_hash簡單易用,但有如下問題:
- 當后端服務器宕機后,session會丟失;
- 來自同一局域網的客戶端會被轉發到同一個后端服務器,可能導致負載失衡;
- 不適用于CDN網絡,不適用于前段還有代理的情況。
二、sticky_cookie_insert:
使用sticky_cookie_insert啟用會話親緣關系,這會導致來自同一客戶端的請求被傳遞到一組服務器在同一臺服務器。與ip_hash不同之處在于,它不是基于IP來判斷客戶端的,而是基于cookie來判斷。因此可以避免上述ip_hash中來自同一局域網的客戶端和前段代理導致負載失衡的情況。
語法:
upstream backend {
server backend1.example.com;
server backend2.example.com;
sticky_cookie_insert srv_id expires=1h domain=toxingwang.com path=/;
}
說明:
- expires:設置瀏覽器中保持cookie的時間
- domain:定義cookie的域
- path:為cookie定義路徑
另外還可以使用后端服務器自身通過相關機制保持session同步,后面會詳細介紹!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。