2013-10-29 48 views
1

我從微型實例升級到Amazon EC2上的小型實例。從微型Amazon EC2實例升級後,我無法部署任何新代碼

當我想部署一個新的代碼,該代碼沒有被部署由於

** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: ELASTIC_IP (Errno::ETIMEDOUT: Operation timed out - connect(2)) 
connection failed for: ELASTIC_IP (Errno::ETIMEDOUT: Operation timed out - connect(2)) 

所以它看起來像升級不理舊的彈性IP。因此,我創建了一個新的Elastic IP並將此IP分配給新實例,並且此錯誤消失。

但是,當我訪問www.my_project.com,或11.22.33.44(彈性IP)或公共DNS(ec2-11-222-333-444.compute-1.amazonaws.com)仍然有一個空的頁面,而不是我的應用程序。

代碼通過Capistrano部署,沒有任何錯誤。在舊的微型實例中,我使用了nginx - 這個nginx還可以在新實例上訪問,還是需要重新設置/安裝?

如何讓我的應用程序可訪問?

謝謝

+0

你是如何升級你的實例的? EBS支持實例,停止,修改和啓動? – andreimarinescu

回答

0

如果我猜的話,那就是SSH密鑰(而不是EC2密鑰對,但是從機器來的實際SSH密鑰)發生了變化,並且在默認情況下,SSH在本地機器上將出於安全原因阻止連接。

如果您使用的是Mac/Linux計算機,則可以查看~/.ssh/known_hosts並刪除Elastic IP條目,保存更改並嘗試再次通過SSH連接到計算機以確認連接。

不確定Windows中是否有正確的路徑,但您會做出相同的更改。

+0

如果是SSH密鑰,則錯誤不會被操作超時,而是一個驗證錯誤。 – andreimarinescu

+1

如果這是一個安全組問題,你會是對的。但是,如果來自相同彈性IP的計算機的SSH指紋發生了改變,這是一個完全獨立的問題 - 當您將彈性IP應用到新實例時會發生什麼情況。這既不是一個驗證錯誤,也不是一個超時。這是SSH內置的預防性安全措施。 –

+0

我現在明白了這個問題,Ryan,我也遇到了這個問題。它仍然不能解釋爲什麼Web服務器響應一個空白頁面,但由於新實例的不同,SSH指紋是一個常見問題。 – andreimarinescu

0

當您最終遇到類似問題時,Aws需要手動監控。 在升級實例時,您採取了哪些方法?

要麼你

  • 用實例和卷創建一個AMI,然後用新鮮的小實例或

  • 拆離EBS卷啓動AMI和附加到一個小實例,並作了必要的配置變化。

SSH連接實例,並檢查

  • 如果你可以手動部署代碼。
  • 如果它是一個git倉庫,你可以直接拖拽和推送更改。
  • 所有與nginx,db等相關的進程都在運行。
  • 實例的默認主頁在哪裏着陸。對於apache.conf中的ex documentroot。

我不能排除密鑰不匹配的可能性仍然錯誤沒有指出。