2013-03-10 77 views
0

我在AWS EC2(Ubuntu)實例上安裝Railo。多個Tomcat實例對EC2實例有意義嗎?

考慮到「旋轉起來」多個EC2實例和負載平衡,彈性IP /路由53的能力,並配置每個單獨的EC2實例來運行多個Tomcat實例提供:我碰到這個guide for installing Railo on Ubuntu with multiple Tomcat7 instances,它會提示以下問題來了額外的好處?這是值得的,還是僅僅是多餘的?

+0

我懷疑與tomcat你不需要。運行多個線程的主要原因是利用單線程應用程序的多個內核,並在其他線程可能被io阻塞時提供監聽器。 – datasage 2013-03-11 02:01:45

回答

2

你必須找出你的瓶頸:如果你的服務器用單個tomcat運行內存不足,那麼在啓動第二個tomcat時沒有用處。另外,如果你的CPU最大化,那麼在第二個tomcat上花費通常是沒有好處的。但是,如果你在不同的服務器之間進行平衡,在一臺機器上有足夠的CPU和內存,你可能會從一臺機器上運行兩個tomcat獲得一些東西:例如,您可以一次從負載均衡器中移除其中的一個,然後將其更新並重新添加到平衡器中 - 然後再爲第二個平衡器執行相同操作。

但是...你可以用一個tomcat來完成每個虛擬機。恐怕:你必須通過測量來回答這個問題:如果你獲得的裝備可以在4個EC2實例上由4個雄貓處理,那麼它也可以在2個時候由4個雄貓處理EC2實例?您通常在每個運行的EC2實例上有多少資源(CPU,內存,I/O)?這一切都嚴重依賴於你的用例,什麼機器實際上是做。

更多示例:如果在CPU和內存不足的情況下網絡帶寬飽和,則第二個tomcat將不會在該機器上利用更多帶寬 - 它只會降低另一個tomcat上的吞吐量,因爲它們必須共享連接帶寬。

如果您的網絡帶寬沒有飽和,你的tomcat正在等待外部資源(例如web服務,數據庫),它可能是有意義的利用剩餘的CPU和內存與第二個實例。

但是有一點韌性:如果一個EC2實例出現故障,那麼它會帶上兩個tomcat。你能容忍或者是點你爲什麼跑到雲擺在首位?

+0

澄清:「開始秒沒有用」...「不需要啓動一秒鐘」 - 這些語句都是指第二個* Tomcat *,而不是第二個EC2實例,對嗎? – 2013-07-05 23:14:06

+0

是正確的,我已經編輯了答案,以使其明確 – 2013-07-06 10:42:23

1

除了Olaf的答案之外,這取決於您對容錯和成本的要求,原因有兩個。我記得讀過一篇文章,指出一個較大的實例比幾個具有相同容量的小實例便宜,我不記得URL,但很容易做數學。

亞馬遜實例不應該被視爲永久的,並且主機可以在任何時候停止運行,包括您的所有虛擬機。因此,您將失去該EC2實例中的所有Tomcat實例。當然,你可以提供足夠的,所以損失不是問題,但在這裏你知道你的應用程序。

但還有別的東西:在同一臺機器上的多個Tomcat實例,你必須要管理他們監聽的端口,所以沒有衝突。並配置Elastic Load Balancer以便使用它們全部。可行,但比在同一個端口上偵聽多個EC2實例有點複雜。