我在AWS中有一個ejabberd集羣,我想要負載均衡。我最初嘗試在節點前放置一個ELB,但這會使會話變得非粘性。然後,我在ELB上啓用了代理協議,並在ELB和ejabberd羣集之間引入了HAProxy節點。我的假設/理解是HAProxy實例將使用TCP代理並確保會話在ejabberd服務器上是粘性的。通過ELB和HAProxy進行ejabberd TCP會話的會話粘性
但是,這似乎仍然沒有發生!這甚至可能在第一位?在HAProxy.cfg文件中引入cookie配置會導致只啓用HTTP的錯誤,因此如何讓TCP會話在服務器上保持粘滯狀態...
請幫忙,因爲看起來在想法上丟失了這裏!
記得最近的問題從另一個用戶誰似乎認爲在ELB上啓用代理協議會以某種方式使會話對ejabberd變得粘稠,這當然是沒有意義的。你的設置,在ELB之後用HAProxy,至少是有道理的,但是需要用['stick on src']來配置(http://blog.haproxy.com/2013/04/22/client-ip- persistence-or-source-ip-hash-load-balancing /)...但我仍然不清楚......爲什麼粘性至關重要?如果連接到不同的服務器,爲什麼這很重要?如果你完成了這個,它會解決你的實際問題嗎? –
嗨@ Michael-sqlbot - 謝謝。是的,我看到了這個問題 - 我也沒有明白這一點。就我而言,如果我不讓會話變得粘滯,用戶的連接流在不同的服務器之間不斷旋轉,並且沒有長時間運行的流。所以基本上,在同一個會話中,用戶會多次註銷並登錄。我想我可能需要更深入地研究ejabberd的行爲 - Mickael在下面提到了ejabberd不存在粘性的必要性,所以我會進一步檢查......謝謝! – Samantha
默認情況下,ELB將在60秒後關閉空閒連接。您是否已將超時重新配置爲更高的值? –