Domain-Name-System

負載平衡託管在 EC2 中的根域重定向 Web 伺服器以刪除 SPOF

  • January 8, 2016

這可能看起來很晦澀,也可能很小眾,但請耐心等待。

情況是:

  • www.domain.com 指向 EC2 中的基礎設施,特別是 ELB
  • domain.com 指向 EC2 中的一個微型實例,並且是一個 nginx 伺服器,其唯一目的是將所有請求重定向到 www.domain.com
  • 所述微實例是單點故障,因為只有其中一個

我們想要做的是刪除 SPOF,以便讓多個伺服器執行此重定向。將根域設置為 CNAME 以使用 ELB 違反了我相信的 RFC,而且我不相信我們的 DNS 主機無論如何都會允許我們這樣做。

鑑於這些限制,我們應該怎麼做才能消除此 SPOF?誠然,如果它因任何原因消失,但企業希望減輕這種風險,影響很小。

如前所述,S3 靜態託管是一個不錯的選擇,但它需要託管在 Route 53 中的別名記錄……而且它不支持 TLS。

可以通過在 S3 前面使用 CloudFront 為託管在 S3 儲存桶上的站點提供 TLS(適用於支持 SNI 的瀏覽器),這可以完美執行,但還需要 Route 53 中的別名。

請注意,別名不是一種 DNS 記錄。Alias 是 Route 53 DNS 伺服器中的一個內部配置指令,它表示“當我們在此處收到對這條記錄的請求時,我們將在內部(在 Route 53 數據庫中)查找並返回與如果我們返回相同的結果實際上已經收到了另一份不同記錄的請求。” 最後,它提供了一個看起來類似於 CNAME 的功能,但不是告訴解析器要將一個主機名視為另一個主機名,並查找另一條記錄以獲取更多資訊,Route 53 在內部執行該查找步驟,使解析器對用於滿足請求的實際機制一無所知……和這種內部(而非外部)查找機制是別名記錄在區域頂點按需要工作的原因,而 CNAME 卻沒有。

除非您有一個可以適應動態 IP 地址的 DNS 機制(如 S3 和 CloudFront 上的託管站點所需要的那樣),否則沒有消除 SPOF 的可靠方法,儘管其他一些 DNS 提供商支持類似於 Route 53 的別名記錄的功能。例如,CloudFlare 將其稱為“CNAME 扁平化”,其中他們的 DNS 伺服器在收到對您的 A-Record 的查詢時,會在後端查找不同的 A-Record(在不同的域中,例如來自 s3.amazonaws.com 或 cloudfront.net),然後將該答案返回給請求者。這實現了與別名相同的最終結果。對於第 3 方 DNS 伺服器來說,這並不是真正的“內部”,但由於第二個請求是向後發送的,因此客戶端解析器沒有發現任何異常行為。

2015 年 1 月,AWS 宣布了 EC2 Instance Auto-Recovery,它將拆除並重建一個未能通過 Cloudwatch 可用性檢查的實例,創建一個具有相同“一切”的新實例——實例 ID、EBS 卷、彈性 IP 等.,並且此功能適用於多個實例類,包括 t2 類。

或者,作為最後的手段,您可以通過配置多個這些重定向機器並在您的區域頂點配置多個 A 記錄來實現循環“負載平衡” ,從而*部分緩解 SPOF。*這將減少但不能消除其中一台機器停機的影響,儘管這種解決方案的可行性在很大程度上取決於瀏覽器的行為。它不會被視為“高可用性”解決方案,但(也許)總比沒有好。

為了避免另一個重定向,如果可能的話,我想在那裡進行 TLS。

如果我正確理解此評論,那麼您實際上必須在那裡執行 TLS。如果我將瀏覽器指向https://example.com,則該端點必須使用 TLS並且具有有效的主機名證書,否則連結會被有效破壞——如果伺服器無法以保持瀏覽器開心。

引用自:https://serverfault.com/questions/747335