EC2 (Elastic Cloud Computing)是AWS最主要的雲端運算服務,我們可以租一台虛擬機器然後跑我們的Ghost server。
啟一台EC2的第一個步驟自然是先選一個OS,那這邊我們先停一下!!!
我想我們需要考慮幾件事情才能開始啟一台EC2,我先列出以下幾個需要先考慮到的地方,這樣在選擇spec的時候會比較有方向
- AMI: Ghost要求的作業系統
- Instance Type: 機器性能(幾顆vCPU、多少記憶體、幾個GPU等設定)
- EBS: 硬碟大小與性能(SSD或HDD、容量大小等設定)
- Security Group: 我們要讓哪些traffic可以進出(在設定VPC時可以先做)
當然,百聞不如一見,先看影片有個大致上的了解,肯定會比看文章好上一萬倍。請參考這部影片,大家一定會有一個大概的輪廓。
選擇AMI
根據Ghost的installation guide,我們必須先看Ghost的depedency來安裝相應的OS,所以並不是選自己喜歡的OS以免之後踩坑。那因為我只想讓這一台機器只用來做Ghost的application,也暫時沒有想研究不同的版本,因此先不選用container的方式去安裝,或許以後會研究哪個版本比較穩定。而且我並不是要拿ghost做local的開發,因此也不選用Local Install與Install from Source。那最後我選了一個從Ubuntu安裝的方式,畢竟.........
上面的梗圖是開玩笑的我沒有想引戰的意思QQ,但是我認為以一個blogging server而言,Ubuntu的性能已經足夠。或許未來流量變多的時候,我可以研究不同的服務跟系統搭配Ghost。
選擇Instance Type
這一個部分是在選擇你的機器需要多少的硬體資源, 那麼在這裡各位不妨先想想看這一個server會要做哪些事情。 如果配置跟我一樣是Database+Web server,那麼我們或許需要比較大的記憶體,給多一點資源讓MySQL做查詢。
當我們興高采烈地選好AMI,進入到選擇Instance Types的時候,可能會被琳瑯滿目的Instance Type震驚到不知道該選哪一種。這個時候我們可以參考AWS的文件,他會告訴我們針對哪一種服務適合使用哪一些Indtance Types。那就我們準備架起來的blog server而言,T2 Class
是比較適合的類型,價格便宜,Ghost日常的query查詢簡單,因此也不需要超多記憶體。
這個地方我選擇使用t2.medium
,我知道這不是一台效能強勁的機器,但是我想就網站的初期而言這樣子的資源應該是夠的。如果還是不夠,我們還是可以中途更改Instance Type,改成更多記憶體和vCPU的t2.large
或是t2.xlarge
。
但是如果想要中途換Instance Type,就需要先把EC2 Instance先停下來才能改,可能會有一絲絲的不方便。
選擇EBS
EBS(Elastic Block Store)其實就是EC2的硬碟服務。
我們可以選擇某個file system要用哪種硬碟來存,或是某個硬碟需要多大的容量,在EBS中都可以做選擇。EBS基本上分成SSD和HDD,其中兩種class其中又有數個種類,例如HDD中的Throughput Optimized st1
或是Cold HDD sc1
,SSD中的General Purpose gp2
, Provisioned I/O io2
。各種適合的任務可以參考文件。
但基本上General Idea就是,如果是拿來存放大型資料並且以低價格為前提,HDD較為合適。如果以查詢並且低延遲存取來看,SSD會更合適。
就以目前的情況來看,我們希望在存取網頁時愈快愈好,尤其實在沒有設置CDN(CloudFront)的情況下,因此我選擇gp2
容量16G。之所以不選擇效能更好的io2
,依然還是以價格做考量,以一個小規模網站而言,我認為gp2
是沒問題的。
如果我們還需要增加容量或是更換EBS Types,我們都可以在AWS Console裡面改,甚至不需要把EC2 Instance停下來。這樣子可以輕易做到Vertical Scaling,是很棒的事情。
選擇Security Group與EC2 Key Pair
Security Group如果在VPC的部分就已經先設定好了的話,在創建EC2的環節中,我們就可以在Configure Security Group
這邊選擇Select an existing security group
,然後選出自己之前創過的Security Group。
創建Security Group的部分,這邊就先不詳細講了,可以參照之前設定VPC的部分。基本上我們希望保留自己的Public IP藉由ssh用的port 22進入EC2,而且讓所有IP都能進入https用的port 443。
接下來是選擇EC2 Key Pair
,這是一對機器要使用的公私鑰。如果已經跟機器綁定了EC2 Key Pair
,公鑰會在EC2中,私鑰交由user自己保管。請記住這個Key Pair只會被下載一次,如果不小心不見了,只能用EC2 Console右上角的Connect
字樣來做連線。
當然也可以用打帳號密碼的方式連線,但也必須在第一次使用Key Pair進去連線時才能改ssh_config,不過這樣可能有安全風險,要考慮過後再使用這種方法。
測試
目前EC2的相關設定也已經完成,接下來就可以用ssh
連進去看看。
- 首先先把下載下來的key pair保存好
- 用
chmod 400 this_is_key_pair.pem
只讓他可被下載下來的user可讀(如果是用Windows連進EC2的話則不用做這個步驟) ssh <ec2_ip> -l<user_name> -i <key_pair_pth>
如果成功進入就算是大功告成,若無法的話,多半問題會出在Security Group或是Network ACL,可以多加檢查這個環節。
Steps
- Ghost介紹以及架構解說
- 在Route53註冊域名(Domain Name)與架設VPC(Virtual Private Cloud)
- 啟EC2
- 設定Route 53 Hosted Zone與Elastic IP與安裝Ghost
- 用Health Check + SNS建立警告系統與使用Lifecycle Manager定期創造Snapshot