iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
IT管理

無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題系列 第 20

Day 20 資料寶石:RDS 架構解析

https://ithelp.ithome.com.tw/upload/images/20210924/20100951ED1oBVei3M.jpg

今天我們要來介紹的 AWS RDS 的基本架構。

RDS instance 的概念

首先,當我們建造一台 RDS instance 的時候(下圖#1),可以將它看成 EC2 instances (下圖#2),配上裡面安裝的 DB software (下圖#3),再配上一些 EPS volumes (下圖#4),來儲存資料。

而需要備份的時候,就去創造一個 EBS Snapshot 來留下備份(下圖#5)
https://ithelp.ithome.com.tw/upload/images/20210905/20100951RwHivqr8Gv.png

Primary/Standby 與同步備份

通常會把資料庫放在一個 Private Subnet,來提供一個更安全的網路空間,所以在 Availability Zone (下圖#1)內建立一個 Private Subnet (下圖#2)。

在 Private Subnet 裡面(下圖#2),放上 Primary instance (下圖#3)。而這個 Primary instance 會配上一個 EBS volume (下圖#4)。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951o9LqGEPmbq.png

再來,由於 RDS 提供了很好的 High Availability 以及 DB failover,所以我們會在另外一個 AZ (下圖#1)創造另一個 Private Subnet (下圖#2),並把 Standby instance (下圖#3)放上去,而這個 Standby instance (下圖#3)也會有一個 EBS volume (下圖#4)。

Primary instance 的 EBS volume 就會完全同步備份(下圖#5)給 Standby instance (下圖#3)的 EBS volume (下圖#4)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009517lEnoTniq5.png

利用 Read replica 分擔 Primary instance 的流量

假設 Primary instance 流量太多的時候,就可以在 Availability Zone (下圖#1)裡另外建造 Read replica (下圖#2)。

Read replica (下圖#2)也會有一個 EBS volume (下圖#3),而 Read replica 也跟 Primary instance 一樣,可以在另外一個 AZ (下圖#1)裡建造 Read replica 自己的 standby instance (下圖#5)並配有 EBS volume (下圖#6),來進行完全同步的備份(下圖#7)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009513Dq4coE3fP.png

Read replica 的 EBS volume (下圖#1)會跟 Primary instance 的 EBS volume (下圖#2)進行非同步的備份(下圖#3),所以兩者之間可能會有點小小的延遲,但由於進行的只有讀的部分,所以不會有資料寫入衝突的問題。

簡單來說,就是透過 Read replica (下圖#2)來幫 Primary instance (下圖#1)分擔了讀取(Read)的請求。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951lDyz0UmyDT.png

而 Read replica 可以不只建造一台,也可以在 AZ1 再建立另一台 Read replica (下圖#1),並且可以選擇不去使用跨 AZ 的 Read replica 的建造,就像是這個在 AZ1 單獨自己一個的 Read replica (下圖#1),並且在 AZ2 也可以建造別台獨立的 Read replica (下圖#2)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009511oDL7n1hwD.png

RDS 如何對外開放?

RDS 會提供一個 DNA name (下圖#2),使用者就可以透過一個在 Public Subnet 的 EC2 instance (下圖#1),藉由 DNS name (下圖#2)來跟我們 RDS 的 instance 溝通,而接觸點就是 Primary instance (下圖#3)。

要注意的是,流量只會導到 Primary instance (下圖#3)上,而不會導到 Standby instance (下圖#4)。

這是因為在一般的情況下,並不會使用到 Standby instance (下圖#4),只有在意外發生的時候,Standby instance 才會去接管,變成新的 Primary instance。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951MfKOPbKJnJ.png

在一般運作的狀況下,以上就是 RDS 所擁有的架構 —— 但是資料庫的資料非常重要,所以還需要有備份的功能。

備份功能—— EBS Snapshot 與 transaction log (on S3)

對 Standby EBS volumes (下圖#1),RDS 會定期的去做備份,而這個備份是以天為單位的(下圖#2),可以自己做設定。或者另外想要手動直接創造一個 EBS Snapshot (下圖#3)的話也可以。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951TrwSxHl064.png

此外,在 Primary EBS volume 這邊(下圖#1),RDS 會幫使用者進行一個以分鐘為單位的(下圖#2),也就是更精密備份,即為 transaction log (on S3)的自動備份(下圖#3)。

transaction log (on S3) 的功能非常強大(下圖#3),能夠用以幫助 Primary EBS volume (下圖#1)倒退到非常精確的時間點(下圖#2),來保障使用者的資料一致性。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951a4WYPlESgj.png

結語

下圖是本文推導出的架構圖。

RDS 其實不是一個太新的概念,RDS 就是把 EC2 跟 EBS 給組合起來,再配上一個 DB software 而已。

但 RDS 提供的 Primary/Standby 的同步備份功能、Read replica 的分擔流量功能、EBS Snapshot 與 transaction log(on S3) 的定期備份功能,仍更能幫助使用者快速的建立起一個資料庫。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951HXqBIa2on5.png

以上,就是針對 AWS RDS 的架構介紹。

What's Next?

明天我們將接著看到「資料寶石:【Lab】RDS架構 建立自己的第一台雲端資料庫(上)」!


上一篇
Day 19 資料寶石:RDS是什麼?RDS vs EC2 (+db) 方案比較
下一篇
Day 21 資料寶石:【Lab】RDS架構 建立自己的第一台雲端資料庫 (上)
系列文
無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題30

尚未有邦友留言

立即登入留言