iT邦幫忙

0

請問ms資料庫的負載平衡

首先說明:
我不是要網路或網頁伺服器的負載平衡方式,
因為這太多資料可找了~有硬體也有軟體的~

我要問的是目前有沒有針對資料庫的 負載平衡方式,
大概說明一下架構好了
假設:
公司是一間智識庫的公司,資料內容有數十G的單一DB,也有其它的小DB(這就不說了)
在前端網頁的伺服器有3台各連到資料相同不同主機的資料庫,
1WEBSERVER------1DBSERVER
2WEBSERVER------2DBSERVER
3WEBSERVER------3DBSERVER
會這樣做是因為會員人數多,要分散及負載平衡量,
在前面的WEBSERVER可以做負載平衡,那個WEBSERVER的LOADING過重就換到另一台WEBSERVER,
這樣是很簡單,但如果要增加SERVER來應付更重的查詢量的話,每增加一台WEB就要增加一台DB,
這樣很沒有經濟效益,我也知道可以多台WEB對一台DB,
但這只有前面WEBSERVER有負載平衡,因為公司是資料量大被查詢的公司,所以就算WEB有 負載平衡,
但多台WEB針對一台DBSERVER做查詢,這樣DBSERVER很快就有可能會當機及掛掉,
因為同時上線查詢的人數是上千人以上的人數,
所以目前才會使用一台WEBSERVER對一台DBSERVER,

前面敘述是為了說明狀況 ,主要想問的是在WEBSERVER到DBSERVER中間這段有什麼辦法針對DB做負載平衡嗎?
不管是硬體或是軟體的方式,
如果我要作12台WEBSERVER但只要3台DBSERVER對接,當其中一台DBSERVER的LOADING過重,
會把新連線或部份連線自動轉到另一台DBSERVER去,
不曉得是不是有這種的DB負載平衡的硬體或軟體呢?

請各位對資料庫了解的大大們幫幫忙囉

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
10
pojen
iT邦研究生 5 級 ‧ 2010-09-22 12:45:31
最佳解答

我想其中ㄧ個使用方案可用 Windows Active/Active cluster + DPV 來達成你的需求.

  1. 建好 Windows cluster
  2. 在每個 node 裝上 SQL Server
  3. 建好 linkserver, 所以的 SQL Server instance 都可以連到對方
  4. 在每個 SQL server instance 上建立該 instance 應該負責的 range.
  5. 在每個 SQL server instance 上建立共通的 view (DPV)

我唯一不確定的是同時連線"執行中"能否達成你的需求. 理論上 SQL Server instance 最高可負擔 1000 同時運行的 session. (非 idel) DPV 會消耗可用的 session 數, 而且效能無法保證. (人為的 hot spot)

如果是忙碌的 g 級 DB, 有無考慮 in-memory DB 方案? (如 Oracle 的 TimesTen) 如果預計會成長到 T 級, 那 Oracle RAC 也可是另一個選擇.

看更多先前的回應...收起先前的回應...
mmnnbb iT邦新手 5 級 ‧ 2010-09-23 10:09:40 檢舉

感謝前輩的回應,你說的Windows Active/Active cluster+ DPV我不是 很懂,
我只用過Cluster做A-P Mode(Active-Standby),所以去查了有關aa的架構,
或許可用,但還沒有研究的很詳細,不過還是謝謝前輩給的方案,謝謝囉

mmnnbb iT邦新手 5 級 ‧ 2010-09-24 14:47:40 檢舉

Windows Active/Active cluster + DPV
DPV是什麼呢?~我找不到~可以請前輩提供相關網頁參考看看嗎?
謝謝

pojen iT邦研究生 5 級 ‧ 2010-09-24 21:17:13 檢舉

DPV = distributed partition view. 邏輯上將一個 table 切成小份, 放到不同的 SQL instance 上. 然後用 View 重新包起來. 好處是不管哪一個 Instance 收到客戶請求, 都能夠處理.

SQL A/A cluster 非必要, 但可以最小程度保證其中一個 instance 死掉不會全部停機. (另外準備 SQL cluster 時, DTC 也會裝好, 所以省了一個步驟)

同你所見, 手動切小份有很大的可能製造出人為的 hot spot. 另外整體效能將會是整個群組最慢的那一臺.

Oracle RAC 能夠做到自動及時附載平衡, 所以如果資料庫到 T 級,Oracle Rac 不失為一個解決方案.

mmnnbb iT邦新手 5 級 ‧ 2010-09-27 09:25:35 檢舉

看來好像只有oracle rac可以這樣做了,MS sql 2008 r2 parallel data warehouse
最新的技術好像也不行做到自動及時附載平衡,除非我看錯文件說明....唉.....

10
小夫
iT邦新手 2 級 ‧ 2010-09-22 13:32:00

先請教你,目前 Web server 的負載平衡機制是透過什麼設備 or 軟體做到的呢?
基本上能做到 Web server load balance機制的設備,也能做到DB SLB功能,只需要架構做些調整即可!

mmnnbb iT邦新手 5 級 ‧ 2010-09-23 09:50:11 檢舉

你的意思是web server 的load balance設備也能做到DB SLB真得嗎?
公司的網站負載平衡好像是透過硬體來做的,但是什麼樣的型號我就不知了,
這問題有問過某SI公司的業務有沒有解,他說沒有相關辦法可做,所以我才來這問,
很好奇的是我找那麼久是都還不知Web server load balance機制的設備,也能做到DB SLB功能,可以請前輩指點指點嗎?

小夫 iT邦新手 2 級 ‧ 2010-09-29 10:19:53 檢舉

不好意思,太久沒上線了!希望你的問題已經解決。
關於我的說法,基本上Server loadbalance 設備都能做各種伺服器平台,原理與機制都很像,我接觸過兩三種此類裝置,都是沒問題的。
冒昧請教,你的SLB是在你的管理範圍嗎?如果是,需要你提供照片或設定檔等資訊;至於SI也許有其他考量才如此回應你吧!

最後提醒你,要做DB SLB機制的話,你要做好DB同步機制喔!

8
harrier7
iT邦研究生 2 級 ‧ 2010-09-23 17:34:41

一台 web 對上一台 db..這樣資料怎麼同步?還是後端的 db 只供查詢而不會有資料異動?
MS 的解法我不清楚,我只知道 ORACLE 幾 TB 的資料、每秒幾千用戶都可以一台伺服器撐著。
真正的 Active/Active cluster 解決方案,目前就是 ORACLE 的 RAC 架構。
Terradata 的 DB 也是真的 cluster 架構,不過那是 data warehouse 的方案。

mmnnbb iT邦新手 5 級 ‧ 2010-09-24 08:46:11 檢舉

好像很多人都說只有ORACLE的RAC才行,一台 web 對上一台 db..是只有提供查詢用而已,
新增的資料是另外放上去的

我要發表回答

立即登入回答