淺談RAC中的負載均衡

snowdba發表於2015-09-05
一次和同事聊RAC中的負載均衡,聊到伺服器端的分發機制時大家都說不清,再此總結一下以備後用。

載均衡Load Balance
  • 客戶端load balance
  • 伺服器端load balance
客戶端load balance
客戶端發起應用請求時,首先透過tnsnames.ora中隨機選擇一個vip地址,然後透過該vip地址發起請求。這個vip地址實際上就是連線高可用的核心。當客戶端訪問的例項當機了,甚至vip已經漂移到其它存活節點,這次連線就失敗了。通知服務(FAN)會立刻通知客戶端採用其它的vip重新連線,客戶端選擇tnsnames.ora中的其它vip繼續嘗試,直到連線成功為止。如果不採用vip方式連線,而直接使用IP地址連線不行麼?答案是行,但是連線失敗後需要30秒才能通知到客戶端,30秒的代價太大了,完全失去了高可用的意義。

客戶端的load balance不會判斷當前伺服器的負載,它只是隨機分發。包括11gR2推出的SCAN也不會判斷伺服器端負載,它按照註冊的3個vip地址輪詢分發。伺服器端的負載是如何判斷的呢,我們繼續往下看。

伺服器端load balance
伺服器端的負載均衡是監聽器remote listener和local listener來合作完成的。監聽器將當前負載資訊在LBA(Load Balance Advisor)中註冊,並且可以根據服務時間和吞吐量來設定負載型別。如果是Web服務可以配置服務時間作為負載均衡的條件,如果是查詢密集型操作可以配置吞吐量型別。

總結一下上面的描述,客戶端透過vip來實現連線高可用,伺服器端透過remote listener,local listener和LBA的配置實現load balance。

在load balance中有兩個總要的概念:
FAN:Fast Application Notification
快速通知,主動推送機制。既通知叢集之間的節點,也通知客戶端端到叢集。

LBALoad Balance Advisor
負載均衡建議器

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1791285/,如需轉載,請註明出處,否則將追究法律責任。

相關文章