星期四, 二月 12, 2009

Amazon EC2 使用操作筆記 (使用 Elasticfox)

Amazon Elastic Compute Cloud (Amazon EC2) 是虛擬主機的服務, 主要是可以隨時加機器、硬碟等, 可以非常快速的擴充.

不過也有些缺點, 就是在上面的資料是不會被儲存的, 若是機器當掉、強制關機等等, 資料就會消失. IP 不固定等問題.

Amazon 針對這些問題也都有解法:

  • 資料儲存: 用 Amazon Elastic Block Store 解決此問題(而且可以動態新增硬碟並掛載上去), 並可隨時為此硬碟做 Snapshot.
  • IP 不固定: 用 Elastic IP Addresses 解決此問題, 可以先把 IP 先租起來放. 

這幾天照文件都玩過一次, 寫寫筆紀做紀錄.

這篇先紀錄完整使用 Firefox Extension(Elasticfox) 的紀錄, 如果只是想要試試看, 可以考慮用 Amazon EC2 本身提供的 Console 介面做簡單的入門練習(這個下一篇再紀錄).

如果沒有 Amazon 帳號, 由此申請一個: Amazon Web Services

事前研究

下述會使用到的網頁:

強列建議要安裝此 Firefox Extension, 有不少功能靠此外掛會簡單很多.

這兩篇也是筆記, 往下讀前建議先把這兩篇看一看, 比較有個概念.

下述內容主要是依照 Elasticfox Getting Started Guide 此篇操作, 另外做紀錄.

安裝、開啟 Elasticfox

  1. 於此 Elasticfox Firefox Extension for Amazon EC2 安裝 Firefox extension.
  2. 開啟 Firefox
  3. Tools → 執行 Elasticfox
  4. 下面內容都是開啟 Elasticfox 後的操作紀錄.

設定 Elasticfox

  1. Elasticfox 開啟後會出現 Manage EC2 Credentials, 要輸入 "Account Name", "AWS Access Key", "AWS Secret Access Key"
  2. 於 Elasticfox 最上方的 Crednetials 右邊選取剛剛設定的 Account Name, 即登入完成.
    • 註: 若有要製作自己的 AMI Image(若不知道這是甚麼, 需要時再來申請即可), X.509 Certificate 也要產生儲存.(cert-key.pem, pk-key.pem)

建立新的 Key Pairs (於 EC2 虛擬機器 登入用)

  1. 切換到 "Key Pairs" 的 Tab
  2. 點選 綠色的鑰匙(Create a new keypair)
  3. Please provide a new keypair name (隨意輸入一個名字即可)
  4. 就會產生 id-keypair-name.pem, 並跳出下載視窗, 將此下載儲存. (ssh login 需要) (請儲存在 "~/ec2-keys/id_YOUR_NAME")
  5. chmod 600 ~/ec2-keys/id_YOUR_NAME # 要登入前, 它會做安全檢查, 所以需要設 600

Security Group (此階段不設定可跳過)

Amazon EC2 有提供 Secuirty Group 的功能, 作用是設定防火牆的機制, 相關文件可見下述:

每一個 User 都能設定每個獨立的 Security Group, 而 Security Group 最多可以設定 100 組.

設定方法:

  1. 開啟 Elasticfox
  2. 切換到 "Security Group" 的 Tab
  3. 先在 Your Group 選擇要設定的帳號 (或者可以新增帳號、名稱)
  4. 再於 Group Permissions => 點選 Grant Permission (綠色打勾的按紐)
  5. 就可以設定要 開放/關閉 哪些 TCP/UDP port 或 網段 等.
    ex: 開放 HTTP 80
    1. 於 Protocol Details → 選 HTTP
    2. Protocol:  → TCP/IP
    3. Port: →  80
    4. Host: →  0.0.0.0/0
    5. 按 Add 即可.
    6. 預設記得 22 一定要開 (不然沒辦法 ssh 進去)

選擇 AMI(Amazon Machine Images) 檔

由網頁選擇想要的 AMI 檔(作業系統 Image)

從網頁挑選, 有下面三種方式可以找:

由上面挑選, 找到 Debian 5.0 Lenny (testing) Base Install: A clean, base install of Debian 5.0 Lenny (testing), built by Eric Hammond as part of the Alestic.com series [update 2008-12-22] (我是挑目前最新且最精簡版的 Debian)

於 Elasticfox 找
  1. 切換到 "AMIs and Instances"
  2. 於 Machine Images (AMI) 輸入 debian, 就會把 debian 相關的 AMI 檔都列出來.
  3. 找到 alestic/debian-5.0-lenny-base-20081222.manifest.xml 點選.
  4. 按上面的 綠色Power鍵(Launch instance(s)) 或 直接按右鍵(Launch instance(s) of this AMI)
  5. 註: 窗最下面有 User Data 的欄位, 於這邊寫的資料, 機器開完後可以使用 curl http://169.254.169.254/1.0/user-data 取得, 可以當外部參數代入等.
  6. 選 Launch 即可.
  7. 於 Your Instances 區塊, 就可以看到新 run 的機器(Status 是 running 才算完成)

連線方法(連線到剛建立的虛擬主機)

找 DNS Name
  • 對那台機器按滑鼠右鍵, 選最下面的 Connect to Public DNS Name. (會自動抓取 ~/ec2-keys/id_YOUR_NAME 的 key)
  • 按滑鼠右鍵, 選 View Details, 找到 Public DNS Name, 後面那段就是 Domain name, ex: ec2-11-111-111-11.compute-1.amazonaws.com
連線
  • 直接連線: ssh root@ec2-11-111-111-11.compute-1.amazonaws.com -i ~/ec2-keys/id_YOUR_NAME # 或 ~/ec2-keys/YOUR_NAME.pem

進入機器後就是 root, 剩下要怎麼做都行囉~ :)

強迫關機 / 重新開機

  1. 切換到 "AMIs and Instances"
  2. 於 Your Instances 區塊, 就可以看到新 run 的機器
  3. 點選要 關機 / 重新開機 的機器, 直接選上面的 Reboot Selected Instances 或 Terminate Selected Instances 即可.
  4. 於機器 login 完成後, halt 也可以直接關機.

建立屬於自己的 AMI Image

文件的方法 建立 AMI Image

建立屬於自己的 AMI Image 的三步驟 於 文件的方法: (註: 我跑到 Bundle into an AMI, 這步驟, Bundle into an AMI 不能點選, 所以放棄此方法,下述只是做個紀錄)(註2: 據說 Bundle into an AMI 是在 Windows 環境的才能跑, Linux 此選項不會啟用)

  1. 切換到 "AMIs and Instances"
  2. 找到 Your Instances 點選 Refresh (最左邊藍色的按紐)
  3. 對想要做的機器按滑鼠右鍵, 選 Bundle into an AMI.
  4. 輸入 S3 Bucket name(全部小寫) 和 Image name.
  5. 按 Ok 即可.
  6. 再去 Register the Image 完成後, 就可以於 Bundle Tasks 看到.
於線上機器直接建立 AMI Image

於線上機器直接建立屬於自己的 AMI Image: (cert-KEY.pem, pk-KEY.pem 由 X.509 憑證產生取得)

  1. scp -i ~/ec2-keys/id_YOUR_NAME cert-KEY.pem pk-KEY.pem root@ec2-11-111-111-11.compute-1.amazonaws.com:/mnt
  2. 產生 Image: (Account Number 是登入 ec2 後, 頁面右上角看到的字串(Sign Out 下方))
  3. ec2-bundle-vol -d /mnt -c <your aws certificate file> -k <your aws private key file> -u <your aws account number> -r i386 -p <your image name>
    • ex: ec2-bundle-vol -d /mnt/ -c /mnt/cert-KEY.pem -k /mnt/pk-KEY.pem -u ACCOUNT_NUMBER -r i386 -p YOUR_AMI_IMAGE_NAME
    • 註: 64 bits 的話, 要把 i386 換成 x86_64
  4. ec2-upload-bundle -b YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME -m /mnt/YOUR_AMI_IMAGE_NAME.manifest.xml -a ACCESS_KEY_ID -s SECRET_ACCESS_KEY
    • # ACCESS_KEY_ID, SECRTE_ACCRESS_KEY => Amazon S3 key, 就會往 Amazon S3 送, 然後會設定為 Pirvate.
  5. 若有安裝 s3cmd, 就可以看到上傳上去的 Image Bucket 和 所有上傳檔案.
    • s3cmd ls # 會看到新建立的 Bucket
    • s3cmd ls s3://YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME
快速紀錄 建立屬於自己的 AMI Image 的三步驟
  1. scp -i ~/ec2-keys/id_YOUR_NAME cert-KEY.pem pk-KEY.pem root@ec2-11-111-111-11.compute-1.amazonaws.com:/mnt
  2. ec2-bundle-vol -d /mnt -c <your aws certificate file> -k <your aws private key file> -u <your aws account number> -r i386 -p <your image name>
  3. ec2-upload-bundle -b YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME -m /mnt/YOUR_AMI_IMAGE_NAME.manifest.xml -a ACCESS_KEY_ID -s SECRET_ACCESS_KEY

使用自己的 Machine Images (AMIs)

  1. 點選 綠色那個 + 號(Register a new AMI)
  2. 輸入 <s3 bucket name>/<your image name>.manifest.xml
  3. YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME/YOUR_AMI_IMAGE_NAME.manifest.xml
  4. 點 Register AMI 即可.
  5. 再來就可以開啟自己的 Machine 囉~ :)

刪除 AMI

  1. Deregister AMI 就可以刪除.
  2. 再從 Amazon S3 刪掉:
    • s3cmd del s3://YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME/ # 需一個一個刪除
    • s3cmd rb s3://YOUR_AMI_IMAGE_NAME_OR_S3_BUCKET_NAME/ # 全部刪除完畢後, 再把整個 BUCKET 刪除.

建立 Elastic Block Store (EBS) Volume

  • EBS(Elastic Block Store): EBS 可以提供給 Amazon EC2 實體一個實體的儲存空間. (EC2 關機後, 資料就消失了.)
  • Amazon EBS Snapshot: Amazon EBS 另外可以隨時建立 Snapshot 的 volumes, 並將此儲存在 Amazon S3.
建立新的 Volumes (空間)
  1. 開啟一個儲存空間, 來儲存 EC2 的資料, 讓資料在關機後不會消失, 若沒有要 Mount 到機器上時, 可以先做 Snapshot 存放起來.
  2. 切換到 "Volumes and Snapshots"
  3. 點選 綠色+ (Create new volume)
  4. Size (GB): 1 ~ 1000
  5. Availability Zone: us-east-1a, us-east-1b, us-east-1c (要選跟機器同一區域的)
  6. 點選 Create 即可.
  7. 如果有多個 Volume, 要記得把 Volume id 記起來. (Mount 時要用)
Mount 新的 Volumes 到機器上
  1. 切換到 "AMIs and Instances"
  2. 到 Your Instances 區塊, 於機器上按滑鼠右鍵, Attach an EBS Volume
  3. Volume ID 選剛剛建立的.
  4. Device: /dev/sdb (/dev/sda ~ /dev/sdp 都可以填寫, 不過看 /dev/sda 已經是主硬碟在用, 所以輸入 /dev/sdb)
  5. 點選 Attach 即可. (此時就已經將此硬碟裝置裝上去了)
  6. 此時於機器上, 就會自動產生 /dev/sdb 出來.
  7. fdisk /dev/sdb # np1 ... w 這邊就不詳述了
  8. mkfs.ext3 /dev/sdb1 # 格式化
  9. mkdir /backup
  10. mount /dev/sdb1 /backup # 這樣子就 mount 完成.
建立 Snapshots
  1. 作此步驟前, 還是得要先完成前面 格式化 的步驟.
  2. 切換到 Volumes and Snapshots
  3. Create a new snapshot from this volume
  4. 於 Snapshots (SNAPs) 就會產生一個新的 SNAP ID 的新 Volumes 的 Snapshots.
將 Snapshots Mount 到新的機器
  1. 切換到 "Volumes and Snapshots"
  2. 對 Snapshot 按右鍵, 選 Create new volume from this snapshot, 一樣指定 Size, 區域等.
  3. 於 Volumes(VOLS) 就會看到新的 Volume, 將 volume id 記著.
  4. 切換到 "AMIs and Instances"
  5. 到 Your Instances 區塊, 於機器上按滑鼠右鍵, Attach an EBS Volume
  6. Device: /dev/sdc
  7. 點選 Attach 即可.
  8. 此時於機器上, 就會自動產生 /dev/sdc1 出來. (因為剛剛 Snapshot 前已經有 format 過了)
  9. mount /dev/sdc1 /backup # mount 起來.
  10. /backup 的檔案也都還會存在.

Elastic IP (EIP)

  • EIP 是要給此機器一個固定的靜態 IP, 不過 IP 是給 Account, 並不是給任何一個 Instances.
建立一個 固定IP (Elastic IP (EIP))
  • 點選 綠色+(Allocate a new address), 就會自動產生一個新的 IP.
指定機器使用某個固定 IP
  1. 切換到 "AMIs and Instances"
  2. 於 Your Instances 區塊
  3. 找到要 指定的機器 按滑鼠右鍵, 選 "Associate Elastic IP with Instance"
  4. 點選 Associate 即可.
  5. 就可以 ssh -i ~/ec2-keys/id_YOUR_NAME root@EIP

作者 jon ( My_Note ) :: 迴響 (18) :: 靜態連結網址

延伸閱讀

相關標籤

this is comment icon [回覆]

可以抓些图看看吗?

Comment by Belen (03/07/2009 13:51)

this is comment icon 回 Belen [回覆]

厄, 不抓圖主要原因是, 他最近又改了一版, 位置又變了..
我建議針對字去找比較有用, 把名詞解釋稍微看一下, 然後設定的部份都是可以用的. 只是 button 等位置有改變而已.
(我應該等他幾個版本都不改位置後, 再重新抓圖並寫一篇新的吧)

Comment by Tsung (03/07/2009 14:11)

this is comment icon 看起來好複雜? [回覆]

看起來好複雜?
實際操作不知道要多久?? @_@

Comment by BB (07/24/2009 00:30)

this is comment icon 補充一下,註冊完後還要在註冊一次EC2,這時要輸入信用卡 [回覆]

補充一下,註冊完後還要在註冊一次EC2,這時要輸入信用卡資料
不然FF的擴充套件不能產生連線

Comment by BB (07/24/2009 02:28)

this is comment icon 回 BB [回覆]

嗯嗯, 感謝補充, 實際操作只要做過一次, 名詞瞭解後, 功能位置大概知道在哪邊, 只需要三個步驟就開好一台機器了~ :)

Comment by Tsung (07/24/2009 08:29)

this is comment icon 感謝分享 [回覆]

公司最近用 MS 的 VS2008 (使用 ASP.NET 及C#) 開發了一套 EIP 的系統, 想配合 Amazon 的 EC2 服務, 想請問如何將公司開發的程式如何發佈上去, 程式包括自行開發的 AP Server 及幾支管理程式, 是 .net winForm 的 exe 執行檔

Comment by Michael (09/28/2009 12:50)

this is comment icon 回 Michael [回覆]

就租一台 Windows server, 然後遠端連進去, 就當自己的電腦用就是了~ :)

Comment by Tsung (09/28/2009 13:10)

this is comment icon 謝謝回覆 [回覆]

EC2 的服務還有含不含 MS-SQL 的選擇, 讓人搞不懂
我們的程式需要 MS-SQL 如果依您的說明, 我可以自己安裝 MS-SQL 嗎?
(PS: 我有 MSDN 的 Licence)
由於相關的文件不多, 如果有可能我可以付費請您協助排除相關的問題嗎?
我的 eMail: genie.michael@gmail.com
如果您願意幫忙, 可以用 mail 跟我聯絡
Thanks

Comment by Michael (10/04/2009 20:59)

this is comment icon 回 Michael [回覆]

您好, 在這頁 http://aws.amazon.com/windows/ 有 Pricing for Instances Running Windows Server with SQL Server Standard 的資訊, 裡面會包含 MSSQL 可以使用~ 您可以直接試租用看看, 就會明白囉~ :)

Comment by Tsung (10/04/2009 23:05)

this is comment icon [回覆]

我研究ubuntu enterprise cloud
找到閣下的網站
但是很多東西也許是時間、版本不同
最重要的是amazon網站不允許網頁超連結的間接引用
往往連不到你所說的頁面

可否將你的blog增加圖片
以方便辨識,謝謝

Comment by Kadok暗夜流星 (12/08/2009 21:27)

this is comment icon 回 Kadok暗夜流星 [回覆]

Amazon 的網站, 可以直接連過去阿. @.@a..
這篇主要是 Elasticfox 隨版本不同, 已經無法跟上了, 但是其它 Amazon 的還是沒問題的.
要增加圖片, 這個現在有點難耶(因為最近沒有使用這個, 所以暫時不會操作).
您覺得哪些部份是有問題的, 可以直接提出來, 或抓個圖給我(Mail).
我跟你說在哪邊~ 這樣子如何呢? :)

Comment by Tsung (12/08/2009 23:00)

this is comment icon 想請問關於local storage的問題 [回覆]

您好,我想請問一個關於instance本身的local storage的問題。
我使用amazon console去launch一個small instance,由http://aws.amazon.com/ec2上面的說明,解釋"Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of local instance storage, 32-bit platform",我自己解釋instacne裡會有160GB的storage空間,可能在/dev/sdax裡面,但是我透過SSH去instance裡面,並沒有看到類似的空間。想請問這裡指的160GB是什麼意思呢?
謝謝你

以下為我的instance資訊。
[root@ip-xx-xx-xx-xx /]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 15481840 15480088 0 100% /
none 874032 0 874032 0% /dev/shm

Comment by Migo (01/08/2010 15:17)

this is comment icon 回 Migo [回覆]

呃, 真是好問題, 這個我也沒確認過, 我想也是 160G 的意思.
不過我那時後至少用掉十幾G過, 都很正常. (不過, 實際上在上面把資料放滿, 我也是蠻擔心的, 因為一當機資料就消失了. XD)
不好意思, 我現在沒有 EC2 的機器, 所以無法確認這件事. Orz..

Comment by Tsung (01/08/2010 17:50)

this is comment icon 您好請教一下你有試過建立自己的Image嗎? [回覆]

Tsung大您好,
請問你有建立自己的image的經驗嗎?從自己的主機將image上傳至amazon,有的話可以請教一下操作步驟嗎?

Comment by smashing (04/29/2010 18:34)

this is comment icon 回 smashing [回覆]

我沒有從自己主機 build image 後, 傳上去的經驗耶. (這個方法可能也不行).

我記得上面的系統, Ubuntu / Debian 都是用 Amazon 原本提供的系統 Fedora 改出來的(把 Package 移掉, 再重新 Build 上去系統), 所以我不確定是否可行.

而且, 現在上面的系統已經夠多了, 我是覺得應該不需要再自己 Build 了耶. XD

Comment by Tsung (04/29/2010 23:41)

this is comment icon 想請問一下收費的問題 [回覆]

是不是當我在上傳要運算的data的這段期間也會要列入收費呀?

Comment by green (07/04/2010 15:41)

this is comment icon [回覆]

喔!我知道了不好意思

Comment by green (07/04/2010 17:05)

this is comment icon 回 green [回覆]

上傳, 下載 都是需要收費的.

Comment by Tsung (07/05/2010 08:58)
Add this page to del.icio.us

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~