2015年3月24日 星期二

AWS 筆記 - 建立自己的 Virtual Private Cloud (VPC)



原先以為 Amazon EC2 的 default vpc 不能綁定多組 public ip 才自己跳下去建立一個 VPC 把玩(事實證明是自己搞錯了),就順便筆記一下 XDD

首先,我先以 10.10.0.0/16 作為 Personal VPC 的範圍,接著希望在這裡頭的機器一樣可以連外,所以需設定 Internet Gateways 以及 Route tables,如此一來就跟 EC2-VPC 沒什麼兩樣了。









AWS 筆記 - Amazon EC2 一台機器綁定多組 Public IP


我原先以為只要增加實體網卡,接著從 Elastic Public IP 綁定即可,但結果一直不通,搞了一陣子終於搞懂流程了 XD 關鍵的地方在於只能用在一張實體網卡上,透過 Secondary IP addresses 機制,給予多個 public ip,這可能跟 AWS routing 本身設計有關。

總之,紀錄一下成功的步驟:
  1. 開機器過程中,在 Configure Instance Details -> Network interfaces 中,記得要使用 Secondary IP addresses ,如果打算讓一台機器綁定多組 public ip,則可以依據你要增加的 Public IP 數量進行,例如預計這台機器有 3 組 Public IP,那就是需增加兩組 Secondary IP addresses。(如果機器已開啟,則可以透過 Amazon EC2 Web UI -> Instances -> 查看 Description -> 挑選 Network interface -> 點擊 Interface ID -> Actions -> Manage Private IP Addresses -> Assign new IP)
  2. 在 OS 層新增虛擬網卡,我在 Amazon 提供的 Ubuntu 14.04 中,採用 static 的用法。
  3. 接著,在 Amazon EC2 Web UI -> Elastic IP -> Allocate New Address 後,再來接著 Associate Address -> 在挑選要綁定的 Private IP address -> Associate


以上就收工了,大不了第二步需要重開機一下。以下是第二步在 Amazon Ubuntu 14.04 64Bit 操作流程:

$ cat /etc/network/interfaces.d/eth0.cfg
# The primary network interface
auto eth0
iface eth0 inet dhcp

$ ifconfig
eth0    
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0
$ sudo vim /etc/network/interfaces.d/eth0.cfg
auto eth0
iface eth0 inet dhcp

auto eth0:0
iface eth0:0 inet static
address EC2-Private-IP
netmask 255.255.240.0

$ sudo ifup eth0:0
$ ifconfig
eth0    
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0
eth0:0  
          inet addr:172.##.##.##  Bcast:172.##.##.255  Mask:255.255.240.0

2015年3月18日 星期三

[Linux] 透過 sed 將 MySQL Table 資料轉成 csv 格式 @ Ubuntu 14.04

印象中之前找資料時,有發現 MySQL Server 可以輸出 CSV 格式到本地端。但是,對於無法存取到 DB Server 的檔案系統的環境時(AWS RDS),只好手動處理一下 :P

用法:

$ mysql -h rds-server -u root -p -e "SELECT field1, field2 FROM db_name.table_name" | grep "^Keyword" | sed 's/\t/","/g' | sed 's/^/"/g' | sed 's/$/"/g' > db-table-export.csv

其中 grep 那段只是為了mysql 輸出時,略過第一行 XD

[Linux] 透過 dpkg 指令,完整移除軟體 @ Ubuntu 14.04

有時為了製作乾淨的測試環境,多安裝的軟體會透過 apt-get remove package 來移除,並用 apt-get autoremove 清掉相依軟體。例如原本想安裝 php,偷懶用:

$ sudo apt-get install php5

結果系統就幫你裝了一卡車 apache2 相關東西,但你其實是想用 nginx 而已。

這時若只透過 apt-get remove 反安裝 apache2 後,系統還會遺留 /etc/apache2 的設定檔,為了避免後續維護誤導其他人,最佳的方式還是把這些東西都清光,此時就可透過 dpkg -P package 的方式清一清。

$ sudo dpkg -P apache2

如果有一卡車的東西,可以用 dpkg --get-selections 來查詢。連續動作(強烈建議先看過 dpkg --get-selections | grep deinstall 結果再使用):

$ dpkg --get-selections | grep deinstall | xargs sudo dpkg -P

2015年3月16日 星期一

AWS 筆記 - 使用 Amazon Cloudfront (CDN) 服務



切換到 AWS Cloudfront 頁面,可以看到支援 Web 跟 RTMP ,其中後者是 streaming media files。這次只使用 Web 方面。



整體設定上還滿簡單的,以 service.changyy.org 為例,後面是一台 server (node.changyy.org):
  • 先決定使用者最後會連結的服務的 domain name,此例是 service.changyy.org
  • 設定 cloudfront 的資訊,例如 Origin Domain name 填寫實際服務的機器位置 node.changyy.org
如此,cloudfront 會建立一筆 xxxxxxxxx.cloudfront.net 是提供 CDN 服務了。


可以用 nslookup xxxxxxxxx.cloudfront.net 可以看到有一批機器在服務了。如果,想要用自己的 domain name 的話,需要再 cloudfront 多設定 Alternate Domain Names(CNAMEs) 的資訊,未設定則會出現:


這主因是使用 cloudfront 是要計費的,若別人亂設定個 CNAME 導到你的 Amazon Cloudfront 的話,就默默地一直被扣錢 XD 至於費用的部分:
  • HTTP requests 費用: 在美國每 10000 則要價 0.0075 美金
  • 資料傳輸費用:在美國每 1GB 要價 0.02 美金
若一天要服務 10000 個 reqeusts,每則 100kb,那 30 天的費用:
30 天 * [10000 * 0.0075/10000 (HTTP) + 10000 * 100kb * 0.02/GB (DATA) ] = 30 * (0.075 + 0.01907) 美金附近 = 2.82 美金
對於費用部分,建議連上官網觀看,例如各地費用皆不同等:http://aws.amazon.com/tw/cloudfront/pricing/