weblogic多資料來源故障轉移問題

jaymarco發表於2020-09-22

1、 問題背景

曾經在某電信SOA專案碰到一個多資料來源failover切換問題,其實每月深度巡檢SOA套件都發現OSB和SOA環境所使用的資料來源存在連線失敗或連線超時問題,甚至無法進行failover切換。 OSB和SOA這四個domain採用的是多資料來源配置,一旦其中一個RAC中的節點出現了故障,無法進行failover切換,最後會導致大量流程呼叫失敗,流程因此受阻,直接影響到了日常業務辦理。

系統環境資訊:

作業系統:   HP-UX B.11.31
 JDK版本:  JDK1.7.0.03

中介軟體版本:  weblogic10.3.6.0.12

          SOA11.1.1.6.0

          OSB11.1.1.6.0

叢集:是


2、問題分析過程

  在巡檢日誌檔案中發現大量關於資料來源的錯誤及警告資訊,主要分佈在 SOA/OSB 涉及的四套 domain 服務日誌檔案 AdminServer.log domain server 等日誌中。但每天都會頻繁產生中介軟體資料來源無法連線 RAC1 節點資料庫異常問題,客戶也反饋業務時常不可用,流程呼叫失敗,影響到了業務。

以下是 weblogic 日誌中篩選出來的報錯資訊:

  同時也在weblogic控制檯監視到了OSB和SOA這幾個domain例項的資料來源,RAC1對應的資料來源存在大量連線失敗。可想期間中介軟體資料來源與資料庫之間出現斷連現象。問題期間存在網路不穩定或是資料庫異常問題。最後導致RAC1資料來源連線不上資料庫節點例項,但連線rac0的資料來源連線都正常。後面有向客戶提出網路是否穩定?資料庫是否異常?當時客戶安排了網路工程師和DBA一起來排查問題。網路工程師排查了網路沒有出現丟包和網路不穩定問題。DBA排查發現RAC1節點確實有不穩定現象。想想不對啊,雖然資料庫不穩定,但我們中介軟體是多資料來源可以實時failover切換啊,為什麼不行了。現在丟擲資料庫問題不管,我們本身中介軟體的多資料來源故障轉移機制是否存在問題,針對這種情況我們查了SOA和weblogic很多服務日誌和翻閱了很多文件,查到是多資料來源的機制出現問題了。


3  、 問題原因


  由於客戶的資料庫其中某個節點不穩定,而SOA和OSB服務採用多資料來源配置,無法進行資料來源failover切換。針對WebLogic10.3.4 後資料來源配置官方建議對於RAC 僅支援 多資料來源/GridLink 資料來源配置,而多資料來源是ORACLE 10G RAC以下版本常用的方法,而使用多資料來源功能對於容錯和負載均衡相對有限。目前應用端使用多資料來源來連線ORACLE 11G RAC可能會存在failover區域性切換不穩定的問題。因此我們提出建議客戶使用GridLink資料來源。


4、最佳化建議


1、我們提出讓客戶將原來的多資料來源改造成GridLink資料來源,以防資料庫RAC節點異常,中介軟體資料來源自動切換正常資料庫節點。整個改造過程發了半個月左右,將原來SOA和OSB所用到的多資料來源替換成了GridLink資料來源,資料庫連線地址統一用scan ip和service_name。切換成功後,經過幾輪業務高峰期觀察,資料庫斷連問題消除了。以後資料庫有異常都能夠正常切換,對業務無影響。

2、解決資料庫異常問題。


透過這次問題我們引入了GridLink元件解決了資料來源failover切換問題,接下來簡單介紹一下GridLink資料來源是一個什麼好東西。


5、GridLink 資料來源介紹

  GridLink 是WebLogic10.3.4新推出的資料來源型別,引入Jdbc 11g version驅動,全面支援Oracle 11G RAC AWM的特性,提供了針對Oracle RAC資料庫與WLS之間的連線功能。GridLink透過Oracle通知服務(ONS)來獲取OracleRAC例項的狀態變化。WLS可以透過Oracle RAC靈活的資料庫服務設計來滿足其需求,也可以由資料庫服務的增加而擴充套件而不需要關注RAC 叢集中的物理結構變化。

 Gridlink 相對以前的多資料來源來說更有效率,因為它很大程度上藉助了資料庫的功能。它使用了Oracle的ONS(OracleNotification Service)的特徵.


Weblogic10.3.4 以前的版本是沒有這個功能的,請關注下圖:


6 GridLink 資料來源特性

   接下來我們介紹一下GridLink資料來源它有哪些特性      

1.簡化和統一了對RAC連線配置的模組。

2.支援Fast Connection Filover(FCF)。

3.支援Runtime Connection Load Balancing(RCLB)。

4.支援Single  Client Access Name(SCAN)。

5.OracleRAC停機的正常處理。

7 GridLink 資料來源優勢

  WebLogic 10.3.4 中,為了增強對RAC的支援,Oracle推出了Gridlink資料來源,取代原先的多資料來源。原來的多資料來源的工作原理是為每臺RAC的結點配置一個資料來源,然後把所有的這些資料來源聚合起來配置一個多資料來源。雖然多資料來源也提供容錯和負載均衡,但是它的功能相對才是有限。

1 配置簡易

只需要配置一個Gridlink 資料來源,它就會處理與後臺的RAC資料庫的通訊。相對多資料來源管理員的工作量減少很多。

如果配置了Oracle的SCAN服務就更簡單了,RAC結點的新增刪除都是自動完成,因為對Gridlink資料來源來說,它只知道一個SCAN地址就好了。就好象一個域名一樣,你不需要知道後面用了多少IP來實現。而多資料來源需要配置多個VIP地址和資料庫instnace。

2)高效容錯

使用ONS,Gridlink資料來源可以實時的捕捉到RAC端的資訊。如果有資料庫節點出錯,Gridlink資料來源很快將與其對應的連線標識為不可用。

多資料來源需要開啟測試連線功能,當應用向一個資料來源申請一個連線的時候,WebLogic需要先測試這個連線再返回。如果測試失敗,WebLogic會重建一個連線。如果重建再失敗,資料來源就會被標識成dead,然後WebLogic自動Failover到下一個多資料來源裡面的資料來源。在使用連線中需要不斷主動測試連線,保證獲取正常可用連線,但是這樣會帶來的資源開銷。

3)實時負載

Gridlink 資料來源相對來說更有效率,因為它很大程度上藉助了資料庫的功能。它使用了Oracle的ONS(OracleNotification Service)的特徵。Gridlink資料來源可以知道哪些RAC節點很忙,哪些很閒,於是它可以有效的將哪些來自空閒RAC的連線分配給應用請求,實現實時負載均衡。

多資料來源如果一個應用開啟了多個連線,那麼根據輪詢的原則,這多個連線可能會來自多個不同的資料庫節點。這個實際上有效能上的影響。

4)沉穩應對RAC節點的關閉

如果是有計劃關閉RAC節點,Gridlink資料來源會等當前活動的事務結束再關閉連線。新的連線請求將被髮送到其他的RAC節點。

如果是突發的RAC節點關閉,Gridlink資料來源也會沉著的將當前的事務rollback,然後將新的連線請求傳送到其他的RAC節點。

5)全域性事務唯一

Gridlink資料來源在一個事務的第一個連線建立後會將該事務的所有後續連線請求傳送到同一個RAC節點上。這樣可以減少後臺同步處理,提高全域性事務的執行效率

多資料來源的輪詢策略會造成同一個事務的多個連線被髮送到不同的RAC節點上。


8、GridLink 資料來源參考文件

http://www.oracle.com/technetwork/middleware/weblogic/wls-jdbc-gridlink-howto-333331.html


有需要的朋友可以關注我的公眾號,文章每日一更


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

相關文章