本節說明已知的高可用性資料庫 (HADB) 問題以及相關的解決方案。
負載平衡器外掛程式運作狀態檢查在背景產生大量連線/中斷連線 (負載)。為了執行運作狀況檢查,runDaemonMonitor 執行緒會針對每個應用程式伺服器偵聽程式執行連線/中斷連線。這樣可能導致 Enterprise Server 上出現連線飽和的狀況。
已為 loadbalancer.xml 檔案開發新屬性 monitor-interval-in-seconds。若已為負載平衡器外掛程式配置數百個偵聽程式,則可利用此屬性在連線/中斷連線事件之間插入暫停。預設暫停值為 0。
在兩個子網路上配置為具有雙網路的 HADB,在 Solaris SPARC 上工作正常。然而,我們發現由於作業系統的問題或同一硬體平台上的網路驅動程式,Solaris x86 與 Linux 平台並不總能正確處理雙網路。這將引起 HADB 的以下問題:
在 Linux 上,在傳送訊息時會封鎖某些 HADB 程序。這將引起 HADB 節點重新啟動和網路分割。
在 Solaris x86 上,網路故障後會出現一些問題,這會阻止切換至其他網路介面。這種情況不會經常發生,因此最好還是具有兩個網路。這些問題中的一部分在 Solaris 10 中得到解決。
不支援幹線。
HADB 在 Windows 2003 上不支援雙網路 (ID 5103186)。
建立新資料庫可能失敗並顯示以下錯誤,表示可用的共用記憶體區段不足:
HADB-E-21054: System resource is unavailable: HADB-S-05512: Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message: Too many open files.
驗證是否已配置共用記憶體,以及配置是否能夠正常工作。尤其,在 Solaris 8 上,檢視檔案 /etc/system,並檢查變數 shmsys: shminfo_shmseg 的值是否至少為每個主機上節點數目的六倍。
當使用 hadbm set 增加裝置或緩衝區大小時,管理系統會在建立資料庫或增加節點時檢查資源可用性,但不會在裝置或主記憶體緩衝區大小變更時檢查是否有足夠的可用資源。
增加任何 devicesize 或 buffersize 配置屬性之前,驗證所有的主機上是否有足夠的可用磁碟/記憶體空間。
不可能在不同主機的不同位置使用相同名稱註冊同一套裝軟體,例如:
hadbm registerpackage test --packagepath=/var/install1 --hosts europa11 Package successfully registered. hadbm registerpackage test --packagepath=/var/install2 --hosts europa12 hadbm:Error 22171: A software package has already been registered with the package name test. |
HADB 不支援資料庫叢集中跨節點的不同路徑。請確定 HADB 伺服器安裝目錄 (--packagepath) 在所有參與的主機上均相同。
當在具有多個網路介面的主機上執行管理代理程式時,如果部分網路介面不在同一個子網路中,則 createdomain 指令可能失敗:
hadbm:Error 22020: The management agents could not establish a domain, please check that the hosts can communicate with UDP multicast. |
管理代理程式將 (如果未另行配置) 使用「第一個」介面進行 UDP 多重播送 (由 java.net.NetworkInterface.getNetworkInterfaces() 的結果定義「第一個」為何)。
最佳解決方案是告訴管理代理程式要使用的子網路 (在配置檔案中設定 ma.server.mainternal.interfaces,例如 ma.server.mainternal.interfaces=10.11.100.0)。另一種方法是,將子網路間的路由器配置為路由多重播送資料封包 (管理代理程式使用多重播送位址 228.8.8.8)。
嘗試管理代理程式的新配置之前,您必須清除管理代理程式儲存庫。停止網域中的所有代理程式,並刪除儲存庫目錄 (透過管理代理程式配置檔案中的 repository.dr.path 所指定) 中的所有檔案與目錄。必須先在所有主機上完成此作業,方可使用新配置檔案重新啟動代理程式。
在 Solaris 10 作業系統上,使用 hadbm 指令啟動、停止或重新配置 HADB 可能會失敗或當機,並顯示下列錯誤之一:
hadbm:Error 22009: The command issued had no progress in the last 300 seconds. HADB-E-21070: The operation did not complete within the time limit, but has not been cancelled and may complete at a later time. |
當讀取/寫入 clu_noman_srv 程序使用的檔案 (nomandevice) 不一致時,可能發生此情況。可透過在 HADB 歷史檔案中尋找以下訊息來偵測此問題:
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 does not respond. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 104.537454 sec. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 did not start. |
由於無法手動再現此問題,因此下列的解決方法尚未經過驗證。但是,對受影響的節點執行此指令應該可以解決此問題。
hadbm restartnode --level=clear nodeno dbname |
請注意,該節點的所有裝置均會被重新初始化。重新初始化之前,您可能必須停止節點。
在安裝了數張 NIC 卡並執行 Solaris 8 的主機上啟動時,如果混插啟用 IPv6 和啟用 IPv4 的卡,則會終止管理代理程式,並出現異常「IPV6_MULTICAST_IF 失敗」。
將環境變數 JAVA_OPTIONS 設定為 -Djava.net.preferIPv4Stack=true,例如:
export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true" |
或者,使用 Solaris 9 或更新的版本,其不會出現此問題。
64 位元版本的 Red Hat Enterprise Linux 3.0 有一個錯誤,使得 clu_trans_srv 程序在執行非同步 I/O 時進入無法中斷的模式。這表示強制結束 -9 不起作用,必須重新啟動作業系統。
使用 32 位元版本的 Red Hat Enterprise Linux 3.0。
將密碼儲存在 hadb 中時,密碼中的大寫字母會被轉換為小寫字母。
不使用含有大寫字母的密碼。
當降級至舊的 HADB 版本時,管理代理程式可能會失敗,並顯示不同錯誤代碼。
雖然可以降級 HADB 資料庫,但是如果已變更了儲存庫物件,則管理代理程式可能無法降級。降級後,必須使用最新版的 HADB 中的管理代理程式。
關於安裝/移除 HADB c 套裝軟體 (Solaris: SUNWhadbc,Linux: sun-hadb-c) 版本 <m.n.u-p>,symlink /opt/SUNWhadb/<m> 自建立後將永遠不會變更。因此,可能存在孤立的 symlink。
如果不使用,請在安裝之前或解除安裝之後刪除 symlink。
在 Solaris 10 上,使用 ma-initd 程序檔停止全域區域中的管理代理程式時,也會停止本機區域中的管理代理程式。
不同時在全域區域和本機區域中安裝管理代理程式。
有時,伺服器上的資源競爭狀態問題可能會導致管理用戶端連線中斷。重新連線後,可能會傳回不正確的錯誤訊息 "hadbm: Error 22184: A password is required to connect to the management agent"。
有時,伺服器上的資源競爭狀態問題可能會導致管理用戶端連線中斷。重新連線後,可能會傳回不正確的錯誤訊息 "hadbm: Error 22184: A password is required to connect to the management agent"。
檢查該伺服器上是否存在資源問題,並採取適當措施 (例如,增加更多資源),然後重試該作業。
使用 Java Enterprise System (以超級使用者的身份) 安裝 HADB 後不允許非超級使用者管理 。
始終以超級使用者身份登入以管理 HADB。
不應將包含 0.0.0.0 之類 IP 位址的具有特殊用途的介面註冊為管理代理程式中的 HADB 節點所使用的有效介面。如果透過使用者使用主機名稱而非 IP 位址發出 hadbm create 指令,在此類介面上設定 HADB 節點,則註冊此類介面可能會導致問題發生。之後節點將無法通訊,並導致 create 指令掛機。
當在包含多重介面的主機上使用 hadbm create 時,請始終使用 DDN 表示法明確指定 IP 位址。
在 Windows 平台上,由於某些配置和負載,作業系統中可能會出現大量的重新組合故障。在具有多於二十個節點的配置平行執行數個表掃描 (select *) 時,曾發生此問題。此問題表現為作業事件頻繁中斷、修復或回復需較長時間才能完成,以及多種系統零件可能會頻繁逾時。
若要修正此問題,可將 Windows 登錄變數 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 設定為大於預設值 100 的值。建議您將此值提高到 0x1000 (4096)。如需更多資訊,請參閱 Microsoft 支援網頁的文章 811003。
Cookie 的路徑如果等於「/」,則與高可用性 Web 應用程式 (使用記憶體中複製做為持續性類型) 部署在「/」以外環境根目錄中的 Cookie 相衝突,使得高可用性 Web 應用程式無法保留任何 HTTP 階段作業狀態。當使用同一個瀏覽器同時存取管理 GUI (在「/」中部署) 和高可用性 Web 應用程式時,通常會發生這種狀況。
使用其他瀏覽器存取在「/」中部署的 Web 應用程式。
負載平衡器必須有 SASL32.DLL 與 ZLIB.DLL 檔案,才能搭配 Windows IIS 6。這些檔案目前不在 as-install/lib 中。
手動將兩個 DLL 檔案複製到 as-install/lib。可以從以下位置下載這兩個檔案︰
http://download.java.net/javaee5/external/OS/aslb/jars/ |
其中 OS 表示所需的平台,它可以是以下任何一個值:
SunOS
SunOS_X86
Linux
WINNT
在全域區域中透過高可用性套裝軟體安裝或解除安裝 Enterprise Server 時,會出現兩個問題︰
HA 套裝軟體會安裝在所有區域中 ,但執行者不一定希望如此。
當解除安裝時,所有區域的 HA、MQ、JDK 等套裝軟體也會遭到移除,執行者也不一定希望如此。
從本機根區域中執行安裝或解除安裝動作時,便不會出現此問題。
從本機根區域而非全域區域執行安裝和解除安裝。
當「/」中部署的高可用性 Web 應用程式使用記憶體中複製做為其持續性類型時,它們無法維護任何 HTTP 階段作業。
將使用記憶體中複製做為其持續性類型的高可用性 Web 應用程式部署到「/」以外的環境根目錄中。如果您要使此類 Web 應用程式位於「/」下,應該將其指定為部署了 Web 應用程式之虛擬伺服器的預設 Web 模組。
在 Solaris 上安裝適用於 Apache 的 Enterprise Server 負載平衡程式時,安裝程式將更新 apachectl 程序檔中的 LD_LIBRARY_PATH。但是,安裝程式不會正確地寫入 /usr/lib/mps 路徑。在 Solaris 上,如果此路徑不在 LD_LIBRARY_PATH 下,Apache 安全性實例便不會啟動。
此問題只在 Solaris 平台上存在。若要解決此問題,請將 /opt/SUNWappserver/appserver/lib/lbplugin/lib 增加至 LD_LIBRARY_PATH。
在 [叢集/實例] 一般頁面上,無論 domain.xml 中儲存何種內容,[啟用負載平衡] 按鈕始終處於啟用狀態。
對於叢集實例,選取 [實例] 標籤,然後在表格下拉式清單中按一下 [靜止] 動作。
對於獨立實例,確定實例正在執行,然後在實例的 [一般] 螢幕上按一下 [靜止] 按鈕。
(僅適用於 Solaris) 在帶有 HADB 的 SPARC Solaris 10 上安裝 Enterprise Server v2.1.1 之後,啟動 Enterprise Server 並嘗試安裝帶有 Registry Server 的 JES 5 UR 1 時可能顯示以下錯誤︰
Dependency Error: Installation can not proceed because the version of HA Session Store 4.4.3 detected on this host is incomplete , and a compatible version is required by Servervice Registry Deployment Support. |
在 Solaris 機器上,不能使用 Enterprise Server IFR 從 JES 5 UR1 安裝 Registry Server。Registry Server 套裝軟體必須使用 pkgadd 指令從以下 JES5 UR1 發行目錄手動安裝︰
path/OS/Products/registry-svr/Packages |
(僅適用於 Internet Explorer 6 與 7) 當嘗試從 Internet Explorer 6 或 7 匯出負載平衡器配置檔案 (loadbalancer.xml) 時,瀏覽器顯示錯誤訊息,表示無法找到 sun-loadbalancer_1_2.dtd DTD 檔案。
若要儲存該檔案,請使用以下解決方案︰
在 Internet Explorer 中的 [負載平衡器] 頁面上,按一下 [匯出]。
將顯示「無法顯示 XML 頁面」訊息。
按一下錯誤訊框,然後在 Internet Explorer 中選擇 [檔案] -> [另存新檔] 。
將 loadbalancer.xml 檔案儲存到您選擇的目錄。