簡體   English   中英

我是否需要在 AWS ECS 中使用帶有 nginx 的 AWS 負載均衡器?

[英]Do I need AWS Load balancer with nginx in AWS ECS?

我在 AWS ECS 中使用 Docker。 我有一台帶有來自 AWS ECS 的 docker 代理的 EC2 機器,ECS 任務包含 3 個容器:

  • nginx容器
  • 應用程序-nodejs 容器
  • staticfiles-nodejs-application 容器。

我想支持非常巨大的流量。 我需要設置 AWSLoad Balancer 嗎? 或者我對 nginx 上游的設置就足夠了?

nginx 配置示例:

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                                                                          
}                                                                                                          

編輯

我畫了當前的架構,我想添加LoadBalancer,我應該把它放在哪里? 自動縮放適合這張圖嗎? 我應該使用一台或多台 ec2 機器嗎? 多容器? 多上游?

在此處輸入圖片說明

我建議您從使用負載均衡器開始,因為:

  • 您可以在負載均衡器上配置 SSL 並在負載均衡器上終止 SSL
  • 您可以通過將負載均衡器配置為與 AWS WAF 集成來保護自己免受惡意攻擊

  • 將來您可以輕松添加更多目標

  • 缺少負載平衡器需要您在應用程序級別配置 SSL

  • 它支持健康檢查。

  • 您將獲得與負載均衡器一起使用的免費 ACM 證書
  • 易於每年更新 SSL 證書

注意:考慮使用 AWS S3 和 cloudfront 來提供您的靜態內容

將負載均衡器引入您現有的架構

應用程序負載平衡器現在支持基於主機的路由,這意味着它可以使用指向多個網站的多個域(或子域)。 除了基於主機的路由之外,它還支持基於路徑的路由。 例如,當mydomain.com/web1指向website1mydomain.com/web2可以指向website2

我想不出您需要使用 nginx 的原因(除非我遺漏了什么)。

所以回答你的問題,我會這樣做。

  • 引入應用程序負載均衡器
  • 通過 ECS (Fargate) 部署多個容器
  • 對於每項服務,我都會有一個目標群體專門負責管理擴展和健康檢查。
  • 最后,我會做基於主機的路由,s1.mydomain.com,s2.mydomain.com 每個指向不同的目標組(每個服務一個)

參考: https : //aws.amazon.com/blogs/aws/new-host-based-routing-support-for-aws-application-load-balancers/

希望這可以幫助。

正如你所說

我想支持非常巨大的流量。

我希望在某個時候您需要將 AWS ECS 集群水平擴展到多個實例,此時,您將需要一個彈性負載均衡器來平衡它們之間的流量。

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

如果這個說法是真的

我要支持非常大的流量

除了 ECS 任務之外,您還需要閱讀 AWS ECS 中的不同概念:

為了正確使用 AWS ECS,您需要一起使用這些服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM