在Route53註冊域名(domain name)
Route 53(以下簡稱R53)是AWS的DNS服務,其中可以自己註冊域名、建立DNS Zone Files、建立DNS Records。我們可以在R53裡面操控很多跟域名有關的設定。
這邊的價格是一個域名保留一年需要12鎂。記得點完需要用信箱確認域名的註冊,不然一個月之後域名會失效,要記得翻翻信箱。
註冊完之後需要稍等片刻,我們可以在R53的Side Bar的Pending Requests中看到自己域名在AWS中處理的狀況,如果Pending Requests裡面的域名消失的話就會在Registered Domain裡面看到。這個時候這一個域名就可以開始使用囉!
域名可以用之後,我們需要建立一個Hosted Zone。Hosted Zone是一個AWS幫忙託管DNS Records的地方,像是DNS Zone Files一樣,但是這些傳統的Zone Files需要把這些Recods送進DNS server,但在R53裡面,AWS幫你保管了這些record並且幫忙送進DNS Server,因此這個服務是很方便的。域名註冊完之後會自動建立一個預設的Hosted Zone,但也是可以自己做設定。
我們先用預設的hosted zone,待會架設完EC2和VPC之後再去做剩下的設定。
設定VPC
VPC裡面的機器們,就像是一個小型的Data Center,他可以在邏輯上跟其他VPC裡面的機器分開來,形成自己的LAN。裡面可以控制subnet、routing table、Network ACL (NACL)、Security Group等等,可以控制VPC裡面的機器連線的行為。
當然了,我們可以選擇AWS預設的VPC,直接在裡面啟一台EC2。不過目前我有其他的Project在進行,最好是要跟其他機器區分開來,並且我不想在預設的VPC裡面做NACL跟routing table的操作,以免以後用預設VPC做測試時,還要debug自己的VPC徒增麻煩。因此我決定自己設定一個VPC。
以目前的架構而言其實VPC的設定並不算太複雜,單AZ單Subnet單Security Group,因此也必須特別小心Security Group和Network ACL(NACL)的設定。
Security Group和NACL都是擁有防火牆的功能,但是NACL可以提供阻止/允許來源訪問的功能,並且是無狀態(Stateless),意即流出的traffic,不會受到流入設定的影響。但Security Group則剛好相反屬於有狀態(Stateful),代表只要是能被流入的traffic,無論outbound rule怎麼設定,都能使traffic流出機器,同時Securuty Group只能設定允許來源訪問的功能。因此兩者的搭配可以多加利用。
至於我的Security Group,我只讓自己的電腦IP能用EC2上面的port 22來ssh登入,而且只能用key pair來ssh進去,為的就是不要讓知道機器的Public IP的人隨便就進得來。另外開啟port 443給所有人做HTTPS訪問。
NACL的Inbound Rules部分,我們可以把允許自己電腦的Public IP訪問port 22,放在rule number 100。把允許所有IP訪問port 443,放在rule number 150。拒絕所有機器訪問所有的port,放在rule number 160。然後記得要在Out Bound Rules設定port 32768-65535的ephemeral port,因為NACL無狀態,而且當traffic從port 443進來機器時,會以ephemeral port的方式流出機器會到自己的電腦,因此我們要在NACL中的Outbound Rule設定以便traffics能出的來。
這樣子設定不僅限制了能訪問機器的方式,我們還能確保Ghost後面的MySQL不會在VPC外面的所有的機器訪問到。
至於怎麼樣去實作建出一個全新的VPC,我就先暫時不浪費篇幅記載怎麼去做,實作用看的總比用寫的還要好。但我會把別人製作的影片附在這邊, 講得很清楚,推薦大家去看。
Steps
- Ghost介紹以及架構解說
- 在Route53註冊域名(Domain Name)與架設VPC(Virtual Private Cloud)
- 啟EC2
- 設定Route 53 Hosted Zone與Elastic IP與安裝Ghost
- 用Health Check + SNS建立警告系統與使用Lifecycle Manager定期創造Snapshot