在VPC時,我們有在我們的Web服務器正在運行多個可用區,在那裏,我們在共享媒體內容得到普遍的問題。例如,在一個特定情況下,當log
或temp
路徑,以及images
或files
可以由用戶/管理員上傳或由應用程序生成的情況。
當Load Balancer將網站流量引導到隨機服務器(運行在不同的可用區域)時,這成爲一個需要解決的重大問題。
在這種情況下,我們必須擁有一個共享的公用位置,以保存這些媒體文件(由用戶上傳或由應用程序生成)。否則,每個服務器(在可用區域中)將單獨保存文件,並且如果用戶上次用戶上傳的照片位於可用區域A服務器中,則下一次(如果用戶通過負載均衡器)可用區域B服務器將文件將不會在那裏。這是一個非常糟糕的情況。
解決方案:
最好建議是由AWS旨在解決這一特定需要的用戶AWS EFS服務。這會創建一個共享位置來保存共享/公用文件,這些文件可以像本地文件系統文件夾一樣訪問。就像NFS掛載文件夾一樣。
您可以使用S3存儲,這在某些情況下也是推薦的,但您需要修改或設置您的代碼,以便它可以處理S3存儲文件系統。 此外,您還可以使用第三方S3FS將S3存儲掛載到Web服務器(EC2實例)。但AWS確實推薦給50%的建議。由於AWS可能無法做一些監控,幫助客戶監控流量和其他內容。
您還可以創建一個獨立的EC2實例,其主要作業只是保存這些常用媒體文件。這可以在Public或Private子網中的任何位置創建,只要它與其他子網位於相同的路由表中,它就會工作。我們可以將此實例用作NFS,方法是在此實例中創建所需數量的目錄並將它們導出到特定的Web服務器(位於我們不同的可用區域中),或者也可以將IP地址範圍設爲export
(如果我們在AWS中設置了自動可伸縮組) 。然後,每個客戶端(Web服務器)需要將導出的目錄導出到我們的應用程序期望這些目錄的位置。這些目錄然後將像普通的本地目錄一樣運行,但在不同可用區域中的所有正在運行的Web服務器上將是通用的。
如果我們有一個NAT EC2 Instance
正在運行,我們還可以使用它作爲NFS服務器並在其上創建目錄並將它們導出到Web服務器。
結論: 的space
和budget cost
是兩個重要因素。在上述所有情況下,表現更像是相似的。當我們有< 10GB的媒體文件時,我們要麼使用正確的EC2實例進行NFS。但是,就像我們設置單獨的EC2實例一樣,選項#3可能會在未來進行讀/寫操作,在這種情況下,選項#4將更合適。 S3也是正確的選擇,但是我們可以選擇相應地更改代碼。對於大文件大小,S3也是正確的選擇。
你對這個問題給予了否定性的評價並不是一個公平的問題,也沒有說一句話。你從這個問題所理解的觀點可能不是正確的。 –