2008-11-04 92 views
45

我們一直在與HAProxy戰鬥幾天,現在在亞馬遜EC2;迄今爲止的體驗非常棒,但我們一直在阻止軟件負載平衡器獲得更多性能。我們並不完全是Linux網絡專家(我們通常是.NET商店),但是我們迄今爲止一直都在持有我們自己的,試圖設置適當的限制,檢查內核消息和tcpdump是否存在任何違規行爲。 到目前爲止,我們已經達到約1,700個請求/秒的高峯,此時客戶端超時(我們一直在使用和調整httperf用於此目的)。一位同事和我正在傾聽最近的Stack Overflow播客,其中Reddit創始人指出他們的整個網站運行一個HAProxy節點,而且迄今爲止它還沒有成爲瓶頸。確認!要麼不知道有多少併發請求,我們做的是非常錯誤的事情,或者EC2的共享特性限制了Ec2實例的網絡堆棧(我們使用的是大型實例類型)。考慮到Joel和Reddit創始人都認爲網絡可能會成爲限制因素,這有可能是我們看到的限制嗎?Amazon EC2中的負載平衡?

任何想法非常感謝!

編輯看起來實際問題並不是實際上與負載平衡器節點!罪魁禍首實際上是運行httperf的節點,在這種情況下。由於httperf針對每個請求構建和拆分套接字,因此它會在內核中花費大量CPU時間。當我們提高請求速率時,TCP FIN TTL(默認爲60s)會導致套接字過長,並且ip_local_port_range的默認值對於此使用情況來說太低。基本上,在客戶端(httperf)節點持續創建和銷燬新套接字幾分鐘後,未使用端口的數量用完,並且在此階段後續「請求」出錯,產生低請求/秒數和大量的錯誤。

我們也看過nginx,但我們一直在使用RighScale,他們已經有了HAProxy的插件腳本。噢,當然,我們的時間太緊[當然]要切換組件,除非它證明絕對必要。實際上,在AWS上允許我們使用nginx並行地測試另一個設置(如果有保證的話),並在晚些時候進行切換。

This page很好地描述了每個sysctl變量(在這種情況下調整了ip_local_port_range和tcp_fin_timeout)。

+3

Marc,你應該寫下你配置這些東西的經驗,並將它們發佈到某處(你的公司是否有博客?)。聽起來好像對很多人有用。 Upvoted你的問題。 – SquareCog 2008-11-07 06:55:56

+0

您的鏈接已損壞。 – Ztyx 2015-05-19 19:20:14

+0

@Ztyx謝謝!只是更新了它。我搜索了一個更新,更新的源代碼,看起來原來的網站仍然有很高的PageRank,內容還是很不錯,所以我只是糾正它以反映新的URL。 – 2015-05-20 21:27:35

回答

9

不是你的問題的答案,但nginx和英鎊都有良好的負載平衡器的聲譽。 WordPress的只是switched to nginx與良好的結果。

但更具體地說,要調試您的問題。如果你沒有看到100%的CPU使用率(包括I/O等待),那麼你是網絡綁定的,是的。 EC2內部使用千兆網絡,請嘗試使用XL實例,以便您擁有底層硬件,而不必共享該千兆網絡端口。

1

我會考慮切換到非現場負載均衡器,而不是在雲中,並在其上運行類似IPVS的東西。 [爲什麼它不能使用亞馬遜的雲是因爲內核的原因]如果亞馬遜不限制數據包的源IP,則可以使用單向負載均衡機制。我們做了這樣的事情,它使我們獲得了大約80萬個同時請求[儘管我們沒有處理延遲]。我也會說使用「ab2」(apache bench),因爲它更友好一點,並且在我的愚見中更容易使用。

20

不直接回答問題,但EC2現在支持通過Elastic Load Balancing進行負載平衡,而不是在EC2實例中運行自己的負載平衡器。

編輯:亞馬遜的Route 53 DNS服務現在提供了一種方法來指向一個ELB的頂級域與「別名」記錄。由於亞馬遜知道ELB的當前IP地址,因此它可以返回該當前IP的A記錄,而不必使用CNAME記錄,但仍可隨時自由更改IP。

3

是的,你可以使用一個非現場負載平衡器..和裸機LVS是一個很好的選擇,但你的延遲將是可怕的!有傳言說,亞馬遜正在修復CNAME問題。然而,他們不太可能添加https,深度或自定義運行狀況檢查,反饋代理,url匹配,cookie插入(並且一些架構良好的人也會說非常正確。)但是,這就是Scalr,RightScale和其他人使用HAProxy的原因,通常是兩種他們在循環DNS入口後面。在Loadbalancer.org上,我們即將推出我們自己的EC2負載平衡應用: http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ 我們計劃使用SSH腳本以與縮放比例相同的方式與自動縮放進行整合,並在博客上讚揚任何評論。 謝謝

0

即使您的問題解決了。 KEMP Technologies現在擁有一套全面的AWS負載平衡器。可以爲你節省一些麻煩。