Amazon-Ec2

Amazon ECS 負載均衡器設置為埠 9090 不起作用

  • December 15, 2016

我在 Amazon Web Services 中創建了經典負載均衡器,並將偵聽器埠指定為 9090。並且我已將負載均衡器與具有 2 個 EC2 實例的集群相關聯。我也給出了 9090 實例的入站規則。

為了在集群中創建服務,我創建瞭如下任務定義。

{
 "family": “my-spring-task“,
 "containerDefinitions": [{
   "image": “my-docker-group/my-spring-app“,
   "name": "my-spring-app",
   "cpu": 10,
   "memory": 256,
   "essential": true,
   "portMappings": [{
     "containerPort": 9090,
     "hostPort": 9090
   }]
 }]
}

然後我創建了服務,上面給出了任務定義。

aws ecs register-task-definition --cli-input-json file://service90-task.json

aws ecs create-service --cluster service90-cluster --service-name service90-service --load-balancers loadBalancerName=service90-load-balancer,containerName=my-spring-app,containerPort=9090 --task-definition service90-task  --role ecs-service-role --desired-count 0

我的計劃是執行一個使用 gradle 和 docker 外掛建構的 Spring Boot 項目。

我有執行埠 8080 的項目。它按預期工作。但是當我嘗試在埠 9090 上執行服務時,由於執行狀況檢查失敗,它不起作用。

我需要有關如何將埠設置為 9090. 或任何埠號的建議。

容器內的埠很可能仍然是 8080,除非您將 spring boot 本身重新配置為使用 9090。在這種情況下,您需要將 containerPort 設置為 8080 並將 hostPort 保留為 9090。

或者,您可以將 hostPort 留空,ECS 將為每個容器分配一個隨機的“高”埠,然後將其附加到 ALB。這樣做的好處是您無需在 ECS 集群中映射埠分配,並且同一容器的多個實例可以在同一主機上執行。

引用自:https://serverfault.com/questions/820798