網上搜集的一些關於oraclerac負載均衡的資料[轉帖]
雖然在Oracle的立場上,總是建議客戶能夠更好地規劃自己的應用,在有其它負載平衡方法的時候,儘量不要依賴於Oracle的Load Balance方法,但是往往在給客戶配置完Oracle RAC資料庫以後,客戶都會要求要測試負載平衡(Load Balance)和TAF(Transparent Application Failover),並且將這兩個測試作為RAC是否安裝成功的標準。
[@more@]
這是一件很無奈的事情,像把旁枝末節看作了主要功能,甚至有些買櫝還珠的感覺,但是畢竟這是客戶,更瞭解Oracle Load Balance(後文用LB表示),才可以更好滿足客戶需求。
本文不牽涉TAF(可以參看老熊關於TAF的系列文章PartI,PartII,PartIII),如何在Oracle10g之後版本中在伺服器端 service層面設定TAF,可以參看Metalink Note:404644.1。
對於LB,在Oracle10g之前有Client端和Server端兩種,在Oracle10g之後又推出了Server端Service層面的LB配置,本文也不涉及Service層面的LB。
在Oracle9i,10g,11g版本中都適用的LB配置分為以下兩種。
(1) Client Side Connect Time Load Balance
(2) Server SideListenerConnection Load Balance (此處的Listener用以跟10g之後的Server Side Service Load Balance區分開)
1. Client Side Connect Time Load Balance
既然是Client端的LB,那麼也就是不需要在資料庫伺服器端配置任何引數,完全由客戶端機器上的tnsnames.ora檔案中對於TNS的配置來決定,實際上也就是LOAD_BALANCE引數。
看一個例子,下面這樣的TNS配置就是啟用了客戶端的LB。
CLIENT_LOADBALANCE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac_lb)
)
)
(LOAD_BALANCE = yes)指示SQLNet隨機選擇ADDRESS_LIST列表中的任意一個監聽,將客戶端請求傳送到此監聽上,透過這種方法來實現負載平衡。如果 (LOAD_BALANCE = no)那麼將會按照ADDRESS_LIST列表中的順序選擇監聽,只要這個監聽能夠正常連線那麼就使用該監聽。
因此在某些負載平衡的解決方案中會使用(LOAD_BALANCE = no)但是在多個客戶端或者應用伺服器端配置順序不同的ADDRESS_LIST,以此來實現人為的負載平衡。
如果在TNS配置時使用的是ADDRESS_LIST語法,那麼必須顯示設定LOAD_BALANCE = yes,預設值LOAD_BALANCE = no。
2. Server Side Listener Connection Load Balance
要實現server side load balance要求監聽能夠知道在整個RAC環境中的各節點負載情況,節點負載情況是由PMON程式來定期更新的,而要讓PMON程式能夠通知其它節點自己節點的負載情況則需要設定資料庫初始化引數REMOTE_LISTENER。
在RAC資料庫伺服器端的每個節點上的tnsnames.ora檔案中設定如下的TNS名稱。
LISTENERS_RAC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST=node2-vip)(PORT = 1521))
)
)
然後設定REMOTE_LISTENER引數值為LISTENERS_RAC。
sql>ALTERsystemSETREMOTE_LISTENER='LISTENERS_RAC'scope=BOTH;當某個例項的監聽收到客戶端連線請求,將會統籌考慮RAC環境中各個節點的負載情況,然後將該連線傳遞到具有最小負載的節點的最小負載例項上。
在10gR2版本之後,節點和例項的負載計算透過lbscore來完成,而lbscore則由兩個動態值決定:”goodness” 和 “delta”,這兩個值均由PMON來定期更新,計算公式如下:
Lbscore = Goodness (Received from PMON update)
Delta = New Delta (Received from PMON update)
在PMON定期更新的間隔,如果有新連線進入,那麼lbscore的計算公式是:
Lbscore = Lbscore(previous) + Listener Delta
可以透過新增監聽的trace(TRACE_LEVEL_LISTENER = 16)來獲取lbscore的產生情況,更詳細的文件請參看Metalink Note: 263599.1。
關於Failover,多說一句,其實Failover也有兩種,一種是Connect Time Failover,由客戶端TNS配置的(failover=on)引數控制,另外一種是TAF,由客戶端TNS配置中的failover_mode引數控制。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1039062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WEBLOGIC連線OracleRAC的負載均衡測試(轉載)WebOracle負載
- 關於負載均衡的一些認識負載
- 關於負載均衡的簡單總結負載
- 關於 apache + tomcat 的負載均衡問題ApacheTomcat負載
- 基於軟體實現網站負載均衡(1) (轉)網站負載
- windows第七層負載均衡 基於IIS的ARR負載均衡詳解Windows負載
- 關於負載均衡的一切:總結與思考負載
- 網上關於碰撞的資料
- 關於用Java做叢集和負載均衡的問題Java負載
- Kubernetes上的負載均衡詳解負載
- 負載均衡的迷惑負載
- 關於WebSphere中配置OracleRAC資料來源的問題WebOracle
- TKE基於彈性網路卡直連Pod的網路負載均衡負載
- 負載均衡的種類負載
- 4.8 負載均衡的概念負載
- 負載均衡原理的解析負載
- 負載均衡的那些事?負載
- 配置IIS的負載均衡負載
- [zt] RAC的負載均衡負載
- gRPC的負載均衡RPC負載
- 大型網站架構系列:負載均衡詳解(上)網站架構負載
- 資料庫的讀寫分離與負載均衡策略資料庫負載
- Docker Swarm :gRPC 基於 DNS 的負載均衡DockerSwarmRPCDNS負載
- 負載均衡負載
- SQL Server資料庫實現負載均衡SQLServer資料庫負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- Amoeba實現MySQL的負載均衡、故障轉移MySql負載
- Turbolinux中實現負載均衡的方法(轉)Linux負載
- windows伺服器第四層負載均衡_基於NLB負載均衡詳解Windows伺服器負載
- 流量引導:網路世界的負載均衡解密負載解密
- Azure上七層負載均衡APP Gateway負載APPGateway
- OceanBase 負載均衡的魅力負載
- 負載均衡的演算法負載演算法
- WebSocket連線的負載均衡Web負載
- 兩種負載均衡的配置。負載
- 網上搜集的線上編輯執行程式碼行程
- 大型網站--負載均衡架構網站負載架構