簡體   English   中英

AWS CodeDeploy無法同時跨多個可用區部署?

[英]AWS CodeDeploy is impossible to deploy across multiple Availability Zones at the same time?

截圖下方,它似乎僅在一個可用區中成功。

我檢查了codedeploy日志中是否有失敗的實例,我發現有錯誤,我認為它被認為是一個內部實例。

2018-01-10 04:40:22 INFO [codedeploy-agent(2696)]: On Premises配置文件不存在或不可讀

2018-01-10 04:40:43錯誤[codedeploy-agent(2696)]:CodeDeploy實例代理服務:CodeDeploy實例代理服務:啟動或運行期間出錯:InstanceMetadata :: InstanceMetadataError - 不是EC2實例和未提供的區域環境變量AWS_REGION。 請使用環境變量AWS_REGION指定您的區域.......

我已經為這個問題搜索了大約三天,但AWS文檔中沒有提及。 在生產環境中,我計划使用附加到自動縮放組的兩個可用區。 我想知道我是否忽略了除CodeDeploy之外的其他事情......我該怎么辦? 先感謝您。

[更新]我用ASG和ASG Config screent shot更新了。 沒有什么特別的,它是vanila和默認流程。 我在AWS支持中心等待了5天,但仍在等待響應。

Auto Scaling Group ----- Auto Scaling Group

Auto Scaling Group啟動配置----- Auto Scaling Group啟動配置

最后,我發現了為什么codedeploy在Windows 2016上跨多個可用區域失敗的原因。此外,這個問題似乎是Windows 2016 EC2本身的問題,而不是ASG或codedeploy(我還沒有在linux上測試過)。 我找到了兩種解決方案,

  1. 通過單擊Ec2LaunchSettings中的“使用Syspre關閉”按鈕安全關閉服務器。 然后你可以創建AMI作為用戶。

Ec2LaunchSetting GUI

  1. 手動運行C:\\ ProgramData \\ Amazon \\ EC2-Windows \\ Launch \\ Scripts \\ InitializeInstance.ps1 -Schedule腳本。 參數“-Schedule”是必需的。 然后你可以創建AMI作為用戶。

InitializeInstance.ps1

第一種方法是直觀且方便的方式(GUI),第二種方法適用於自動化PowerShell腳本。 我已經確認這兩種方法都可以成功部署到多個AZ。 codedeployagent記錄的日志中沒有錯誤。

更具體地說,codedeployagent在部署時會留下各種日志,我發現代理似乎使用了169.254.169.254中的元信息。 當我失敗時,日志會說“你是On-Premise Instance。”。 可能部署失敗,因為實例無法獲取元信息。 在下面的文檔中,我收到了很多幫助,列出了我的所有解決方案。

https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html

特別是在文件中

.....在Windows PowerShell中,運行以下命令,以便系統將腳本計划為作為Windows計划任務運行。 該腳本在下次啟動時運行一次,然后禁止這些任務再次運行....

C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM