1

我有一個AWS自動擴展組在AWS ELB後面使用粘滯會話運行的PHP應用程序。具有粘滯會話的PHP應用程序的CodeDeploy

當針對這些機器運行CodeDeploy以進行發佈時,CodeDeploy將在最初使用新代碼替換它們之前刪除這些文件。但是,在這段短時間內,由於文件不在全部位置,所有到達服務器的Web請求都將收到404或500個服務器錯誤。

連接耗盡並將服務器拉出池不起作用,因爲會話粘滯,因爲當我們將服務器拉出池時,我們會將用戶從系統中註銷。

我已經考慮將代碼部署到文件系統中的新目錄並進行rsyncing結束,但我認爲這隻會部分解決問題,因爲rsync不是即時的。

是否有像這樣的粘性會話服務器的選項來查看無縫部署?

+0

而不是使用rsync,你可能會考慮這個即時版本,lsyncd - 一個守護進程來持續同步目錄樹 –

回答

0

可能有所幫助的一個選擇是依賴File Exists Behavior並設置爲RETAIN選項。 aws deploy create-deployment命令中的標誌是--file-exists-behavior:https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html

如果通過控制檯創建部署,則有一種方法可以選擇「內容選項」,該選項允許您指定是否部署應該失敗,覆蓋或保留文件。

但我不是100%確定是否解決了問題,因爲您在部署期間不更新文件。我很快就讀了粘滯的會話......但是如果你的客戶端軟件失去了粘性會話,你的客戶端軟件是否會重試?我想不出一個辦法。

像,你的主人可以隨時消失。在部署過程中,您可能(不知道您是否願意)從負載平衡器中移除主機。您的應用程序停止腳本可能會關閉主機的服務。我敢打賭,粘稠的會議應該有一個解決方案,你可以從主機消除以前的會話,並阻止新客戶端到達該主機。但我對你在這裏做的事情不夠了解。

我希望這個信息可以幫助你。 -Asaf

相關問題