AWS SES 總算可以「手動」把 Blacklist 拿掉...

AWS SESAWS 服務裡面設計問題超多的一個服務,在推出兩年後 (2011 年一月) 總算是提供把 Blacklist 拿掉的功能...

原始的設計是,只要對方位置不存在,這個 e-mail 就會進黑名單 14 天,無法刪除。而一次寄給多人的信件,只要有一個人是黑名單就會全部擋掉 XDDD

再來是這個 14 天限制,並不是「第一次被擋掉後 14 天」,而是「最後一次失敗後 14 天」,而「最後一次失敗」包括 retry... =_=

弄到最後反而是自己架 mail server 比較快,針對問題很多的 @yahoo.com 系列與 @*.hinet.net 透過 AWS SES 寄就好...

AWS 又調降價錢了...

在「EC2's M3 Instances Go Global; Reduced EC2 Charges and Lower Bandwidth Prices」看到 AWS 又調降價錢了,這次調降是圍繞在 EC2 上面。

首先是第二代高記憶體用量的機器 (代號 M3) 從本來只有 us-east-1 可以用,現在在全世界都可以用了。然後高 CPU 用量與高記憶體用量的機器的費用也降價了,不過主要是將在非亞洲區。

另外一個蠻特別的降價是 AWS 自家機房內的傳輸頻寬,這包括跨區域以及 CloudFront

舉例來說,本來 us-east-1 傳資料到 us-west-1 是依照 us-east-1 Internet outbound traffic 算錢 (USD$0.12/GB for us-east-1),現在 AWS 則是將這種流量視為另外一種內部使用,而給予不同的收費標準 (USD$0.02/GB for us-east-1)。同理,CloudFront 到 EC2 或 S3 上抓資料也是類似的算法。

這對於 AWS-based 提供服務的公司來說應該是很不錯的消息?因為應該有些用戶是從 us-west-{1,2} (美西) 或是 eu-west-1 (歐洲) 連到大本營 us-east-1;而對 CloudFront 的節省應該有限,因為 cache 後就不會往後面再要資料了?

AWS 歷史上第一台 RAM 比儲存空間多的 instance...

看到 AWS 推出新的 EC2 instance:「EC2 for In-Memory Computing - The High Memory Cluster Eight Extra Large Instance」,看完這個 instance 的規格笑了出來 XDDD

120GB SSD 兩顆 (所以是 240GB),加上 244GB RAM,結果記憶體比 SSD 空間大,應用程式一定得分層利用... XDDD

Colin Percival 開了台 FreeBSD 9.1 起來測試,可以順便看到一些硬體資訊。

目前還沒有 Reserved Instances 可以買,所以依照目前的價錢 USD$3.50/hour,一年大約是 90 萬新台幣,而這金額差不多可以直接買一台了... 所以這個 instance 的定位是在非長期的大量運算?不過依照 AWS 的慣例,過陣子應該還是會出 Reserved Instances 讓需要的人買...

不過這也是目前記憶體最多的機器,如果下次看到有文章寫「因為資料超過 244GB,所以資料庫效能炸掉」的訊息,就知道發生什麼事情了 XDDD

分散式系統的建言...

「分散式系統」(Distributed System) 是個老詞彙,但跟最近當紅詞彙「雲」、「NoSQL」常常相關。也因此「雲」與「NoSQL」常常遇到的都是分散式系統遇到 (並且討論過) 的問題...

而「Notes on Distributed Systems for Young Bloods」這篇寫的好血淚 XDDD 除了講理論面的東西以外,也把實務面會遇到的問題拿出來講...

首先要先知道「Fallacies of Distributed Computing」,在分散式系統裡,能假設的事情實在太少,要處理的事情太多。而「CAP theorem」也是個必讀的主題,從 Amazon 丟出「Dynamo: Amazon's Highly Available Key-value Store」這篇經典的 paper 後讓更多人知道這個理論。

熟悉上面兩個主題後,接下來就是血淚史... XD

garbage collection pauses make masters “disappear”

啊,GC 讓 master 不見... (NameNode... XDDD)

Writing robust distributed systems costs more than writing robust single-machine systems.

Robust, open source distributed systems are much less common than robust, single-machine systems.

這兩條... XD

Oh, and Paxos really is very hard to implement

Paxos... XD

If you can fit your problem in memory, it’s probably trivial.

(噴飯)

“It’s slow” is the hardest problem you’ll ever debug.

連問題都找不到嗎... XD

撇開這些碎碎念的部份,就算對 distributed system 沒那麼熟,這篇文章也提到了很多「解決的方向」以及「關鍵字」讓你找資料,對於實際操作時會有很大的幫助。

把 PEM Private Key 檔轉成 SSH Public Key 格式...

RSA 中,單獨靠 Private Key 是無法算出 Public Key 的,不過在 PEM 檔裡因為都有紀錄,所以可以取出:

openssl rsa -in aws.pem -pubout

不過取出的格式需要再轉一次讓 OpenSSH 可以吃:(參考「Convert pem key to ssh-rsa format」這篇的方法)

ssh-keygen -f aws.pub -i -m PKCS8

雖然 ssh-keygen 不接受 - 當 stdin,但可以利用 /dev/stdin 直接串起來:

openssl rsa -in aws.pem -pubout | ssh-keygen -f /dev/stdin -i -m PKCS8

AWS EC2 新機種:超大台的 hs1.8xlarge...

Amazon Web ServicesEC2 在世界末日時發表 120GB RAM、16 virtual core、48TB disk (24 disks) 的「EC2 虛擬機」:「The New EC2 High Storage Instance Family」。

看起來像是 12 顆 7.2KRPM 的 2TB SATA,每顆如果可以跑到 200MB 就是 2.4GBytes/sec?如果是這種規格,給大量 sequence read/write 的運算超適合,官方 blog 的說明裡的解釋也是接近這個方向:

This instance family is designed for data-intensive applications that require high storage density and high sequential I/O -- data warehousing, log processing, and seismic analysis (to name a few). We know that these applications can generate or consume tremendous amounts of data and that you want to be able to run them on EC2.

目前只在 US-East (Northern Virginia) 有,USD$4.60/hour,硬算 720 小時,大約是每個月台幣十萬...

AWS 最近在補的硬體可以看出來是 Hybrid Hosting 的路線:這些機器應該是一台只跑一個 instance,跟 Dedicated Hosting 差不多。上面跑虛擬化只是為了算錢 (accounting) 以及一些安全機制 (像是防止 IP spoof,以及配合 EC2 提供的 firewall)。

實質上不太能說 AWS 不是 Hybrid Hosting 了...

cdnjs (其實我要說的是 Bootstrap...)

之前曾經提過 BootstrapCDN,不過我不是很喜歡用。主要的原因包括 netdna.bootstrapcdn.com 所使用的 CDN 在是不包含亞洲範圍 (會需要到美西抓),加上之前因為換 url 結構結果本來的 url broken...

cdnjs 是之前就知道的服務,剛剛看了一下發現東西愈來愈完整了... 雖然名稱裡是放 js,但實際上上面放的 Bootstrap 是完整的:

//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings.png
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings-white.png
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.min.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.js

剛剛在 CloudFlare 官方的 blog 上看到介紹 cdnjs 有點意外:「CDNJS: The Fastest Javascript Repo on the Web」。

翻了翻 cdnjs.cloudflare.com,看起來是包含亞洲的點,在 HiNetTWGate 上測試是導到香港的點,應該會用用看吧。至於其他 Google Hosted Libraries 有提供的應該是會用 Google 的服務,畢竟是直接從台灣的機房供應的...

Debian 官方維護的 AWS EC2 Image...

在「Official Debian Images on Amazon Web Services EC2」看到 Debian 官方放出了 AWS EC2 的 AMI:「Cloud/AmazonEC2Image - Debian Wiki」。

之前幾乎都是靠 alestic 製作的版本,現在則是官方直接支援了... 在頁面上除了有連結指到 Debian 官方的版本外 (在 AWS Marketplace 上),另外還列出了其他個人與團體製作的版本。

之後如果要用 Debian 可以選這些 AMI 來用...

AWS 的儲存空間降價 (S3 與 EBS)

雪梨也是同樣降幅,而且最高的 >5000TB 沒降,應該是因為 AWS re:Invent 辦這麼大,總是要有些東西看起來很炫?

降價範圍除了 Standard Storage 以外也包括 Reduced Redundancy Storage,降幅很大,從 24% 到 28% (約 1/4):「Amazon S3 Storage Price Reduction (24 to 28%)」。

其他幾個對手壓力很大啊 XD

虛擬機內的 Side-channel attack...

前陣子在其他地方看到,不過剛剛在「Stealing VM Keys from the Hardware Cache」看到利用 Side-channel attack 的攻擊:「Cross-VM Side Channels and Their Use to Extract Private Keys」。

實際攻擊的項目是 libgcrypt 實做的 ElGamal 演算法,長度是 4096bits。環境是 Xen,限制是在同一台實體機器上。

對抗 side-channel attack 的幾個方法:實體隔離 (效果最好) 或是改善演算法 (通常是犧牲一些演算法效率,換取難以被外部預測的保護)。前者也就是 AWS 為了符合美國政府要求所建立 AWS GovCloud (US) 的原因之一。