[英]Do I need AWS Load balancer with nginx in AWS ECS?
我在 AWS ECS 中使用 Docker。 我有一台帶有來自 AWS ECS 的 docker 代理的 EC2 機器,ECS 任務包含 3 個容器:
我想支持非常巨大的流量。 我需要設置 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 機器嗎? 多容器? 多上游?
我建議您從使用負載均衡器開始,因為:
您可以通過將負載均衡器配置為與 AWS WAF 集成來保護自己免受惡意攻擊
將來您可以輕松添加更多目標
缺少負載平衡器需要您在應用程序級別配置 SSL
它支持健康檢查。
注意:考慮使用 AWS S3 和 cloudfront 來提供您的靜態內容
應用程序負載平衡器現在支持基於主機的路由,這意味着它可以使用指向多個網站的多個域(或子域)。 除了基於主機的路由之外,它還支持基於路徑的路由。 例如,當mydomain.com/web1
指向website1
, mydomain.com/web2
可以指向website2
。
我想不出您需要使用 nginx 的原因(除非我遺漏了什么)。
所以回答你的問題,我會這樣做。
參考: 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.