讓我們假設以下情況。AWS TargetGroup/LoadBalancer檢查vs CodeDeploy部署組狀態
TargetGroup正在檢查http端口80,以驗證EC2主機是否健康。
CodeDeploy代理執行的順序是這樣
- ApplicationStop SUCCESS(停止Web引擎。不能充當端口80)
- BeforeInstall成功
- AfterInstall成功
- ApplicationStart SUCCESS(入門網站引擎。能服務端口80)
- ValidateService失敗(與端口80的可用性無關)
通過此序列,CodeDeploy部署被標記爲FAILED。目標羣體在做什麼?因爲它的健康檢查會成功,它會認爲EC2主機是健康的?但CodeDeploy事情不是。
我不清楚TargetGroup運行狀況檢查如何與每個EC2上的CodeDeploy部署狀態重疊。
由於文檔中提到CodeDeploy與負載均衡器協作以不路由流量,因此我的問題也擴展到了負載均衡器。
任何有識之士將不勝感激。
與@tangerini經過一些討論:
在AppSpec 'hooks' Section它提到,例如允許/阻止Trafic掛鉤可用。但是在同一主題上,它提到有人可以僅在 (一種經典的負載均衡器 ) - 藍色/綠色部署中使用它們。
我正在使用ApplicationLoadBalancer和in-place部署。但是從我注意到在ValidateService掛鉤期間流量到達ec2服務器。
感謝您的回答。我理解兩個驗證點之間的對齊概念。但CodeDeploy鉤子的文檔(http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html)提到了允許/禁止流量的概念,這意味着某種與LoadBalancer或TargetGroup連接。允許通信步驟發生在ValidateService掛鉤之後。我看到的與您的解釋相符,但文檔讓我感到困惑。 –
我回答了你的問題,假設你沒有允許/禁止流量勾,因爲你沒有在你的例子中指定它們。允許/禁用步驟將分別綁定和解除綁定實例到目標組,因此如果您的ValidateService失敗並且AllowTraffic被跳過,那麼目標組運行狀況檢查甚至不會執行,因爲失敗的實例將被綁定到目標組。 – tangerini
我沒有,因爲我的理解是,他們是系統鉤子,你不能實現它們。但你們兩個答案表明我可能忽視了某些事情,所以我會再看一次,我很感激。關於我可能忽略的任何提示都會很棒。 –