Amazon Relational Database Service (Amazon RDS) 筆記
目前我們已經将兩台 Web 伺服器放在兩個不同的可用區,并在 Web 伺服器前放置一個應用負載均衡器 ALB,接着我們把後端的資料庫架設起來,如圖 1 所示,今天要介紹的是 Amazon 的關系資料庫 Amazon Relational Database Service 簡稱 Amazon RDS 。可以注意到 S3 是屬于全局的,并沒有包含在 VPC 中,而 Amazon Elastic Block Store (EBS) 則是與 EC2 執行個體連接配接在一起,雖然它們都是從 EBS 這個服務中切割出來的。
圖 1 、具有 RDS 的應用程式架構
隻要撰寫應用程式,就免不了會有資料儲存的需求,是以一定會需要利用資料庫來存取資料,而建置資料庫的方法可以是安裝在自己的伺服器上或是安裝在雲端的 EC2 執行個體上,可以從圖 2 看出這兩者之間的差别,管理者要由實體的電源、網絡線、機架、伺服器主機,軟體的作業系統安裝、安全更新、資料庫安裝、安全更新、備份等等工作都要負責,雖然将資料庫放在 EC2 執行個體中就可以不用擔心實體的維護,但仍然需要管理軟體的維護,導緻資料庫從業人員沒辦法專心在本業上,是以 AWS 推出 RDS 讓資料庫管理人員可以更專心在本業上。
圖 2 、傳統資料庫管理與 RDS 全面托管的差别
圖 3 描述了 RDS 資料庫的組成,當使用者在設定 RDS 時要注意 RDS 的硬體配置如 CPU 、記憶體以及硬碟型态跟通路速度,可以發現其實跟 EC2 的設定很像,隻是 RDS 隻安裝了資料庫,是以需要選擇适合的資料庫。
圖 3 、 RDS 資料庫
安裝 RDS
接下來我們要安裝 RDS ,要事先考慮好安裝環境需求,可參考圖 1 :
- 安裝在私有網絡
- 要有備援機制 ( Slave ),與主資料庫要在不同可用區
- 要自動備份 (存到 S3 )
建立安全組
記得先前的網絡設定,依照先前的設定來設定 DB Subnet Group
- 一個 VPC (172.16.0.0/16)
- 兩個公有子網 (172.16.0.0/26,172.16.0.64/26),隻允許 port 80 聯機的安全群組 ithome_web_SG
- 兩個私有子網 (172.16.1.0/24,172.16.2.0/24),隻允許安全群組 ithome_web_SG 傳過來的聯機
因為 RDS 也需要有安全群來確定它的安全,先前有提過安全組是有狀态的,簡單來說我們可以将安全組的來源,設定為另一個安全組,就如上面第三點的說明,設定 RDS 的安全組隻允許來源是來自 WEB 伺服器的聯機。
進入 AWS 管理控制台,登入後按下服務選單,選擇 VPC 服務,進入 VPC 控制台,按下左邊導覽頁的Security Groups後, 再按下右手邊的 Create security group,接下來設定組态内容
圖 4 、 Security Group 安全組組态畫面
Security group name : RDS Security Group
Description : DB Security Group
VPC : vpc-0bb7004b67556d0da
Inbound rules
Type : MYSQL/Aurora
Source : sg-08d4a4fdb2bb24bac (ithome_web_SG)
Create DB Subnet Group
首先進入 AWS 管理控制台,登入後按下服務選單,選擇 RDS 服務,進入 RDS 控制台,注意 1. 是否是在新加坡地區(必須要跟先前規劃的 VPC 所在區域相同), 2. 按下左邊導覽頁的Subnet groups後, 3. 再按下右手邊的 Create DB Subnet Group,接下來設定組态内容
圖 5 、 DB Subnet Group 組态畫面
記得先前的網絡設定,依照先前的設定來設定 DB Subnet Group
- 一個VPC(172.16.0.0/16)
- 兩個公有子網(172.16.0.0/26,172.16.0.64/26),隻允許port 80聯機的安全群組SGPublic80
- 兩個私有子網(172.16.1.0/24,172.16.2.0/24),隻允許安全群組SGPublic80傳過來的聯機
Name : ithomeDBsubnetGroup
Description : ithome demo RDS subnetGroup
VPC : vpc-0bb7004b67556d0da | ithomeVPC
Add subnets
Availability Zones
ap-southeast-1a
ap-southeast-1b
Subnets
subnet-0b047b309432d952c (172.16.2.0/24)
subnet-0c60019adc4bec5f6 (172.16.1.0/24)
建立 Amazon RDS DB 執行個體
按下左邊導覽頁的Databases後, 再按下右手邊的 Create database,接下來設定組态内容,設定非常多,底下寫的原則是是要修改的,請務必要注意填寫
圖 6 、 RDS database 組态畫面
Choose a database creation method : _Standard Create _
Engine options : MySQL
Version : MySQL 8.0.17
Templates : Production
Settings
DB instance identifier: ithomeDBId #注意這個不是資料庫名稱,隻是資料庫實體識别,跟主機名類似
Master username: ithomeDbuser #資料庫管理者名稱
Master password: ithome-password
Confirm password: ithome-password
DB instance size
Burstable classes (includes t classes)
db.t2.micro
Storage
Storage type: General Purpose (SSD)
Allocated storage: 100
Availability & durability
Multi-AZ deployment : Create a standby instance (recommended for production usage) #這就是會建立 Slave DB的選項
Connectivity
Virtual private cloud (VPC) : vpc-0bb7004b67556d0da | ithomeVPC
按下 Additional connectivity configuration
Subnet group : ithomeDBsubnetGroup
Existing VPC security groups : RDS Security Group
展開 Additional configuration
Initial database name: ithomeDB
Enable automatic backups : 預設有選 #這就是備份到S3的設定,如果打開,每七天會自動備份一次
圖 7 、 RDS 自動備份集态畫面
建立資料庫需要幾分鐘時間,先回到 RDS控制台,選擇左邊選單中的 Databases ,按下剛剛新增的資料庫執行個體 ithomedbid ,檢視内容,在 Connectivity & security 頁簽中,找到 Endpoint 這個字段 ithomedbid.clbfxibs3qbv.ap-southeast-1.rds.amazonaws.com ,這個字段等同于資料庫聯機時的主機位址
圖 8、 确認 RDS 組态