X
    Categories: My_Note

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
Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post