使用 MySQL Database Service 在 Oracle Linux 上部署 Moodle LMS

Moodle 是免費的開放原始碼學習管理系統 (LMS),以 PHP 撰寫,依據 GNU General Public License 進行發行。Moodle 專精於教學法、教育遠距、教室及其他學校、大學、工作場所等領域的電子學習計畫。

有了可客製化的管理功能,您就可以使用 Moodle 打造線上課程,讓教育人員和訓練者達到學習目標。Moodle 可讓您使用社群來源外掛程式,擴展及量身打造的學習環境。

架構

您可以將 Moodle 部署在單一節點組態中,或部署為多節點的高可用性組態的一部分。此參照架構包含與這兩個組態相容的 Terraform 自動化功能。

如需生產級高可用性架構,請參閱下列圖表,以說明多節點案例。

moodle-mds-multi.png 的描述如下
moodle-mds-multi.png 圖解的描述

moodle-mds-multi-oracle.zip

上圖說明 OCI 上簡化的高可用性應用程式環境,並將焦點放在負載平衡器背後的兩個虛擬機器執行處理。這些執行處理存在於可用性網域內的兩個不同容錯域中。此架構利用 OCI 檔案儲存服務;Moodle 安裝在共用網路檔案系統 (NFS) 中。此檔案系統存在於包含網路安全群組 (NSG) 的專用子網路中,可允許從所有執行處理存取掛載目標的專用子網路中。

下圖說明簡單的單一節點架構。它是由輕量型部署所組成,適合用於學習目的或作為概念證明。

moodle-mds-single.png 的描述如下
moodle-mds-single.png 圖解說明

moodle-mds-single-oracle.zip

多節點架構包含下列 OCI 元件:
  • 租用戶

    註冊 Oracle Cloud Infrastructure 時,租用戶是 Oracle 在 Oracle Cloud 內設定的安全獨立的分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。

  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則會指定誰可存取哪些資源及如何進行。群組和區間層次會授予存取權,這表示您可以撰寫原則,讓群組在特定區間或租用的特定存取類型。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則,指定誰可以存取資源以及可執行的動作。

  • 虛擬雲網路 (VCN)

    OCI 中的第一個步驟之一,就是為雲端資源設定虛擬雲端網路 (VCN)。VCN 是您在 OCI 區域中設定的軟體定義網路。VCN 可以區段至子網路,成為區域或可用性網域的特定子網路。區域特定與可用性網域特定子網路都可以在同一個 VCN 中共存。子網路可以是公用或專用子網路。

  • 可用性網域

    可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與提供容錯能力的其他可用性網域中的資源隔離。可用性網域並不共用基礎設施,例如電源或冷卻系統,或內部可用性網域網路。因此,一個可用性網域發生故障並不會影響該區域中的其他可用性網域。

  • 負載平衡器

    Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動化流量分配。

  • 運算執行處理

    Oracle Cloud Infrastructure Compute 可讓您佈建及管理運算主機。您可以使用符合資源需求的資源配置啟動運算執行處理 (CPU、記憶體、網路頻寬以及儲存)。建立運算執行處理之後,您就可以安全地存取該執行處理、重新啟動磁碟區、連附及取消連附磁碟區,並在不需要時將其終止。

  • 網際網路閘道

    網際網路閘道允許 VCN 中的公用子網路和公用網際網路之間的流量。

  • 動態路由閘道 (DRG)

    DRG 是一個虛擬路由器,為企業內部部署網路與 VCN 之間的專用網路流量提供路徑,也可以用來在相同區域或跨區域遞送 VCN 之間的流量。

  • 網路安全群組 (NSG)

    NSG 可作為您雲端資源的虛擬防火牆。有了 Oracle Cloud Infrastructure 的零信任安全模型,所有流量都會被拒絕,而且您可以控制 VCN 內的網路流量。NSG 包含一組傳入和傳出安全規則,只套用至單一 VCN 中一組指定的 VNIC。

  • 檔案儲存

    Oracle Cloud Infrastructure File Storage 服務提供持久、可擴展、安全、企業級的網路檔案系統。您可以從 VCN 中的任何裸機、虛擬機器或容器執行處理連線至檔案儲存服務檔案系統。您也可以使用 Oracle Cloud Infrastructure FastConnect 和 IPSec VPN 從 VCN 外部存取檔案系統。

建議

使用 MySQL Database Service 在 Oracle Linux 上部署 Moodle LMS 時,請使用下列建議作為起始點。您的需求可能與此處所述的架構不同。
  • VCN

    當您建立 VCN 時,請確定每個子網路中雲端資源需要多少 IP 位址。使用「無類別網域間路由 (CIDR)」表示法,來指定子網路遮罩以及足夠用於所需 IP 位址的網路位址範圍。請使用標準專用 IP 位址空間內的位址範圍。

    選取一個未與您的內部部署網路或任何其他網路重疊的地址範圍,以便視需要在 VCN 與您的內部部署網路之間設定連線。

    設計子網路時,請考慮您的流量和安全需求。將同一個層或角色內的所有運算執行處理連附至同一個子網路,可作為安全界限。

  • 安全

    使用原則限制能夠存取您公司之 OCI 資源的人員及其存取方式。使用 Vault 來取得金鑰、憑證及加密密碼的額外保護。

    網路服務提供兩種虛擬防火牆功能,使用安全規則來控制封包層次流量:安全清單和網路安全群組 (NSG)。NSG 是一組包含傳入和傳出安全規則,僅適用於單一 VCN 中所選的一組 VNIC。例如,您可以選擇在 VCN 中多層應用程式的 Web 層中,作為 Web 伺服器的所有運算執行處理。

    NSG 安全性規則功能與安全性清單規則相同。不過,針對 NSG 安全規則的來源或目的地,您可以指定 NSG 而非 CIDR 區塊。因此,您可以輕鬆撰寫安全規則,以控制相同 VCN 中兩個 NSG 或單一 NSG 內的流量之間的流量。建立資料庫系統時,您可以指定一或多個 NSG。您也可以更新現有資料庫系統,以使用一或多個 NSG。

  • 運算

    藉由適當的 OCPU 和記憶體組合挑選資源配置,以及根據每個執行處理的需求佈建本機 NVMe 和 (或) 區塊儲存。請考慮使用可用的彈性資源配置,對結合 OCPU 和記憶體提供更大的彈性。

  • 資料庫

    根據計畫的工作負載選擇您的 Oracle MySQL Database Service 資源配置。針對三個備援節點啟用 MySQL 高可用性。

注意事項

使用 MySQL Database Service 在 Oracle Linux 上部署 Moodle LMS 時,請考慮下列因素:

  • 應用程式可用性與擴展性

    在此範例中,在高可用性架構中,我們在同一個可用性網域內的不同容錯域中顯示兩個執行處理。只要選擇將執行處理置於不同的可用性網域 (在可用的區域中),甚至容錯更高。另一個方式是,使用執行處理集區和自動調整功能,代表更快速、更符合需求且效能需求的動態適應。執行處理集區可讓您根據相同區域內的相同組態佈建及建立多個運算執行處理。自動調整可讓您根據效能度量 (例如 CPU 使用率) 自動調整執行處理集區中的運算執行處理數目。自動調整可協助您針對高需求期間的使用者提供一致的效能,並協助您在低需求期間內降低成本。

  • 資料庫可用性和擴展性

    顯示在高可用性架構中的 MySQL Database 系統會使用內建的 MySQL 高可用性選項,建立三個執行處理,並將其置於不同的容錯域。

  • 資料庫備份

    MySQL Database Service 支援兩種類型的備份:資料庫系統中所有資料的完整備份,以及自上次完整備份後新增或變更資料的增量備份。備份會以下列方式執行:手動:主控台中的動作或透過 API 發出的要求會起始備份。手動備份可以保留至少 1 天,最多可保留 365 天。自動:使用者選擇時自動執行的排定備份,不會發生任何必要互動。自動備份會保留在 1 到 35 天之間。預設保留值為 7 天。定義之後,您就無法編輯自動備份的保留期間

  • 運算備份

    Oracle Cloud Infrastructure Block Volumes 服務可讓您即時備份區塊磁碟區上的資料。接著,您可以將這些備份立即或稍後回復到新的磁碟區。您也可以使用服務來對開機磁碟區進行時間點、持續當機的備份,不需中斷或停機。開機磁碟區備份功能與區塊磁碟區備份功能相同。

  • 安全原則

    使用原則限制能夠存取您公司所擁有的 OCI 資源和方法的人員。

  • 網路安全性

    網路服務提供兩種虛擬防火牆功能,使用安全規則來控制封包層次流量:安全清單和網路安全群組 (NSG)。NSG 是一組包含傳入和傳出安全規則,僅適用於單一 VCN 中所選的一組 VNIC。例如,您可以選擇在 VCN 中某個多層應用程式的 Web 層中作為 Web 伺服器的所有運算執行處理。NSG 安全性規則功能與安全性清單規則相同。不過,針對 NSG 安全規則的來源或目的地,您可以指定 NSG 而非 CIDR 區塊。因此,您可以輕鬆撰寫安全規則,以控制相同 VCN 中兩個 NSG 或單一 NSG 內的流量之間的流量。建立資料庫系統時,您可以指定一或多個 NSG。您也可以更新現有資料庫系統,以使用一或多個 NSG。在這些範例中,執行處理會顯示為公用子網路中的現有執行處理。請考慮將它們放置在專用子網路中作為額外安全性。在此情況下,存取執行處理需要防禦主機。

  • 檔案儲存

    在此範例中,我們使用 OCI 檔案儲存體服務。或者,多重節點架構可以在每個 OCI 運算執行處理層次設定個別區塊儲存體。在此情況下,需要檔案同步處理程序 (例如 rsync)。

部署

此參照架構的 Terraform 程式碼可作為 Oracle Cloud Infrastructure Resource Manager 的範例堆疊使用。您也可以從 GitHub 下載原始碼,然後自訂該程式碼以符合您的特定需求。

  • 使用 Oracle Cloud Infrastructure Resource Manager 中的範例堆疊進行部署:
    1. 按一下 部署至 Oracle Cloud

      如果您尚未登入,請輸入租用戶和使用者證明資料。

    2. 選取要部署堆疊的區域。
    3. 遵循螢幕上的提示與指示來建立堆疊。
    4. 建立堆疊之後,按一下 Terraform 動作,然後選取計畫
    5. 等待工作完成,然後複查計畫。

      若要進行變更,請返回「堆疊詳細資訊 (State Details)」頁面,按一下編輯堆疊 (Edit Stack) ,然後進行必要的變更。然後再執行計畫動作。

    6. 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取套用
  • 使用 GitHub 中的 Terraform 程式碼部署:
    1. 前往 GitHub
    2. 複製或下載儲存庫至本機電腦。
    3. 依照 README 文件中的指示進行。

致謝

  • 作者:L Lukasz Feldman
  • 提供者:Nuno Gonçalves