2015年6月10日 星期三

AWS NAT script 實作

最近公司在 AWS 上面需要做 HA-NAT,參考了一下 gslin 大的這篇文章寫了一段 script 來做這件事情

概念上一樣是不做 cross-zone NAT,反正 AWS 宣稱他們頂多是一次掛一個 AZ (?)

script 放在這邊
https://github.com/adaam/AWS-NAT/blob/master/NAT.sh

 基本概念就是,一個 AZ 自己起一個 EC2 來管理自己 AZ 的對外需求,這樣差不多就有達到 HA-NAT 的要求,反正從外面看來你沒有把 AZ 全掛光看起來就還是正常在服務XD

要用這支script有幾個要求
  1. 要指定夠的權限 (IAM Role) 給 NAT 的機器,因為他要可以控制路由表還有改動子網路的路由對應關係。
  2. 要安裝好 jq ,因為需要解析很多 json 文件,這是我目前找到覺得最方便在命令列底下做事情的小程式,就不用在自己寫 python 之類的,簡單來說,就是懶XD
  3. 要先把 subnet 開好,指定好 Tag 的名字是 NeedNAT,值裡面就放 1,考慮到不是每個子網路都需要經過 NAT,就設計了這個 Tag 用來區別需要 NAT 跟不需要 NAT 的子網路
以上條件都滿足之後,應該就可以開開心心地執行這隻程式來架 NAT ,不過畢竟是第一次的概念,或許還有一些地方不完全,裡面也完全沒寫到錯誤處理,有任何問題還麻煩大家在這裡或是 github 那邊跟我說一下。

預計之後應該還是會找方法來實做 cross-zone 的 NAT,不過還需要一點時間來想要怎麼做溝通,heartbeat 感覺太肥,他的需求也不是我要的,我這邊只要簡單的偵測對方掛了沒,然後把路由表切到自己身上,等對方活過來再切回去這樣,不過還要考慮 3AZ 以上的情形,感覺有點棘手。

沒有留言:

張貼留言