Https
SSL 會話持久性 - HA 心跳
我有兩台伺服器,我們稱它們為 Milo 和 Otis。現在,Milo 和 Otis 被設置為一對主動-被動的高可用性伺服器,其中 Milo 通常是主伺服器,而 Otis 在 Otis 接管共享虛擬 IP 時等待 Milo 不太可能發生的故障。我有一個關於失敗期間 SSL 連接會發生什麼的問題。
考慮以下:
- 一些客戶(我)與 Milo 建立 SSL 連接。
- SSL 連接設置為保持活動狀態,因此假設通過 SSL 連接請求網頁。頁面已完全下載,連接已打開,準備好接受另一個請求(假設是 css 文件之類的資產)。
- 在開始對 css 文件的請求之前,Milo 經歷了一些災難性的失敗,現在 Otis 已經接管了。
- 現在我想請求 css 文件會發生什麼?我仍然認為我與 Milo 有一個開放的連接,但虛擬 IP 現在指向 Otis。
Otis 是否會自動獲取 Milo 的 SSL 會話?我的瀏覽器是否開始與 Otis 通信並且 Otis 說“嘿,我們應該先握手。”?對此的任何和所有評論/答案將不勝感激。
發生故障轉移時,目前活動的連接將中斷。然而,這將發生在 TCP 級別,因此 SSL/TLS 甚至不會進入現場。TCP 連接要求兩個端點都知道該連接並擁有正確的資訊(序列號、視窗大小等),因此當 IP 故障轉移時,備用電腦將不知道主節點已建立的 TCP 連接. 當備份機器接收到屬於先前 TCP 連接一部分的數據包時,它將回復一個 RST 數據包,這將導致客戶端關閉連接。
即使 TCP 連接被恢復,SSL/TLS 也會出現類似的情況。每個會話都需要兩端的狀態,包括會話密鑰(實際上是保護應用程序數據的內容)。備份機器將沒有此會話狀態,因此現有會話將被終止。