2015-07-22 69 views
21

我最近嘗試使用AWS的任務定義部署docker容器。一路上,我遇到了以下問題。如何理解Amazon ECS羣集

  1. 如何將實例添加到集羣?使用Amazon ECS控制檯創建新集羣時,如何將新的ec2實例添加到新集羣。換句話說,啓動一個新的ec2實例時,需要配置哪些配置才能將其分配給Amazon ECS下的用戶創建的羣集。

  2. 集羣中需要多少個ECS實例,有哪些因素?

  3. 如果我在集羣中有兩個實例(ins1,ins2),並且我的webapp,db容器在ins1中運行。在更新正在運行的服務(通過http://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service.html)之後,我可以看到新創建的服務正在「ins2」中運行,然後耗盡「ins1」中的舊服務。我的問題是,我的webapp容器分配給另一個實例後,訪問IP地址成爲另一個實例IP。如何防止或使用相同的IP地址訪問webapp的解決方案?不僅IP,更改爲新實例後的數據如何?

回答

31

這些都是真三個相當不同的問題,所以它可能最好在這裏因此將其分成不同的問題 - 我會盡力提供一個答案,無論:

  1. Amazon ECS Container Instances間接添加,這是在每個實例上的Amazon ECS Container Agent的作業將自己註冊到由您創建和命名的集羣中,詳情請參閱conceptslifecycle。爲此,您需要按照Launching an Amazon ECS Container Instance中列出的步驟操作,無論是手動還是自動化。注意第10步:

默認情況下,您的容器實例啓動到您的默認 集羣。如果要啓動到您自己的羣集而不是默認的 ,請選擇「高級詳細信息」列表,並將以下 腳本粘貼到用戶數據字段中,並將您的羣集名稱替換爲羣集的 名稱。

#!/bin/bash 
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config 
  • 你只需要一個實例ECS爲這樣的工作,因爲集羣本身是由AWS代表你的管理。這不會是足夠高可用性方案,但:

    • 因爲容器主機都只是普通的亞馬遜EC2情況下,你需要遵循AWS最佳實踐和傳播他們在兩個或三個Availability Zones (AZ)使得(罕見)AZ的中斷不會影響您的羣集,因爲ECS可以將您的容器遷移到其他主機實例(前提是您的羣集具有足夠的備用容量)。
    • 許多促進容器的高級羣集技術都有自己的服務編排層,並且通常需要使用不均勻數> 3(服務)實例來實現高可用性設置。您可以在Administration範圍內(參見Running CoreOS with AWS EC2 Container Service)在最佳羣集大小中瞭解關於此的更多信息。
  • 這是指回至2中提到已在高可用性和服務編排的主題,更確切地說你所面臨的service discovery問題,使用一般的容器技術和微服務中,即使其中的日益流行特別是:

  • +1

    真棒的答案!我希望它仍然有效,但是如果某些事情發生了變化,你會以我爲答案更新他的答案。 – the0ther