
我有一個將在多個伺服器上運行的網路應用程式。我想確保使用相同會話(值為 JSESSIONID=x 的 HTTP cookie 標頭)的請求始終與同一台伺服器進行通訊。也就是說,直到在某些情況下會話「移動」到不同的伺服器(不僅當伺服器發生故障時,而且還由於某些伺服器端快取和效能策略)。
我的網頁應用程式在這種情況下運作良好,但是什麼樣的負載平衡器我應該使用嗎?顯然,我可以在應用程式層級進行負載平衡,但我正在尋找更有效的東西。也許是專門的硬體(也許不是)?我花不了很多錢...
更新
感謝您到目前為止的回答:我現在發現,磅和HA代理可以配置為尋找某些 cookie。我還不知道它們是否還允許動態更新映射(當會話“移動”到不同的應用程式伺服器時)?
是否有(廉價的)硬體解決方案也可以做到這一點? (這會比額外的負載平衡伺服器花費更少嗎?)
答案1
答案2
那麼為您提供幾個解決方案。
編寫一個會話儲存方法,使用資料庫來儲存會話訊息,如果它位於多個伺服器上,則可以對資料庫進行叢集。這實際上取決於您決定如何組織事物,其他想法是在網頁伺服器後面使用帶有記憶體快取的伺服器並將會話儲存在其中。
這樣,您就可以在一個地方進行會話,並且客戶端定向到哪個 Web 伺服器不再重要。
答案3
答案4
Pound - 反向代理與負載平衡器
Pound 程式是 Web 伺服器的反向代理、負載平衡器和 HTTPS 前端。 Pound 的開發目的是在多個 Web 伺服器之間分配負載,並為本身不提供 SSL 包裝器的 Web 伺服器提供方便的 SSL 包裝器。 Pound 根據 GPL 分發 - 無保證,可以免費使用、複製和贈送。
這可能是您正在尋找的