WebLogic里面有多池的概念,其中High availability的含義是這樣的,假設(shè)有PoolA和PoolB,正常的情況下,只有一個(gè)PoolA起作用,其poolB是stand-by,當(dāng)起作用的那個(gè)poolA出現(xiàn)故障,則會(huì)被WLS標(biāo)記為disable,并將請(qǐng)求轉(zhuǎn)發(fā)到另外一個(gè)poolB上,并且定時(shí)測(cè)試被標(biāo)記為disable的poolA,如果重新連接成功后,則將請(qǐng)求再切換回PoolA上,PoolB繼續(xù)stand-by.

而上周和一個(gè)客戶討論這個(gè)問題,客戶的做法是這樣的:

后臺(tái)是Oracle的RAC數(shù)據(jù)庫(kù),他配置了一個(gè)多池,有2個(gè)Pool,PoolA主要連RAC的A實(shí)例,PoolB主要連RAC的B實(shí)例.其實(shí)他的PoolA和PoolB都是用了RAC格式的JDBC的寫法,后面是一個(gè)主機(jī)列表,PoolA將A實(shí)例的IP寫在了前面,PoolB將B實(shí)例的IP寫在了前面,JDBC的算法是failover=yes load_banlance=no,這樣每一個(gè)Pool將請(qǐng)求都發(fā)送到自己的第一個(gè)host的Oracle的實(shí)例上,在第一個(gè)host的Oracle實(shí)例出現(xiàn)故障時(shí)候切換到另外一個(gè)host的Oracle實(shí)例上.

PoolA和PoolB的JDBC的寫法如下,注意failover=yes和load_banlance=yes,這樣寫的作用是當(dāng)請(qǐng)求來的時(shí)候都轉(zhuǎn)發(fā)給第一個(gè)host,只有出現(xiàn)第一個(gè)host有問題,才會(huì)將請(qǐng)求發(fā)送到第二個(gè)host:

WLS JDBC URL 的配置如下:

jdbc:oracle:thin:@(description=(address_list= (address=(host=172.18.137.231) (protocol=tcp)(port=1521))(address=(host=172.18.137.230)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes))(connect_data=(service_name= slrac.bea.com)))

配置的多池的算法如果是High Availability的話,那么壓力將始終壓到一個(gè)Pool上面,另外一個(gè)Pool處于stand-by的狀態(tài),除非處理請(qǐng)求的Pool出現(xiàn)故障.客戶的監(jiān)控情況也是如此,發(fā)現(xiàn)壓力都?jí)涸诹艘粋€(gè)Oracle的實(shí)例上.

如果多池的算法是Load Banlance的話,那么壓力將平均分配到2個(gè)Pool上面.如果想使用多池的high availability的算法,則不要設(shè)置test的重試次數(shù),如果設(shè)置了,則會(huì)出錯(cuò)拋出異常.

為了能使被標(biāo)記為disable的PoolA能夠恢復(fù)正常的連接,則需要設(shè)置HealthCheckFrequencySeconds的值在config.xml里面,該值在console上面沒有.

另外還要能夠使用TestConnectionsOnReserve.

多池就是在JDBC的連接池上層又加了一層請(qǐng)求分流的算法層.

關(guān)于Orale的RAC的JDBC的配置請(qǐng)參見我的另一篇筆記:

http://rabbit8.bokee.com/4962735.html

以上是我的理解,如有錯(cuò)誤,請(qǐng)指正,因?yàn)槟愕闹刚龑?huì)讓我理解更深刻,謝謝!

本文參考了http://www.bea.com.cn/support_pattern/Investigating_JDBC_MultiPool_Issues_Pattern.html


 

當(dāng)安裝完了Oracle的RAC后,我的Oracle就是一個(gè)雙機(jī)的集群了,支持load banlance 和failover,但是數(shù)據(jù)源里面的JDBC的URL需要一種不同的格式:

1)BEA的例子:http://www.bea.com.cn/support_pattern/Oracle_RAC_Pattern.html

WLS JDBC URL 的配置如下:

jdbc:oracle:thin:@(description=(address_list= (address=(host=172.18.137.231) (protocol=tcp)(port=1521))(address=(host=172.18.137.230)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes))(connect_data=(service_name= slrac.bea.com)))

2)IBM 的例子:http://publib.boulder.ibm.com/infocenter/wpdoc/v510/index.jsp?topic=/com.ibm.wp.ent.doc/wpf/plan_oracle_rac.html

 jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_NODE_HOSTNAME)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=SECONDARY_NODE_HOSTNAME)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DATABASE_SERVICENAME)))

我的試驗(yàn)的配置:

jdbc:oracle:thin:@(description=(address_list= (address=(host=p570_b) (protocol=tcp)(port=1521))(address=(host=p570_a)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes))(connect_data=(service_name= orcl)))

      我一開始使用的是IP地址,但發(fā)現(xiàn)使用IP后,第一下測(cè)試連接成功,第二下失敗,第三下成功,第四下失敗,就是這個(gè)規(guī)律,原因是RAC自己就有負(fù)載均衡的功能(load banlance),它會(huì)自動(dòng)的分配負(fù)載(workload),而第二次的請(qǐng)求據(jù)說返回的不是IP,所以在我的IP的列表里面沒有,自然找不到(這是另一個(gè)工程師解釋給我的,不過我不太相信,因?yàn)锽EA的文檔中使用的就是IP,但我又不知道為什么)。

      后來聽從那個(gè)工程師建議改成主機(jī)名后,一切OK,但如果改主機(jī)名需要更改Windows下的WINNT/system32/drivers/etc/hosts文件,將主機(jī)名和IP對(duì)應(yīng)起來。

      我的RAC的數(shù)據(jù)源的配置就OK了,51后還要做DB2的雙機(jī)互備的集群,還不知道該怎么做,DataSource的JDBC的URL怎么配置呢,不知道是不是和這個(gè)一樣呢?

     TNS的配置:

你的TNS的名字=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = p570a)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = p570b)(PORT = 1521))
    )
    (load_blance=yes)
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
      (failover_mode=
              (type=select)
              (method=basic))
    )
  )

      明天上午驗(yàn)收安裝的AIX的HA和RAC,如果順利的話,下午就可以回北京了,這次安裝AIX和RAC都不順利,那個(gè)安裝RAC的工程師這2天被蹂躪夠戧,不斷的出現(xiàn)新的問題,一開始AIX的版本的補(bǔ)丁不對(duì),結(jié)果IBM的那個(gè)工程師早早的跑了,后來找到了原因,后來又是安裝Oracle的Cluster層的軟件有一個(gè)NODE沒有啟動(dòng),后來知道了那個(gè)NODE是否正常啟動(dòng)沒有關(guān)系,今天又是建立RAW和導(dǎo)入數(shù)據(jù)出現(xiàn)了些問題,還好都搞定了,晚上我又測(cè)試了一下集群的數(shù)據(jù)源,明天希望上午可以正式的測(cè)試完畢。


 


 

 



柴油發(fā)電機(jī)
發(fā)電機(jī)
柴油機(jī)
柴油發(fā)電機(jī)
13636374743(上海)
13291526067(嘉興)