本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用外部 Amazon RDS 資料庫將高可用性PHP應用程式部署至 Elastic Beanstalk
本教學課程將逐步引導您啟動 外部RDS的資料庫執行個體 AWS Elastic Beanstalk,並設定執行PHP應用程式的高可用性環境來連線至該執行個體。執行 Elastic Beanstalk 外的資料庫執行個體,會將該資料庫自您環境的生命週期解偶。如此一來,您即可自多個環境連接至相同的資料庫、更換資料庫,或執行藍/綠部署而不影響您的資料庫。
教學課程使用範例PHP應用程式
必要條件
開始之前,請從 下載範例應用程式來源套件 GitHub:eb-demo-php-simple-app-1.3.zip
本教學課程中的 Amazon Relational Database Service (Amazon RDS) 任務程序假設您正在預設的 Amazon Virtual Private Cloud (Amazon ) 中啟動資源VPC。所有新帳戶VPC在每個區域中都包含預設值。如果您沒有預設 VPC,程序會有所不同。如需 EC2-Classic 和自訂VPC平台的說明使用 Elastic Beanstalk 與 Amazon RDS,請參閱 。
在 Amazon 中啟動資料庫執行個體 RDS
若要將外部資料庫與在 Elastic Beanstalk 中執行的應用程式搭配使用,請先使用 Amazon 啟動資料庫執行個體RDS。當您使用 Amazon 啟動執行個體時RDS,它完全獨立於 Elastic Beanstalk 和您的 Elastic Beanstalk 環境,Elastic Beanstalk 不會終止或監控它。
使用 Amazon RDS主控台啟動多可用區域我的SQL資料庫執行個體。選擇異地同步備份部署可確保您的資料庫將會容錯遷移,並在主要資料庫執行個體停止服務時繼續運作。
在預設中啟動RDS資料庫執行個體 VPC
-
開啟RDS主控台
。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇 Create database (建立資料庫)。
-
選擇 Standard Create (標準建立)。
重要
請勿選擇 Easy Create (輕鬆建立)。如果您選擇這麼做,則無法設定啟動此RDS資料庫所需的設定。
-
在 Additional configuration (其他設定) 下方的 Initial database name (初始資料庫名稱) 中輸入
ebdb
。 -
檢閱預設設定,並根據您的特定要求來調整這些設定。請注意以下選項:
-
資料庫執行個體類別 – 選擇具有適合您工作負載之記憶體和CPU功率的執行個體大小。
-
異地同步備份部署 – 若要達到高可用性,請將此項設定為在不同的 AZ 中建立 Aurora 複本/讀取器節點。
-
主要使用者名稱和主要密碼 – 資料庫使用者名稱和密碼。記下這些設定,以供稍後使用。
-
-
檢查其餘選項的預設設定,然後選擇 Create database (建立資料庫)。
接著,修改連接至資料庫執行個體的安全群組,以允許適當連接埠的傳入流量。此安全群組與您稍後將連接至 Elastic Beanstalk 環境的相同,因此,您新增的規則將授予相同安全群組內其他資源的流量傳入許可。
修改連接至RDS執行個體之安全群組上的傳入規則
-
開啟 Amazon RDS主控台
。 -
選擇 Databases (資料庫)。
-
選擇您的資料庫執行個體名稱以檢視其詳細資料。
-
在 Connectivity (連線) 區段中,記下顯示於此頁面的 Subnets (子網路)、Security groups (安全群組) 和 Endpoint (端點)。這樣您稍後便可使用這些資訊。
-
在 Security (安全性) 下,可查看與資料庫執行個體相關聯的安全群組。開啟連結以在 Amazon EC2主控台中檢視安全群組。
-
在安全群組的詳細資訊中,選擇 Inbound (傳入)。
-
選擇編輯。
-
選擇 Add Rule (新增規則)。
-
針對 Type (類型),選擇您的應用程式所使用的資料庫引擎。
-
對於 Source (來源),輸入
sg-
檢視可用的安全群組清單。選擇與 Elastic Beanstalk 環境中使用之 Auto Scaling 群組相關聯的安全群組。這是為了讓環境中的 Amazon EC2執行個體可以存取資料庫。 -
選擇 Save (儲存)。
建立資料庫執行個體約需要 10 分鐘。同時,建立您的 Elastic Beanstalk 環境。
建立 Elastic Beanstalk 環境
使用 Elastic Beanstalk 主控台建立 Elastic Beanstalk 環境。選擇PHP平台並接受預設設定和範例程式碼。啟動環境後,您可以設定環境以連線至資料庫,然後部署從 下載的範例應用程式 GitHub。
啟動環境 (主控台)
-
使用此預先設定的連結開啟 Elastic Beanstalk 主控台: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced
-
在 Platform (平台),選取符合您應用程式所使用語言的平台和平台分支。
-
針對 Application code (應用程式程式碼),選擇 Sample application (範例應用程式)。
-
選擇 Review and launch (檢閱和啟動)。
-
檢視可用選項。選擇您要使用的可用選項,當您準備就緒時,請選擇 Creat app (建立應用程式)。
使用大約需要五分鐘時間建立環境,並且建立下列資源:
-
EC2 執行個體 – Amazon Elastic Compute Cloud (AmazonEC2) 虛擬機器,設定為在您選擇的平台上執行 Web 應用程式。
每個平台會執行特定的一套軟體、設定檔和指令碼,來支援特定的語言版本、架構、Web 容器或其組合。大多數平台會使用 Apache 或 NGINX 作為反向代理,該代理位於 Web 應用程式前面,將請求轉送給它,提供靜態資產,並產生存取和錯誤日誌。
-
執行個體安全群組 – Amazon EC2安全群組,設定為允許連接埠 80 上的傳入流量。此資源可讓來自負載平衡器的HTTP流量到達執行 Web 應用程式的EC2執行個體。在預設情況下,不允許傳輸資料從其他通訊埠傳送。
-
負載平衡器 - Elastic Load Balancing 負載平衡器,可設定將請求分配到執行您應用程式的執行個體。負載平衡器也讓您的執行個體不需直接連接到網際網路。
-
負載平衡器安全群組 – Amazon EC2安全群組,設定為允許連接埠 80 上的傳入流量。此資源可讓來自網際網路的HTTP流量達到負載平衡器。在預設情況下,不允許傳輸資料從其他通訊埠傳送。
-
Auto Scaling 群組 - Auto Scaling 群組,設為在執行個體終止或無法使用時,取代該執行個體。
-
Amazon S3 儲存貯體 - 儲存位置,用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。
-
Amazon CloudWatch 警示 – 監控您環境中執行個體負載的兩個 CloudWatch 警示,如果負載過高或過低,則會觸發這兩個警示。當警示觸發時,您的 Auto Scaling 群組會擴展或縮減以進行回應。
-
AWS CloudFormation 堆疊 – Elastic Beanstalk 使用 AWS CloudFormation 啟動環境中的資源並傳播組態變更。資源定義於範本中,您可在 AWS CloudFormation 主控台
中檢視此範本。 -
網域名稱 – 以 形式路由至 Web 應用程式的網域名稱
subdomain
.region
.elasticbeanstalk.com。
這些資源全都由 Elastic Beanstalk 管理。當您終止環境時,Elastic Beanstalk 會終止其中的所有資源。您啟動的RDS資料庫執行個體不在您的環境中,因此您有責任管理其生命週期。
注意
Elastic Beanstalk 建立的 Amazon S3 儲存貯體會在環境間共享,且不會在環境終止時刪除。如需詳細資訊,請參閱將 Elastic Beanstalk 與 Amazon S3 搭配使用。
設定安全群組、環境屬性和擴展
將資料庫執行個體的安全群組新增至執行環境。此程序會透過其他連接的安全群組,使 Elastic Beanstalk 重新佈建您環境中的所有執行個體。
欲將安全群組新增至您的環境
-
執行以下任意一項:
-
使用 Elastic Beanstalk 主控台新增安全群組
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇 Configuration (組態)。
-
在 Instances (執行個體) 組態類別中,選擇 Edit (編輯)。
-
在EC2安全群組 下,除了 Elastic Beanstalk 建立的執行個體安全群組之外,選擇要連接至執行個體的安全群組。
-
若要儲存變更,請選擇頁面底部的儲存變更。
-
閱讀警告的內容,然後選擇 Confirm (確認)。
-
若要使用組態檔案新增安全群組,請使用
securitygroup-addexisting.config
範例檔案。
-
接著,使用環境屬性,將連線資訊傳送至環境。此範例應用程式使用一組預設屬性,這些屬性符合您於環境佈建資料庫時 Elastic Beanstalk 所設定的屬性。
設定 Amazon RDS 資料庫執行個體的環境屬性
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
-
在 Environment Properties (環境屬性) 區段,定義應用程式建立連線字串所讀取的變數。若要與具有整合式RDS資料庫執行個體的環境相容,請使用下列名稱和值。您可以在RDS主控台
中找到除密碼以外的所有值。 屬性名稱 描述 屬性值 RDS_HOSTNAME
資料庫執行個體的主機名稱。
在 Amazon RDS主控台的連線與安全索引標籤上:端點 。
RDS_PORT
資料庫執行個體接受連線的連接埠。預設值在不同資料庫引擎中有所差異。
在 Amazon RDS主控台的連線與安全索引標籤上:連接埠 。
RDS_DB_NAME
資料庫名稱,
ebdb
。在 Amazon RDS主控台的組態索引標籤上:資料庫名稱 。
RDS_USERNAME
您為資料庫設定的使用者名稱。
在 Amazon RDS主控台的組態索引標籤上:主要使用者名稱 。
RDS_PASSWORD
您為資料庫設定的密碼。
不適用於 Amazon RDS主控台的參考。
-
若要儲存變更,請選擇頁面底部的儲存變更。
最後,請增加執行個體計數下限,藉此設定您的環境 Auto Scaling 群組。隨時至少執行兩個執行個體,避免您環境中的 Web 伺服器出現單點故障,且無須停止網站服務即可部署變更。
若要設定您環境的 Auto Scaling 群組,以維持高可用性
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇 Configuration (組態)。
-
在 Capacity (容量) 組態類別中,選擇 Edit (編輯)。
-
在 Auto Scaling 群組區段,將最小執行個體設定為
2
。 -
若要儲存變更,請選擇頁面底部的儲存變更。
部署範例應用程式
現在,您的環境已準備好執行範例應用程式並連線至 Amazon RDS。將範例應用程式部署至您的環境。
注意
如果您尚未下載來源套件 GitHub,請從 下載:eb-demo-php-simple-app-1.3.zip
若要部署原始碼套件
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
在環境概觀頁面上,選擇 Upload and deploy (上傳和部署)。
-
使用畫面顯示對話方塊來上傳原始碼套件。
-
選擇 Deploy (部署)。
-
部署完成時,您可以選擇網站URL,在新索引標籤中開啟您的網站。
網站會收集使用者註解,並使用 MySQL 資料庫來存放資料。若要新增評論,請選擇 Share Your Thought (分享您的想法)、輸入評論,然後選擇 Submit Your Thought (提交您的想法)。本 Web 應用程式會將評論寫入資料庫,環境中的任何執行個體均可讀取,而且執行個體停止服務時也不會遺失。
清除
當您完成使用 Elastic Beanstalk 時,即可終止您的環境。Elastic Beanstalk 會終止與環境相關聯的所有 AWS 資源,例如 Amazon EC2執行個體 、資料庫執行個體 、負載平衡器 、安全群組和警示 。
從主控台終止您的 Elastic Beanstalk 環境
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
選擇 Actions (動作),然後選擇 Terminate Environment (終止環境)。
-
使用畫面顯示對話方塊來確認環境終止。
您可以使用 Elastic Beanstalk,隨時輕鬆地為您的應用程式建立新環境。
此外,您可終止於 Elastic Beanstalk 環境外建立的資料庫資源。當您終止 Amazon RDS 資料庫執行個體時,您可以拍攝快照,稍後再將資料還原至另一個執行個體。
終止RDS資料庫執行個體
-
開啟 Amazon RDS主控台
。 -
選擇 Databases (資料庫)。
-
選擇資料庫執行個體。
-
選擇動作,然後選擇刪除。
-
選擇是否建立快照,然後選擇 Delete (刪除)。
後續步驟
隨著您繼續開發應用程式,您可能會希望無須手動建立 .zip 檔案並將其上傳至 Elastic Beanstalk 主控台,即可管理環境和部署應用程式。Elastic Beanstalk 命令列介面 (EB CLI) 提供 easy-to-use從命令列建立、設定和部署應用程式至 Elastic Beanstalk 環境的命令。
範例應用程式使用組態檔案來設定PHP設定,並在資料庫中建立資料表,如果它不存在。您亦可於環境建立期間,使用組態檔案進行執行個體的安全群組設定,以避免耗時的組態更新。如需更多資訊,請參閱使用組態檔案 (.ebextensions) 來進行進階的環境自訂。
進行開發和測試時,建議您使用 Elastic Beanstalk 的功能,將受管的資料庫執行個體直接加入您的環境。如需於環境中設定資料庫的說明,請參閱將資料庫新增至您的 Elastic Beanstalk 環境。
若您需要高效能資料庫,請考慮使用 Amazon Aurora
最後,如果您計劃在生產環境中使用應用程式,則需要為環境設定自訂網域名稱,並啟用 HTTPS 以進行安全連線。