2017-05-13 75 views
-2

當我們在AWS VPC-EC2實例上部署應用程序時,Joomla配置的日誌,Tmp路徑爲configuration.php。我的VPC是可自動擴展的,因此我假定日誌應該位於任何共享位置?或應該在EC2實例本地位置? 另外,我們將在我們的joomla的configuration.php中使用的路徑是什麼。Joomla在AWS中的部署,尤其是管理在多個可用區域中運行的Web服務器(實例)之間的公共文件/文件夾

public $log_path = '/home/public_html/logs'; 
public $tmp_path = '/home/public_html/temp'; 
+0

你對這個問題給予了否定性的評價並不是一個公平的問題,也沒有說一句話。你從這個問題所理解的觀點可能不是正確的。 –

回答

0

在VPC時,我們有在我們的Web服務器正在運行多個可用區,在那裏,我們在共享媒體內容得到普遍的問題。例如,在一個特定情況下,當logtemp路徑,以及imagesfiles可以由用戶/管理員上傳或由應用程序生成的情況。

當Load Balancer將網站流量引導到隨機服務器(運行在不同的可用區域)時,這成爲一個需要解決的重大問題。

在這種情況下,我們必須擁有一個共享的公用位置,以保存這些媒體文件(由用戶上傳或由應用程序生成)。否則,每個服務器(在可用區域中)將單獨保存文件,並且如果用戶上次用戶上傳的照片位於可用區域A服務器中,則下一次(如果用戶通過負載均衡器)可用區域B服務器將文件將不會在那裏。這是一個非常糟糕的情況。

解決方案:

  1. 最好建議是由AWS旨在解決這一特定需要的用戶AWS EFS服務。這會創建一個共享位置來保存共享/公用文件,這些文件可以像本地文件系統文件夾一樣訪問。就像NFS掛載文件夾一樣。

  2. 您可以使用S3存儲,這在某些情況下也是推薦的,但您需要修改或設置您的代碼,以便它可以處理S3存儲文件系統。 此外,您還可以使用第三方S3FS將S3存儲掛載到Web服務器(EC2實例)。但AWS確實推薦給50%的建議。由於AWS可能無法做一些監控,幫助客戶監控流量和其他內容。

  3. 您還可以創建一個獨立的EC2實例,其主要作業只是保存這些常用媒體文件。這可以在Public或Private子網中的任何位置創建,只要它與其他子網位於相同的路由表中,它就會工作。我們可以將此實例用作NFS,方法是在此實例中創建所需數量的目錄並將它們導出到特定的Web服務器(位於我們不同的可用區域中),或者也可以將IP地址範圍設爲export(如果我們在AWS中設置了自動可伸縮組) 。然後,每個客戶端(Web服務器)需要將導出的目錄導出到我們的應用程序期望這些目錄的位置。這些目錄然後將像普通的本地目錄一樣運行,但在不同可用區域中的所有正在運行的Web服務器上將是通用的。

  4. 如果我們有一個NAT EC2 Instance正在運行,我們還可以使用它作爲NFS服務器並在其上創建目錄並將它們導出到Web服務器。

結論:spacebudget cost是兩個重要因素。在上述所有情況下,表現更像是相似的。當我們有< 10GB的媒體文件時,我們要麼使用正確的EC2實例進行NFS。但是,就像我們設置單獨的EC2實例一樣,選項#3可能會在未來進行讀/寫操作,在這種情況下,選項#4將更合適。 S3也是正確的選擇,但是我們可以選擇相應地更改代碼。對於大文件大小,S3也是正確的選擇。

+1

我的兩分錢:就像一年前,我們嘗試了約30個Joomla網站的EFS,而且速度非常慢(IO延遲很大;而Joomla有很多小文件而不是幾個大文件; EFS的工作效果明顯更好,幾乎沒有大文件)。但我無法確定該服務是否改善了對許多文件用例的支持。 – arod

+0

更多內容:[此線程](https://forums.aws.amazon.com/thread.jspa?threadID=235976)公開了有關EFS延遲問題的許多觀點。 – arod

+0

@arod,你的觀點非常重要。我在我的Web服務器實例中導入的NAT實例上設置了NFS導出。我沒有注意到任何延遲問題,因爲這更像是同一個系統上的本地目錄。 EFS可能有一些延遲問題(當請求的數量需要小型媒體資產時),但CDN是最好的選擇。 –

相關問題