iT邦幫忙

0

請建議,大型網站伺服器應如何架構

  • 分享至 

  • xImage

需求如下:
1.全天候24小時運作
2.訪問數初期估價約每日30萬人次
3.防火牆及入侵防禦系統架設

基本上需求就差不多是這樣, 這是小弟我去面試的時候, 主管出的家庭作業, 所以正努力的在到搜尋答案, 參考了大部份的文章, 都沒有提及到流量(訪問數)的評估, 例如伺服器可以承擔多少連線數, 或是可以用什麼運算能力去換算參考值?

目前我所找到的資料跟已往的工作經驗, 只有看過防火牆/由路器有連線數的參考值, 就網站伺服器來, 小弟實在是不知從何下手, 還請前輩們指教.

家庭作業問題有
1.網路拓撲圖 (這個小弟我自己解決)
2.防火牆、入侵防禦、路由器規劃 (這個小弟我也可以自己處理)
3.應有幾台 Web Server DB 主機或其它應具備的主機系統
(目前小弟的想法是 2 台 Web Server 做 Load Balance, 2 台 DB 做備援, 不知是否有更好的選擇)
4.可採購的伺服器機型、品牌與預估配置
(這就是讓我頭大的地方, 沒有參考數據讓我無法評估)
5.如何規畫、用意為何?

以上還麻煩各為先進前輩們, 多多幫忙指教, 我也會努力自己去找尋答案的, 必竟時間只有 1 天就要交考捲了 ~"~

看更多先前的討論...收起先前的討論...
快翻一翻 Building Scalable Web Sites 以裡面的原則為基礎,再調整應用到實際的案例。
幾天前 bizpro 曾發了個問題:
Reverse Proxy: PerlBal, Nginx, Varnish的比較
(可惜沒人回答而刪問題了)
好奇看看 PerlBal 是怎麼回事。
瀏覽到一篇非常具有參考價值的簡報:
LiveJournal's Backend A history of scaling
可大概地了解到發展成大型網站的過程中,
會面臨到的瓶頸、安全,及可行的解決方案。

所以只是單從硬體的架設改善,
並不是完全的解決方案;
而需要配合資料庫、或程式在讀或寫的比率上、
用何種的快取方式加速、
如果資料不是那麼複雜的查詢,
甚至可考量用NoSQL型式的資料庫…
(NoSQL是目前超大型網站的趨勢)
如果只是以「加機器」的方式,
對 scalability 而言,
不能完全解決發展成大型網站的瓶頸,
而要有像該簡報中的相關考量。

流量大的網站,
對於網頁寫得是否有效率、
怎樣安排cache的存取,
可參考:
Webserver Optimization and Bandwidth Saving Tips
該站還有一文:
Network Speed and Performance Guide (OpenBSD)
原來處理網路速度的關鍵在那 匯流排 的速率,
內建網卡往往是個瓶頸,
所以主機板上的規格也要注意,
這是以前都沒有意識到要考量的地方。
bizpro iT邦大師 1 級 ‧ 2009-12-16 14:11:26 檢舉
twtw兄, 我想沒人有興趣的, 真抱歉. 不過, 外層Reserve Proxy是一定要的, 應用程式用Distributed Cache. 國內那家影音網站是用八台以上的PerlBal的, 應該效能不錯.
bizpro iT邦大師 1 級 ‧ 2009-12-16 14:14:21 檢舉
之前我也提及NoSQL的趨勢. 基本上目前大型的系統應該都會採用這種技術的.
現在有好多種NoSQL,
還在了解哪一種的db適合哪一種場合適用。
Couchdb, redis, Tokyo Cabinet, MongoDB, SimpleDB, BigTable, Cassandra...
後來發現這裡整理了好多:
http://plog.longwin.com.tw/news-technology/2009/11/06/key-value-system-category-2009
實在新的東西又多又快。
amigoccs iT邦研究生 4 級 ‧ 2014-03-21 18:54:38 檢舉
您可能還要考慮,程式是否是Thread Safe,可否使用 apache worker MPM,因為又與可以可以同時處理的 concurrent session 有關。

How Multi-Core Processors Accelerate your LAMP Applications 說明處理器支援的 Thread 數量,與 LAMP 的關係。

這種大型網站,有多種考量,不單純是 Infra 的責任,DBA 的調校、網站程式架構、規劃化可承載同時處理網站人數、CDN 的應用、Session 的處理方式等等,需要在一個框架 framework 討論,才不會彼此失顧。

建議您以 IAA 框架與主管討論,比較完整。

IAA: Infra, Application, Assistant
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
8
kikulu
iT邦研究生 3 級 ‧ 2009-12-16 11:53:59
最佳解答

3.很多條件都會影響到架構
靜態頁面和動態頁面的比例
數據量 瀏覽頁面數
使用類型 論壇 視頻網站 電子商務 甚至 一般公司網站都有差異
參考這個網頁吧
http://www.dbanotes.net/arch/yahoo_arch.html
4.伺服器參考IBM的配置

sailsolitary iT邦研究生 2 級 ‧ 2009-12-16 14:07:17 檢舉

使用的網頁應該是一般的電子商務系統, 預計最高同時在線人數應該會有1000~2000人上下。

8
atlantischiu
iT邦新手 4 級 ‧ 2009-12-17 00:34:05

我的經驗是一台WEB + 一台DB
CPU至少四核心已上,雙CPU更好
記憶體至少8GB,16GB更好
作業系統:Windows Server 2008 (x64)
硬碟:SAS 15000轉,至少三顆,做Raid 0 + 1
(如果預算夠的話,可以加買iSCSI的儲存伺服器)

伺服器至少買DELL的,算是滿便宜的..!!
錢很多的話,可以買IBM的!

然後同樣的機器多買一套當作備援
萬一系統出問題的時候,可以手動轉換!
(如果預算很多,可以玩熱備援)

8
insider
iT邦研究生 5 級 ‧ 2009-12-17 08:00:55

If Linux platform :

Web tier :

  1. 2x IBM x3550 Intel Nehalem E5540, 2.53Ghz,1xSocket,8GB, Oracle Enterprise Linux (OEL support is better than RHEL)
  2. 2x IBM x3650 Intel Nehalem x5570, 2.93GHz, 1xsocket, 16GB, Oracle Enterprise Linux + Oracle 11gR3 RAC
  3. LoadBalancer : 2x F5 Big IP 1600
  4. 2x Cisco 3560 Gigabit Ethernet switches with Ethernet channel. VLAN for Data link and iSCSI switches.
  5. 1x IBM DS300 iSCSI SAS storage for Data storage
8
ymcjack
iT邦新手 4 級 ‧ 2009-12-17 23:26:20

個人建議 可以採用虛擬化架構

AP 用X3550最少二台,利用虛擬化企業版的,不管是VM還是HYPER-V這樣就都有HA,也可以視流量增加第三、四台作擴充並且都會有備援方式。

DB 可以用以往的方式作HA。但一定要有一台好的Strage ,這樣效能才夠。
我建議是用netapp除了效能好,內建快照備份的功能也很強,彈性也很大。

另外這樣大的流量,在前端除了基本的以外 ,f5 或是 cisco ACE的設備不能少。

看更多先前的回應...收起先前的回應...

請問這些DB做了Load balance會不會導致同一個user在不同資料庫裡面的紀錄不一致,例如今天登入A資料庫買了一件物品,明天被Load balance到B資料庫就找不到昨天的購買紀錄.

請問這些DB做了Load balance會不會導致同一個user在不同資料庫裡面的紀錄不一致,例如今天登入A資料庫買了一件物品,明天被Load balance到B資料庫就找不到昨天的購買紀錄.

DB目前來說,比較難做到Loading Balance!
(聽過朋友的經驗,完全打消DB Loading Balance的念頭)
比較可行而且便宜的方法是 四核心雙CPU + 64GB RAM
採用x64作業系統,讓DB可以盡量吃記憶體,吃滿也沒關係 (4GB預留給OS,60GB給DB)
反應速度極快!
採購兩台,做交易紀錄備份和交易記錄傳送,就非常夠用了!
只是不知道你資料庫的檔案大小預估有多大?

那像facebook這些網站是怎麼設計資料庫的, facebook 有很多不同的的IP, 有可能都連到同一個資料庫主機嗎?

zmdtw iT邦新手 4 級 ‧ 2010-11-12 09:32:11 檢舉

以小弟過去的經驗,同時1000 - 2000人上線,至少需要2-4台web server做cluster,如果預算多可以在添購網路硬體去做HA,
資料庫部分需要多建幾台做replication把select和DML(update、insert、delete)分開,譬如:4台資料庫,可以讓3台做select,1台做DML就可以了,
另外,大流量的網站比較重要的是網頁程式碼的最佳化,那對資料庫的負擔會有很大的影響的,希望以上資訊可以幫到你。

kairosa iT邦新手 3 級 ‧ 2015-05-19 19:05:02 檢舉

db 沒辦法做LOAD BALANCE 那是不是可以考慮用資料庫鏡像 一個資料庫負責讀一個資料庫負責寫彼此之間做鏡像?

我要發表回答

立即登入回答