Oracle RAC負載均衡

2021-05-23 08:39:06 字數 2041 閱讀 9054

原文:http://blue-prince.spaces.live.com/blog/cns!12d6e6ccfacf4283!1058.entry

rac的負載均衡

rac的負載均衡主要是指新會話連線到rac資料庫時,如何判定這個新的連線要連到哪個節點進行工作。在rac中,負載均衡分為兩種,一種是基於客戶端連線的,另外一種是基於伺服器端的。

客戶端的負載均衡配置相對簡單,只需要在tnsnames.ora中新增load_balance=on這麼乙個選項即可。比如下面的tns:

rac =

(description =

(address = (protocol = tcp)(host = rac1-vip)(port = 1521))

(address = (protocol = tcp)(host = rac2-vip)(port = 1521))

(load_balance = on)

(failover = on)

(connect_data =

(server = dedicated)

(service_name = rac)))

這樣當客戶端連線rac資料庫時,會隨機在tns裡面挑個監聽位址進行連線。在oracle10g以前,假如有節點宕機或者類似事故時,客戶端可能還是選擇連線到這個節點,這樣會發生較長時間的tcp等待超時。而在10g以後,由於vip和fan的引入,這樣的情況可以得到很大程度的改善。客戶端的負載均衡在通常情況下能夠較好地工作,但是由於連線是在客戶端隨機發起的,這樣客戶端並不知道rac各節點的負荷及連線數情況,有可能負荷大的節點還會源源不斷地增加新的連線,導致rac節點無法均衡工作。

從oracle 10g開始,伺服器端的負載均衡可以根據rac中各節點的負荷及連線數情況,而判定將新的客戶端連線分配到負荷最小的節點上去。rac中各節點的pmon程序每3秒會將各自節點的負荷(包括load、最大load、cpu使用率)及連線數更新到service_register裡面,然後假如節點的負荷有發生變化,將會通知到監聽程式,由監聽程式再決定新的客戶端連線分配至哪個節點。假如rac中乙個節點的監聽失敗了,pmon每一分鐘會去檢查一次是否已經恢復正常。

伺服器端的監聽配置是在各節點的tnsnames.ora裡面新增乙個連線到各個節點監聽的條目,然後再在初始化引數裡面設定remote_listeners這個引數。比如:

listeners_rac =

(address_list =

(address = (protocol = tcp)(host = rac1-vip)(port = 1521))

(address = (protocol = tcp)(host = rac2-vip)(port = 1521))

) alter system set remote_listener = listeners_rac;

這樣伺服器端的load balance便配置完成。

但是有時候由於pmon取節點負荷的延遲,導致客戶端連線可能還是會連線到負荷較大的節點上,這時候便可以在伺服器各節點的listener.ora裡面加入prefer_least_loaded_node=off這麼一行,這樣伺服器端的負載均衡將不再根據節點的負荷來進行分配,而是根據節點的連線數進行分配,達到各個節點連線數比較平衡的效果。

另外乙個不得不說的便是並行操作,假如有個會話連線以後要進行並行操作。由於連線時是按負荷或連線數連線,這樣可能連線時各個節點連線數和負荷等比較平衡,但是這個並行會話啟動多個並行程序以後,那麼這個節點的負荷及連線數就會有可能上公升得比較快。如果在rac中開啟了節點並行,那麼有可能會把並行程序分配到多個節點執行以達到負載均衡的效果。

從oracle 10.2開始,oracle引入了load balance advisor,對負載均衡有了進一步的改進。結合service,可以對不同的service設定不同的負載均衡策略。load balance advisor的配置可以通過dbms_service包對service進行更改而完成。在load balance advisor首先必須設定service負載均衡的目標,目標分為3種:

另外可以額外設定連線的負載均衡:

Oracle RAC 之 負載均衡

負載均衡是指把負載平均分配到集群中的各個節點,從而提高整體效能。oracle rac提供兩種方式實現負載均衡,第一種是純技術手段,即在使用者連線時,根據系統當前的負載情況決定由哪個節點處理使用者請求 第二種是面向業務,人為的把應用切分成很多service,通過某個service過來的連線請求都由某個...

Oracle RAC負載均衡 客戶端配置

附上dba給的客戶端 配置 rac的負載均衡 rac的負載均衡主要是指新會話連線到rac資料庫時,如何判定這個新的連線要連到哪個節點進行工作。在rac中,負載均衡分為兩種,一種是基於客戶端連線的,另外一種是基於伺服器端的。客戶端的負載均衡配置相對簡單,只需要在tnsnames.ora中新增load ...

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...