逐步解說:設定 Apache Web 伺服器並提供 Amazon EFS 檔案 - Amazon Elastic File System

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

逐步解說:設定 Apache Web 伺服器並提供 Amazon EFS 檔案

您可以讓執行 Apache Web 伺服器的 EC2 執行個體提供存放在 Amazon EFS 檔案系統上的檔案。您能夠透過一個 EC2 執行個體提供檔案,亦可以視應用程式需求,讓多個 EC2 執行個體從 Amazon EFS 檔案系統提供檔案。操作程序如下所述。

注意

執行這兩個操作程序時,您建立的所有資源皆會位於美國西部 (奧勒岡) 區域 (us-west-2)。

透過單一 EC2 執行個體提供檔案

請遵循下列步驟,即可在一個 EC2 執行個體上設定 Apache Web 伺服器,以便提供您在 Amazon EFS 檔案系統中建立的檔案。

  1. 請依照入門練習中的步驟進行操作,藉此取得可正常運作的組態,而該組態是由下列項目所組成:

    • Amazon EFS 檔案系統

    • EC2 執行個體

    • 掛載在 EC2 執行個體上的檔案系統

    如需說明,請參閱開始使用 Amazon Elastic File System。在遵照步驟執行時,請記住以下內容:

    • EC2 執行個體的公有 DNS 名稱。

    • 掛載目標的公有 DNS 名稱,該掛載目標位於啟動 EC2 執行個體時所使用的可用區域中。

  2. (選用) 您可以選擇在入門練習建立的掛載點中卸載檔案系統。

    $ sudo umount ~/efs-mount-point

    在本逐步解說中,您可以為檔案系統建立另一個掛載點。

  3. 在 EC2 執行個體上安裝 Apache Web 伺服器並加以設定,如下所示:

    1. 連線至 EC2 執行個體並安裝 Apache Web 伺服器。

      $ sudo yum -y install httpd
    2. 啟動 服務。

      $ sudo service httpd start
    3. 建立掛載點。

      首先請注意,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

    4. 使用下列指令掛載 Amazon EFS 檔案系統。用檔案系統的 ID 取代 file-system-id

      $ sudo mount -t efs file-system-id:/ /var/www/html/efs-mount-point
  4. 測試設定。

    1. 在入門練習所建立的 EC2 執行個體安全群組中新增規則,以便讓 TCP 連接埠 80 接受來自任何位置的 HTTP 流量。

      新增規則之後,EC2 執行個體安全群組將具備以下傳入規則。

      擷取畫面顯示 EC2 執行個體的輸入規則設定方法。

      如需說明,請參閱使用主控台建立安全群組

    2. 建立範例 html 檔案。

      1. 將目錄變更為掛載點。

        $ cd /var/www/html/efs-mount-point
      2. 建立名爲 sampledir 的子目錄,並變更所有權。

        $ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir

        變更目錄,才能在 sampledir 子目錄中建立檔案。

        $ cd sampledir
      3. 建立範例 hello.html 檔案。

        $ echo "<html><h1>Hello from Amazon EFS</h1></html>" > hello.html
    3. 開啟瀏覽器視窗並輸入存取檔案的 URL,該 URL 為 EC2 執行個體的公有 DNS 名稱,後面會加上檔案名稱。例如:

      http://EC2-instance-public-DNS/efs-mount-point/sampledir/hello.html

    現在,您可以開始提供 Amazon EFS 檔案系統上所存放的網頁內容。

注意

根據此處的設定,EC2 執行個體不會在開機時自動啟動 Web 伺服器 (httpd),亦不會在開機時掛載檔案系統。您可以在下一個逐步解說中建立啟動組態,以便進行這項設定。

透過多個 EC2 執行個體提供檔案

請遵循下列步驟,即可由多個 EC2 執行個體提供相同的 Amazon EFS 檔案系統內容,藉此改善可擴展性或可用性。

  1. 請依照 快速建立具有建議設定的檔案系統 (主控台) 練習中的步驟進行操作,進而建立並測試 Amazon EFS 檔案系統。

    重要

    在本逐步解說中,您不會用到在入門練習中建立的 EC2 執行個體;相反地,您將需要啟動新的 EC2 執行個體。

  2. 透過下述步驟,在 VPC 中建立負載平衡器。

    1. 定義負載平衡器

      Basic Configuration (基本組態) 區段中選取 VPC,您將在該 VPC 中建立要掛載檔案系統的 EC2 執行個體。

      選取子網路區段中,選取所有可用的子網路。如需詳細資訊,請參閱下一區段的 cloud-config 指令碼。

    2. 指派安全群組

      為負載平衡器建立新的安全群組,藉此允許任何位置在連接埠 80 上進行 HTTP 存取,如下所示:

      • Type (類型):HTTP

      • Protocol (通訊協定):TCP

      • Port Range (連接埠範圍):80

      • Source (來源):Anywhere (任何位置) 0.0.0.0/0

      注意

      一切就緒後,您還能夠更新 EC2 執行個體安全群組的傳入規則存取權,即可僅允許來自負載平衡器的 HTTP 流量。

    3. 設定運作狀態檢查

      Ping Path (Ping 路徑) 的值設為 /efs-mount-point/test.htmlefs-mount-point 是掛載檔案系統的子目錄。在此程序的後續步驟中,您可以新增 test.html 頁面。

    注意

    請勿新增任何 EC2 執行個體。稍後,您會建立 Auto Scaling 群組,並在該群組中啟動 EC2 執行個體、指定此負載平衡器。

    如需建立負載平衡器的詳細資訊,請參閱《Elastic Load Balancing 使用者指南》中的 Elastic Load Balancing 入門

建立包含兩個 EC2 執行個體的 Auto Scaling 群組。首先,請建立可以說明執行個體的啟動組態。接著,請指定該啟動組態,以便建立 Auto Scaling 群組。在下列步驟中,您可以看見在 Amazon EC2 主控台中指定用來建立 Auto Scaling 群組的組態資訊。

  1. 在左側導覽窗格的 AUTO SCALING (AUTO SCALING) 下方,選擇 Launch Configurations (啟動組態)

  2. 選擇 Create Auto Scaling group (建立 Auto Scaling 群組) 來啟動精靈。

  3. 選擇 Create launch configuration (建立啟動組態)

  4. 快速入門中,選取最新版的 Amazon Linux 2 AMI。該 AMI 與入門練習中 建立您的 EFS 檔案系統並啟動 EC2 執行個體 所使用的 AMI 相同。

  5. Advanced (進階) 區段中,執行下列步驟:

    • 針對 IP Address Type (IP 地址類型),選擇 Assign a public IP address to every instance (將公有 IP 地址指派給每個執行個體)

    • 將以下指令碼複製/貼上至 User data (使用者資料) 方塊。

      您必須提供 file-system-idaws-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
  6. 指派安全群組中,選擇選取現有的安全群組,然後選擇您為 EC2 執行個體建立的安全群組。

  7. 現在,設定 Auto Scaling 群組的詳細資訊時,請採用下列資訊:

    1. Group size (群組大小) 中,選擇 Start with 2 instances。系統即會建立兩個 EC2 執行個體。

    2. Network (網路) 清單中選取 VPC。

    3. 選取子網路,該子網路所在的可用區域與您在先前步驟建立啟動組態時,為了指定 User Data (使用者資料) 指令碼的掛載目標 ID 而使用的可用區域相同。

    4. 進階詳細資訊區段中

      1. Load Balancing (負載平衡) 中,選擇 Receive traffic from Elastic Load Balancer(s) (從一或多個 Elastic Load Balancer 接收流量),然後選取您為本練習建立的負載平衡器。

      2. Health Check Type (運作狀態檢查類型) 中,選擇 ELB (ELB)

  8. 如需建立 Auto Scaling 群組,請依照《Amazon EC2 Auto Scaling 使用者指南》中的設定擴展規模和負載平衡的應用程式所述的指示。您亦可善用上述資料表中的資訊 (若適用)。

  9. 一旦成功建立 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,便無須再安裝。

  10. 建立範例頁面 (index.html)。

    1. 變更目錄。

      $ cd /var/www/html/efs-mount-point
    2. 建立 sampledir 的子目錄,並變更所有權。然後,請變更目錄,才能在 sampledir 子目錄中建立檔案。如果您有遵照先前的 透過單一 EC2 執行個體提供檔案 進行操作,則表示已建立 sampledir 子目錄,所以可以略過此步驟。

      $ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir $ cd sampledir
    3. 建立範例 index.html 檔案。

      $ echo "<html><h1>Hello from Amazon EFS</h1></html>" > index.html

  11. 現在,您可以測試設定。請使用負載平衡器的公有 DNS 名稱來存取 index.html 頁面。

    http://load balancer public DNS Name/efs-mount-point/sampledir/index.html

    負載平衡器會將請求傳送至其中一個執行 Apache Web 伺服器的 EC2 執行個體。接著,Web 伺服器會提供存放在 Amazon EFS 檔案系統上的檔案。