為使用 DB2 資料庫的應用程式配置用戶端重新遞送

您可以使用用戶端重新遞送特性,將 DB2® 資料庫的企業應用程式配置成可從遺失的通訊回復,且應用程式可以繼續運作,並將中斷情況降至最低。重新遞送是持續作業支援的核心,但是必須要有一個被視為應用程式伺服器連線的替代位置,才有可能進行重新遞送。

開始之前

這項作業假設:

  • 您應用程式所連接的 DB2 資料來源正在執行:
    • DB2 for z/OS® 10.1 版或更新版本或
    • DB2 Database for Linux、UNIX 和 Windows 9.7 版或更新版本
  • 已使用備援設定來配置 DB2 資料庫,或能夠將 DB2 伺服器交由待命節點失效接手。

關於這項作業

您可以將用戶端重新遞送用於 DB2,以便在主要資料庫伺服器連線失敗時,提供替代伺服器的相關資訊。

在適用於 DB2 的 Java™ Common Connectivity (JCC) Java 資料庫連線功能 (JDBC) 驅動程式與 DB2 伺服器建立起始連線時,只要 DB2 伺服器有啟用用戶端重新遞送功能,此驅動程式即支援這項功能,而不需在用戶端上進行任何配置。當 JCC JDBC 驅動程式連接 DB2 伺服器時,只要該伺服器已配置一或多部替代伺服器,主要伺服器會將替代伺服器的相關資訊傳送給 JCC JDBC 驅動程式。如果主要伺服器連線失敗,JCC JDBC 驅動程式能夠將連線重新遞送至替代伺服器。不過,如果應用程式伺服器程序當機,替代伺服器資訊會遺失,用戶端必須重新連接主要伺服器。如果用戶端無法與主要伺服器建立起始連線,用戶端就對替代伺服器一無所知,而無法重新遞送。

如果要克服這個問題,您可以利用替代伺服器名稱替代埠號欄位,或利用 clientRerouteAlternateServerName 和 clientRerouteAlternatePortNumber 資料來源自訂內容,來配置應用程式伺服器中的 DB2 資料來源,以便即使在嘗試起始連線時,也能夠支援用戶端重新遞送。 如果 JDBC 驅動程式無法連接主要 DB2 伺服器,進行用戶端重新遞送所需的資訊也已存在,則 JDBC 驅動程式就能將連線重新遞送至替代伺服器。

小心: 資料來源自訂內容 enableClientAffinitiesList 會變更 clientRerouteAlternateServerName 和 clientRerouteAlternatePortNumber 內容的語意。

在重新遞送連線時,會將 JCC JDBC 驅動程式連接替代 DB2 伺服器,且替代伺服器會將其本身替代伺服器的相關資訊傳送給 JCC JDBC 驅動程式。之後,如果替代 DB2 伺服器無法使用,JCC JDBC 驅動程式即具有再次重新遞送連線所需的資訊。原本是替代伺服器的伺服器現在就成了主要伺服器,且會建立新的替代伺服器。不過,JCC JDBC 驅動程式不再保留主要與替代伺服器的這個新狀態。如果應用程式伺服器失敗並重新啟動,JCC JDBC 驅動程式必須從原始伺服器配置啟動,並嘗試連接原本視為主要伺服器的伺服器。

您可以在下列 DB2 可配置環境內使用自動化用戶端重新遞送特性:

程序

  1. server.xml 檔中,使用下列內容來定義您的 DB2 資料來源:
    • clientRerouteAlternateServerName
      • 有效值類型:
        • 網域名稱;例如:www.ibm.com
        • IP 位址(IPv4 和 IPv6);例如:23.72.11.219
      • 多值格式:
        • 以逗點區隔;例如:host1, host2, host3
        • 以空格區隔;例如:host1 host2 host3
      • 順序的有效值:
        • 所提供的主機名稱順序,就是 JCC JDBC 驅動程式嘗試尋找下一部可連接的伺服器時所使用的順序。
    • clientRerouteAlternatePortNumber
      • 有效值類型:
        • 代表埠號的整數;例如:50000
      • 多值格式:
        • 以逗點區隔;例如:port1, port2, port3
        • 以空格區隔;例如:port1 port2 port3
      • 順序的有效值:
        • 所提供的埠順序必須符合其相關聯伺服器的順序。
  2. (選用)您可以新增下列內容(擇一或兩者):
    • retryIntervalForClientReroute

      此內容定義 JCC JDBC 驅動程式等待嘗試建立連線的間隔秒數。

      如果沒有指派任何值,會採用預設行為。如需進一步瞭解,請參閱 JDBC 和 SQL 支援

    • maxRetriesForClientReroute

      這個內容定義 JCC JDBC 驅動程式決定改試下一部伺服器之前,重試連接該伺服器的次數。必須設定 RetryIntervalForClientReroute 內容,才會使用這個內容。

      如果沒有指派任何值,會採用預設行為。如需進一步瞭解,請參閱 JDBC 和 SQL 支援

範例

<dataSource id="DefaultDataSource"jndiName="jdbc/db2">
     <properties.db2.jcc
        databaseName="sampleDatabase"
        driverType="4"
        serverName="host"
        portNumber="50000"
        clientRerouteAlternateServerName="host01, host02, host03"
        clientRerouteAlternatePortNumber="50000, 50005, 50000"
        retryIntervalForClientReroute="2"
        maxRetriesForClientReroute="3" />
 ...
</dataSource>
註: 請確定指定給埠和主機兩者的項目數相等。否則,會顯示警告,且不會啟用用戶端重新遞送。

指示主題類型的圖示 作業主題

檔名:twlp_config_reroute_db2.html