我在一個區域為部署創建了一個 EC2 實體,我想在另一個區域維護相同的應用程式,以減少延遲,并能夠在一個區域本地部署并使資料庫跨區域同步。
應用程式內的存盤庫是在 AWS 上的 ECR 中管理的 docker 容器映像,包括我想在多個區域中使用它的 mongoDB 資料庫映像。
例如,區域 A 的客戶在應用程式中進行了更改,區域 B 的客戶應該能夠看到更改以及區域 A 的客戶可以看到的所有資料。
有沒有可能的方法來實作這種情況下的多區域部署?
uj5u.com熱心網友回復:
這將需要結合多種技術。
- 我們可以從配置了基于延遲的路由策略的 DNS 開始。這將使您的客戶能夠被重定向到可以在他們的位置更快地回應的 ALB。(由于海纜,物理距離最近并不一定意味著更快!是的,海纜會導致更少的網路跳數)。
- 考慮使用自動擴展組,它允許您將在 EC2 上運行的應用程式的副本傳播到該區域的多個可用區。您可能需要考慮跨組織必須服務的多個區域部署此 Auto-scaling 組。
- 這也需要每個區域的負載均衡器!這將允許您在單個區域中的多個作業節點/EC2 之間分配流量。
通過使用不同的可擴展計算技術(如 EKS、ECS、EB、Lambdas)可以實作相同的目標,但歸根結底,DNS 必須保持不變才能實作更低的延遲。
如果您發現這難以實作,使用 CloudFront 不僅可以快取靜態內容,而且在與負載均衡器集成時還可以為您帶來以下好處!
- 在您的架構中使用 CF 允許客戶路由到最近的本地存在點 (pops)
- 然后,請求從 pop 遍歷 AWS 私有鏈接,這使它們能夠更快地從客戶區域路由到 ALB 所在的原始區域,因為流經這個專用網路的流量較少(這是一種快速方式)。
- 它還增加了您的應用程式處理更高網路流量的容忍度,因為這些 POP 起到了保護傘的作用(盡管您遇到了另一個問題,稱為拒絕錢包攻擊而不是 DDOS)。
- 哦,順便說一下,在 AWS 私有鏈接中提供流量也比讓客戶直接訪問 ALB 便宜大約(每 GB 0.005 美元)
- CF 還允許我們嵌入 L7 (WAF) 和 L4 (Shield Basic & Advanced) 保護。
- CF 還允許我們創建源組,這有助于確保如果出現區域中斷,我們可以通過使用源組將流量重定向到駐留在另一個區域的故障轉移源
uj5u.com熱心網友回復:
我看到您關心的是同步資料。那么唯一的方法就是跨區域復制資料。但這是一種權衡。
正如您所指出的,如果您集中維護資料,訪問延遲會受到影響。但是跨區域同步資料也有延遲。如果應用程式是讀取密集型的,則值得跨區域同步資料庫。如果它是寫密集型的,我認為中央資料庫更好。
無論如何,由于您在 EC2 上使用 MongoDb,因此必須查看產品功能,如果 MongoDB 支持跨兩個實體同步。
至于 AWS,他們確實有 DynamoDB 全域表,旨在處理您所要求的。
但就像我說的那樣,僅僅因為它是可能的并不意味著你必須這樣做。考慮這兩種選擇的利弊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/419435.html
標籤:
