2011-05-18 80 views
2

書寫時使用Django或這樣的Web應用程序,什麼是連接到動態的EC2實例的最佳途徑,比如Redis的內存緩存或實例的集羣? IP地址在重啓之間發生變化等。彈性IP默認限制爲5個 - 有哪些其他選項可用於自動發現/自動更新哪些機器可用?我聽說在AWS網絡研討會最近提到如何管理和連接到EC2實例的動態IP?

回答

1

一種方法是存儲這類的SimpleDB的信息。本質上,您將使用SimpleDB作爲中央配置位置,並且您啓動的每個實例都將使用此配置註冊其IP等,因此您始終可以在一個位置完整描述所有實例。我在實踐中沒有看到這一點,所以我不知道最佳做法究竟是什麼,但這個想法聽起來很合理。我想你可以使用SNS或其他東西來指示所有其他實例,只要配置發生變化,所有人都可以刷新其配置的內存緩存。

我真的不知道AWS管理API,但可能有一個API調用來列出您的EC2實例,此時您可以使用某種自定義協議來ping每一個,並詢問它是什麼 - 部分memcache集羣,Redis等。

0

如果你想留在EC2實例中(我在同一條船上,我讀過你可以用他們的VPC做這種事情或者使用S3桶或類似的東西),但在EC2中,我是這樣寫的東西的中間......這一切都非常簡單了,直到你需要與你的數據中心或某事的服務器與服務器聯繫的部分。目前,我正在做的方法是使用API​​來創建實例,並啓動它...那麼一旦它準備好了,我聯繫服務器執行PowerShell腳本我有在服務器上.... PowerShell的重命名電腦並重新啓動它......這需要我們的數據中心防火牆需要主機名和MAC。我還沒有找到遠程重命名計算機的方法。

就知道了IP,彈性IP地址是要走的路。他們說你只被允許5,並且需要申請更多,但我們經常要求更多,他們給我們..我們現在喜歡15,他們還沒有抱怨。

,如果你不'想要做的所有的計算機和重命名等...你可以使用DHCP和設置您的計算機,所以當它啓動時它會從DHCP計算機名和一切....我的另一種選擇我不知道該如何做到這一點,我遇到非常聰明的人告訴我,這是在我爲亞馬遜研究期間做到這一點的方式。

我肯定會推薦你進入亞馬遜API ......我一直在使用它不到一個月,我可以做各種瘋狂的事情。我的代碼可以檢測到我們的系統受到壓力的區域,啓動10臺亞馬遜服務器,全部配置爲任何需要緩解壓力的服務,並準備在不到7分鐘的時間內向所有人發送作業。給我的眼睛帶來一滴眼淚。

該文檔非常完整... API本身是一門藝術作品,也是一種快樂的程序,我非常喜歡使用它。 (和不,我不'爲他們工作哈哈)

+0

爲了澄清一些事情,我們遇到的問題需要我們採取重命名路線,因爲我們的數據中心防火牆需要知道我們的計算機名稱和mac地址是什麼,才能讓它與我們進行交互(或更具體地說,其服務與我們互動)。如果您不需要這種預防措施,那麼您可以非常輕鬆地使用API​​來獲取有關正在運行的實例所需的每一點信息......使用DescribeInstancesRequest和DescribeInstancesResponse方法。 – 2011-06-07 19:49:14

1

我有一個類似的問題,並沒有找到一個解決方案,因爲我們還需要映射負載平衡器地址。

對於您的問題,有兩個很好的選擇:

如果你不使用EC2微實例或負載平衡器,你一定要使用亞馬遜虛擬私有云,因爲它可以讓你控制實例IP地址和路由表( check all limitations before using this service)。

如果您僅使用EC2實例,則可以編寫一個腳本,該腳本使用EC2 API工具運行命令ec2-describe-instances以查找所有實例及其公用/專用IP。然後,該腳本可以將實例名稱參數化爲主機並更新/ etc/hosts。最後,您應該將腳本放在需要訪問EC2實例的每臺計算機/實例的crontab中(請參閱ec2-describe-instances)。

0

傳統方式:使用DNS。這是它的目的,所以使用它!當機器啓動時,讓它詢問與其功能相關的域名,並將其用於您的配置。如果它停止響應,請重新解析DNS(或者只是定期執行此操作)。

我認爲route53和彈性負載平衡的東西可以用來做到這一點,如果你想堅持亞馬遜的解決方案。

2

晚的答案,但使用的Boto:http://boto.cloudhackers.com/en/latest/index.html

您可以使用安全組,標籤等手段打EC2 API和挑選每一件事情的情況下/ IPS(DB服務器,緩存服務器,等等。 )在加載時。我們在部署中取得了巨大的成功,並且正在使用我們的Django settings.py。