本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
逐步解說:設定 Apache Web 伺服器並提供 Amazon EFS 檔案
您可以讓執行 Apache Web 伺服器的 EC2 執行個體提供存放在 Amazon EFS 檔案系統上的檔案。您能夠透過一個 EC2 執行個體提供檔案,亦可以視應用程式需求,讓多個 EC2 執行個體從 Amazon EFS 檔案系統提供檔案。操作程序如下所述。
-
建立 Auto Scaling 群組,即可在多個 EC2 執行個體上設定 Apache Web 伺服器。您可以使用 Amazon EC2 Auto Scaling 建立多個 EC2 執行個體,這項 AWS 服務可讓您根據應用程式需求增加或減少群組中的 EC2 執行個體數量。若您擁有多個 Web 伺服器,則需一併具備負載平衡器,藉此將請求的流量分佈至各伺服器。
注意
執行這兩個操作程序時,您建立的所有資源皆會位於美國西部 (奧勒岡) 區域 (us-west-2
)。
透過單一 EC2 執行個體提供檔案
請遵循下列步驟,即可在一個 EC2 執行個體上設定 Apache Web 伺服器,以便提供您在 Amazon EFS 檔案系統中建立的檔案。
-
請依照入門練習中的步驟進行操作,藉此取得可正常運作的組態,而該組態是由下列項目所組成:
-
Amazon EFS 檔案系統
-
EC2 執行個體
-
掛載在 EC2 執行個體上的檔案系統
如需說明,請參閱開始使用 Amazon Elastic File System。在遵照步驟執行時,請記住以下內容:
-
EC2 執行個體的公有 DNS 名稱。
-
掛載目標的公有 DNS 名稱,該掛載目標位於啟動 EC2 執行個體時所使用的可用區域中。
-
-
(選用) 您可以選擇在入門練習建立的掛載點中卸載檔案系統。
$ sudo umount ~/
efs-mount-point
在本逐步解說中,您可以為檔案系統建立另一個掛載點。
-
在 EC2 執行個體上安裝 Apache Web 伺服器並加以設定,如下所示:
-
連線至 EC2 執行個體並安裝 Apache Web 伺服器。
$
sudo yum -y install httpd -
啟動 服務。
$
sudo service httpd start -
建立掛載點。
首先請注意,
DocumentRoot
檔案中的/etc/httpd/conf/httpd.conf
會指向/var/www/html
(DocumentRoot "/var/www/html"
)。Amazon EFS 檔案系統將掛載於文件根目錄底下的子目錄。
在
/var/www/html
下,建立名爲efs-mount-point
的子目錄,用於掛載檔案系統端點。$
sudo mkdir /var/www/html/efs-mount-point -
使用下列指令掛載 Amazon EFS 檔案系統。用檔案系統的 ID 取代
file-system-id
。$
sudo mount -t efsfile-system-id
:/ /var/www/html/efs-mount-point
-
-
測試設定。
-
在入門練習所建立的 EC2 執行個體安全群組中新增規則,以便讓 TCP 連接埠 80 接受來自任何位置的 HTTP 流量。
新增規則之後,EC2 執行個體安全群組將具備以下傳入規則。
如需說明,請參閱使用主控台建立安全群組。
-
建立範例 html 檔案。
-
將目錄變更為掛載點。
$ cd /var/www/html/efs-mount-point
-
建立名爲
sampledir
的子目錄,並變更所有權。$
sudo mkdir sampledir$
sudo chown ec2-user sampledir$
sudo chmod -R o+r sampledir變更目錄,才能在
sampledir
子目錄中建立檔案。$
cd sampledir -
建立範例
hello.html
檔案。$ echo "<html><h1>Hello from Amazon EFS</h1></html>" > hello.html
-
-
開啟瀏覽器視窗並輸入存取檔案的 URL,該 URL 為 EC2 執行個體的公有 DNS 名稱,後面會加上檔案名稱。例如:
http://
EC2-instance-public-DNS
/efs-mount-point/sampledir/hello.html
現在,您可以開始提供 Amazon EFS 檔案系統上所存放的網頁內容。
-
注意
根據此處的設定,EC2 執行個體不會在開機時自動啟動 Web 伺服器 (httpd),亦不會在開機時掛載檔案系統。您可以在下一個逐步解說中建立啟動組態,以便進行這項設定。
透過多個 EC2 執行個體提供檔案
請遵循下列步驟,即可由多個 EC2 執行個體提供相同的 Amazon EFS 檔案系統內容,藉此改善可擴展性或可用性。
-
請依照 快速建立具有建議設定的檔案系統 (主控台) 練習中的步驟進行操作,進而建立並測試 Amazon EFS 檔案系統。
重要
在本逐步解說中,您不會用到在入門練習中建立的 EC2 執行個體;相反地,您將需要啟動新的 EC2 執行個體。
-
透過下述步驟,在 VPC 中建立負載平衡器。
-
定義負載平衡器
在 Basic Configuration (基本組態) 區段中選取 VPC,您將在該 VPC 中建立要掛載檔案系統的 EC2 執行個體。
在選取子網路區段中,選取所有可用的子網路。如需詳細資訊,請參閱下一區段的
cloud-config
指令碼。 -
指派安全群組
為負載平衡器建立新的安全群組,藉此允許任何位置在連接埠 80 上進行 HTTP 存取,如下所示:
Type (類型):HTTP
-
Protocol (通訊協定):TCP
-
Port Range (連接埠範圍):80
-
Source (來源):Anywhere (任何位置) 0.0.0.0/0
注意
一切就緒後,您還能夠更新 EC2 執行個體安全群組的傳入規則存取權,即可僅允許來自負載平衡器的 HTTP 流量。
-
設定運作狀態檢查
將 Ping Path (Ping 路徑) 的值設為
/efs-mount-point/test.html
。efs-mount-point
是掛載檔案系統的子目錄。在此程序的後續步驟中,您可以新增test.html
頁面。
注意
請勿新增任何 EC2 執行個體。稍後,您會建立 Auto Scaling 群組,並在該群組中啟動 EC2 執行個體、指定此負載平衡器。
如需建立負載平衡器的詳細資訊,請參閱《Elastic Load Balancing 使用者指南》中的 Elastic Load Balancing 入門。
-
建立包含兩個 EC2 執行個體的 Auto Scaling 群組。首先,請建立可以說明執行個體的啟動組態。接著,請指定該啟動組態,以便建立 Auto Scaling 群組。在下列步驟中,您可以看見在 Amazon EC2 主控台中指定用來建立 Auto Scaling 群組的組態資訊。
-
在左側導覽窗格的 AUTO SCALING (AUTO SCALING) 下方,選擇 Launch Configurations (啟動組態)。
-
選擇 Create Auto Scaling group (建立 Auto Scaling 群組) 來啟動精靈。
-
選擇 Create launch configuration (建立啟動組態)。
-
從快速入門中,選取最新版的 Amazon Linux 2 AMI。該 AMI 與入門練習中 建立您的 EFS 檔案系統並啟動 EC2 執行個體 所使用的 AMI 相同。
-
在 Advanced (進階) 區段中,執行下列步驟:
-
針對 IP Address Type (IP 地址類型),選擇 Assign a public IP address to every instance (將公有 IP 地址指派給每個執行個體)。
-
將以下指令碼複製/貼上至 User data (使用者資料) 方塊。
您必須提供
file-system-id
與aws-region
的值,進而更新該指令碼 (若有遵照入門練習的步驟進行操作,則表示您已在 us-west-2 區域中建立檔案系統)。在指令碼中,請注意下列事項:
-
該指令碼會安裝 NFS 用戶端與 Apache Web 伺服器。
-
echo 命令會在
/etc/fstab
檔案中寫入以下項目,藉此找出檔案系統的 DNS 名稱,以及掛載該檔案系統的子目錄。透過此項目,即可確保系統在每次重新開機後,一律會掛載檔案。請注意,系統會動態建構檔案系統的 DNS 名稱。如需詳細資訊,請參閱 以 DNS 名稱掛載於 Amazon EC2。file-system-ID
.efs.aws-region
.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults -
建立
efs-mount-point
子目錄並掛載檔案系統。 -
建立
test.html
頁面,讓 ELB 運作狀態檢查可以找到您在建立負載平衡器時指定為 ping 點的檔案。
如需使用者資料指令碼的詳細資訊,請參閱執行個體中繼資料和使用者
#cloud-config package_upgrade: true packages: - nfs-utils - httpd runcmd: - echo "$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).
file-system-id
.efs.aws-region
.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults" >> /etc/fstab - mkdir /var/www/html/efs-mount-point - mount -a - touch /var/www/html/efs-mount-point/test.html - service httpd start - chkconfig httpd on -
-
-
在指派安全群組中,選擇選取現有的安全群組,然後選擇您為 EC2 執行個體建立的安全群組。
現在,設定 Auto Scaling 群組的詳細資訊時,請採用下列資訊:
-
在 Group size (群組大小) 中,選擇
Start with 2 instances
。系統即會建立兩個 EC2 執行個體。 -
從 Network (網路) 清單中選取 VPC。
-
選取子網路,該子網路所在的可用區域與您在先前步驟建立啟動組態時,為了指定 User Data (使用者資料) 指令碼的掛載目標 ID 而使用的可用區域相同。
-
在進階詳細資訊區段中
-
在 Load Balancing (負載平衡) 中,選擇 Receive traffic from Elastic Load Balancer(s) (從一或多個 Elastic Load Balancer 接收流量),然後選取您為本練習建立的負載平衡器。
-
在 Health Check Type (運作狀態檢查類型) 中,選擇 ELB (ELB)。
-
-
如需建立 Auto Scaling 群組,請依照《Amazon EC2 Auto Scaling 使用者指南》中的設定擴展規模和負載平衡的應用程式所述的指示。您亦可善用上述資料表中的資訊 (若適用)。
-
一旦成功建立 Auto Scaling 群組,即代表您具備兩個已安裝
nfs-utils
與 Apache Web 伺服器的 EC2 執行個體。在每個執行個體上,請確認您的/var/www/html/efs-mount-point
子目錄已掛載 Amazon EFS 檔案系統。如需 Connect 至 EC2 執行個體的指示,請參閱 Amazon EC2 使用者指南中的連線到 Linux 執行個體。注意
在預設情況下,AMI 中已包含
nfs-utils
,因此您在啟動 Amazon EC2 執行個體時選擇了 Amazon Linux AMI 2016.03.0 Amazon Linux AMI,便無須再安裝。 -
建立範例頁面 (index.html)。
-
變更目錄。
$ cd /var/www/html/efs-mount-point
-
建立
sampledir
的子目錄,並變更所有權。然後,請變更目錄,才能在sampledir
子目錄中建立檔案。如果您有遵照先前的 透過單一 EC2 執行個體提供檔案 進行操作,則表示已建立sampledir
子目錄,所以可以略過此步驟。$ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir $ cd sampledir
-
建立範例
index.html
檔案。$ echo "<html><h1>Hello from Amazon EFS</h1></html>" > index.html
-
-
現在,您可以測試設定。請使用負載平衡器的公有 DNS 名稱來存取 index.html 頁面。
http://
load balancer public DNS Name
/efs-mount-point/sampledir/index.html負載平衡器會將請求傳送至其中一個執行 Apache Web 伺服器的 EC2 執行個體。接著,Web 伺服器會提供存放在 Amazon EFS 檔案系統上的檔案。