背景
我已按照本教程 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cli-tutorial-ec2.html ,编写了一个 docker compose 文件,创建了一个网站 A(由 4 个容器组成)并运行为我的客户的 1 个服务。
但是,现在我有另一个客户,我需要使用与上述类似的策略来托管另一个网站网站 B。
这是ECS/EC2当前运行的服务
这里是启动并运行的容器,现在为网站 A 提供服务
问题和疑虑
我想在开始部署网站B之前清除所有概念,感谢您的帮助,谢谢
后续行动
我决定使用 AWS 应用程序负载均衡器来解决我的问题,并进行以下配置设置。
我首先研究负载均衡器
并配置如下
我设置了一个负载均衡器,它使用传入端口 80 的 HTTP 协议(protocol)监听请求,只要有用户访问 Web 服务器(即:前端容器),监听器就会将该请求转发到目标组(即:http-port-80 -使用权)
这是包含注册目标(当前运行容器的我的 ec2 实例)的目标组(http-port-80-access),容器的主机端口是 32849,而相关的负载均衡器(web -access-load-balancer) 用于动态端口映射。
我还在默认规则之上又配置了 1 条规则,每当用户访问 websiteA 的 url 时,负载均衡器都会将请求转发到目标组(http-port-80-access)。
万事俱备,健康测试也通过了。然后我使用了以下
ecs-cli compose service up
将负载均衡器与服务连接起来的命令ecs-cli compose --file ./docker-compose-aws-prod.yml --cluster my-ecs-cluster-name --ecs-profile my-ecs-profile --cluster-config my-cluster --project-name my-project --ecs-params ./ecs-params.yml service up --target-group-arn arn:aws:elasticloadbalancing:us-east-2:xxxxxxxxx:targetgroup/http-port-80-access/xxxxxxxx --container-name frontend --container-port 80
其中 frontend 是网站 A 的前端容器的服务名称
但是,结果当我通过浏览器访问 www.websiteA.com 时,除了 ERR_CONNECTION_REFUSED,访问 www.websiteA.com:32849 确实可以访问,但这不是我想要的。
我想知道我配置错误的部分
最佳答案
如果您将流量直接发送到实例,那么您将不得不在不同的端口上托管。您应该考虑使用 ALB,它允许您使用 dynamic ports in ECS . ALB 可以接受来自不同域的端口 80 和 443 的流量,并根据域等内容将流量路由到不同的容器。
关于amazon-web-services - 是否可以在同一个 AWS EC2 中运行多个 Web 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60230012/