在AWS ECS中是否需要带有Nginx的AWS Load Balancer?

时间:2019-12-30 15:28:20

标签: docker nginx amazon-ec2 amazon-ecs

我在AWS ECS中使用Docker。我有一台带有AWS ECS中的docker agent的EC2计算机,并且ECS任务包含3个容器:

  • nginx容器
  • application-nodejs容器
  • staticfiles-nodejs-application容器。

我想支持非常大的流量。我是否需要设置AWSLoad Balancer?还是我对nginx上游的设置足够?

nginx conf示例:

upstream appwww {                                                                                            
    server app-www:3000;                                                                                     
}                                                                                                             

server {                                                                                                      
    server_name  my.home.net;                                                                       

     location / {                                                                                             
        proxy_pass http://appwww;                                                                            
        proxy_http_version 1.1;                                                                               
        proxy_set_header Upgrade $http_upgrade;                                                               
        proxy_set_header Connection 'upgrade';                                                                
        proxy_set_header Host $host;                                                                          
        proxy_cache_bypass $http_upgrade;                                                                     
    }                                                                                                         

    listen 443 ssl http2; # managed by Certbot                                                                      
    ssl_certificate......; # managed by Certbot            
    ssl_certificate_key........ # managed by Certbot          
    include /.......# managed by Certbot                                     
    ssl_dhparam /.....pem; # managed by Certbot                                       

}                                                                                                             


server {                                                                                                      
    if ($host = my.host.net) {                                                                      
        return 301 https://$host$request_uri;                                                                 
    } # managed by Certbot                                                                                    


    listen       80;                                                                                          
    server_name  my.host.net;                                                                       
    return 404; # managed by Certbot                                                                          
}                                                                                                          

3 个答案:

答案 0 :(得分:1)

正如你所说的

  

我想支持非常大的流量。

我希望在某个时候您需要将您的AWS ECS集群水平扩展到多个实例,并且在那时,您将需要一个Elastic Load Balancer来平衡它们之间的流量。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide///service-load-balancing.html

答案 1 :(得分:1)

我建议您首先使用负载均衡器,因为:

  • 您可以在负载均衡器上配置SSL,并在负载均衡器上终止SSL
  • 您可以通过将负载均衡器配置为与AWS WAF集成来保护自己免受恶意攻击

  • 您将来可以轻松添加更多目标

  • 缺少负载均衡器要求您在应用程序级别配置SSL

  • 它支持健康检查。

  • 您将获得免费的ACM证书以与负载均衡器一起使用
  • 每年轻松续订SSL证书

注意:考虑使用AWS S3和cloudfront来提供您的静态内容

答案 2 :(得分:0)

如果这句话是真的

  

我想支持非常大的流量

除了ECS任务,您还需要阅读有关AWS ECS中不同概念的信息:

为了正确使用AWS ECS,您需要一起使用这些服务。