設定Route 53 Hosted Zone與Elastic IP
Route 53,是AWS的DNS服務,具有高可用性跟高擴展性。
DNS主要負責將域名轉換成IP位置,這個過程通常被叫做名稱解析(Name Resolution)。大家常用的比喻是查電話簿,但我想這個年頭應該是沒人看過電話簿長甚麼樣子了,也包括我QQ,一時之間不知道怎麼寫下去...
估狗一下之後,電話簿(黃頁)的功能大概就是用某種方式先找到商家名稱,再找出相對應的電話號碼。DNS就是用類似的方式來查詢跟著域名綁在一起的IP。像這樣子給DNS的查詢方式統稱為DNS Query。
當我們想拜訪wugurdriller.com
時,首先你的瀏覽器會去快取尋找有沒有跟這個網址對應的IP, 如果有的話將不會對DNS伺服器做Query查詢,會直接往IP位置發送http/https requests。
DNS Query其實有分兩種,但是會在同一個流程中用到這兩種,分為Recursive Query和Iterative Query。Recursive Query就如同程式中的While
,直到找到目標IP或是出錯之前都不回傳資料,Iterative Query則像是程式中的for
,會照著查詢規則一個個拜訪不同level的DNS Servers。
在Route 53中,會涉及到設定不同的DNS Records與Routing Policies。
DNS Records是告訴你的電腦跟這個域名有關的資訊,例如Domain或是Subdomain對應的IP,或是管理員的email。DNS Records非常多,但是在Route 53中常用的DNS Records如下:
- NS Records(Name Server Records):提供管理你的Domain的伺服器的名稱
- SOA Records(Start of Authority):提供跟這個Domain有關的基礎訊息,例如Name Server與Zone Transfer的有關訊息,詳細解說請看這邊
- A Records:負責指向IPv4位置
- AAAA Records:負責指向IPv6位置
- PTR Records:負責從IP位置指向域名
- CNAME:負責你設定的域名別名指向註冊的域名
- Alias Name:這是AWS Route 53專屬的DNS Record,他會將域名指向AWS中的資源,例如說ELB(Elastic Load Balancer)
Routing Policy是決定將一個域名轉換成IP的方式。如果web server只有一台,我想怎麼轉IP都是轉去那一台,但如果我有好幾台機器的話,我就要決定以哪一種標準去做轉換,例如說我可以靠用戶所在的國家為標準,或者是以連線延遲少為標準去轉換。以下是比較常見的Routing Policy。
- Simple Routing Policy:可直接將Domain Name指向IP,如果輸入多個IP地址,將會隨機選一個作為轉換之後的IP
- Weighted Routing Policy:分配流量的時候會以權重來做分配IP的參考
- Latency-Based Routing Policy:分配流量的時候會以最低的延遲來回傳IP
- Failover Routing Policy:如果我們有一台Primary Web Server的Health Check失敗時,將會把流量導向Secondary Web Server,用在active/passive setup時
- Geolocation Routing Policy:分配流量的時候會以用戶所在國家來做分配IP的參考
- Geoproximity Routing Policy:分配流量的時候會以用戶所在區域來做分配IP的參考,此區域可以自己定義
- Multivalue Answer Routing Policy:他像是Simple Routing Policy,但是可以讓你掛一個Health Check在上面,讓你知道有哪些機器還活著
另外,Elstic IP是AWS的IP分配服務,他可以讓你租下一個Public IP,然後把這個IP放到不同的資源裡面,例如EC2或是ELB。由於EC2的Public IP會在你的機器重啟時,重新分配你一個,這樣可能就會讓你重新設定一次DNS Record跟Routing Policy,又尤其是Records的TTL還沒到,舊的Records就會一直存在在用戶的電腦,如果改了Public IP的話,這些用戶可能很快就沒有辦法上你的網站了。
但是如果我們把Elastic IP分給EC2的話,無論怎麼重啟Instance,機器的IP還會是同一個Elastic IP。這樣就可以不需要為了機器重啟而重新設定DNS Records。
那麼因為以自己現行的架構,我的Web Server只有一台,那當然是建立一個A Record,選擇Simple Routing Policy然後填上給EC2用的Elastic IP,直接將域名轉移到單一的Web Server。
那這樣Route 53的相關設定就大功告成了~
安裝Ghost
這邊就是無腦的照著文件安裝下去,然後記得申請一個SSL金鑰。不過這邊是使用Let's Encrypt中的acme.sh,整個過程都很自動化,不需要太多下指令的步驟就可以完成。
如果都安裝完的話,基本上就已經可以開始Blogging囉!
Steps
- Ghost介紹以及架構解說
- 在Route53註冊域名(Domain Name)與架設VPC(Virtual Private Cloud)
- 啟EC2
- 設定Route 53 Hosted Zone與Elastic IP與安裝Ghost
- 用Health Check + SNS建立警告系統與使用Lifecycle Manager定期創造Snapshot