Liberty 群體疑難排解
在進行 Liberty 設定檔疑難排解時,可能會發生一些常見的問題。這些問題通常與群體控制器、成員或主機系統的配置有關。請瀏覽問題清單,瞭解如何解決問題。
- 涉及連線的問題
- 涉及 start 和 stop 指令的問題
如需其他問題的修正程式,請參閱 執行時期環境已知的問題和限制。
使用 REST 連接器的 CLI、Jython 或 MBean 連線所涉及的問題
- CWWKX0217E: 目前沒有 MBean 向給定 object_name 登錄
- 訊息:
原因:Error: CWWKX0217E: No MBean is currently registered with the given ObjectName 'WebSphere:feature=collectiveController,type=CollectiveRegistration,name=CollectiveRegistration'
可能是這個 MBean 還無法使用。 請檢查伺服器日誌,以查看這個 MBean 是否已報告為備妥。
可能是啟動群體儲存庫時發生問題。 請檢查群體儲存庫是否已啟動。
如果目標是群體控制器,請確認抄本集在作用中。 如果大部分群體控制器抄本都沒有啟動,就會看到這個訊息。 請啟動其餘抄本。
伺服器配置可能不完整。 請確定已適當配置伺服器。
- CWWKX0215E: 所提供的使用者名稱或密碼有問題。
- 訊息:
原因:錯誤:CWWKX0215E: 所提供的使用者名稱或密碼有問題。伺服器以 401 代碼做出回應,訊息是「未獲授權」
使用者名稱和密碼可能不正確。 請確定目標伺服器的使用者名稱和密碼正確。
使用者可能未獲授與「管理者」角色。 請確定使用者已獲授與「管理者」角色,或選擇另一位使用者。
目標伺服器的安全配置可能不完整。 請確定已定義安全配置,且安全服務報告為已備妥 (CWWKS0008I)。
CWWKX8057I: 群體成員無法建立對任何「群體控制器」的連線。所配置的控制器:[host_name:port_number]
- 訊息:
原因:CWWKX8057I: 群體成員無法建立對任何「群體控制器」的連線。所配置的控制器:[test.ibm.com:8889]
伺服器可能不在執行中。請驗證群體控制器和成員伺服器正在執行。
如果伺服器正在執行,請判斷控制器或成員之 server.xml 中的 SSL 配置最近是否已變更。如果此 CWWKX8057I 訊息發生在成員中,很可能是控制器的 SSL 配置不正確。如果此 CWWKX8057I 訊息發生在控制器中,很可能是成員的 SSL 配置不正確。當配置沒有使用 quickStartSecurity 元素時,就可能發生問題。
如果要修正 SSL 配置問題,請在 server.xml 檔中檢查下列:
依預設,<sslDefault sslRef> 會指向 defaultSSLSettings。如果將群體控制器配置中的 <sslDefault sslRef> 變更成不是指向 defaultSSLSettings,例如,改成指向 <sslDefault sslRef="LDAPSSLSettings"/>,除非配置具有 clientAuthenticationSupported="true",且 Liberty 伺服器信任具有用戶端憑證的任何 SSL 同層級,否則會發生 CWWKX8057I 錯誤。
HTTPS 的 SSL 設定必須信任群體憑證。如果將 <sslDefault sslRef> 變更成不是指向 defaultSSLSettings,且又沒有指定 clientAuthenticationSupported="true",則可能解除 defaultSSLSettings 與其 HTTPS 配置的連結。群體 SSL 設定是預設配置的一部分。
如需相關資訊,請參閱對映 Liberty 設定檔的管理者角色、配置 Liberty 設定檔的 LDAP 使用者登錄和配置 httpEndpoint 使用非預設 SSL 配置。
- 錯誤:連線遭到拒絕:connect
- 訊息:
原因:錯誤:連線遭到拒絕:connect
主機和埠可能不正確。請確定目標伺服器的主機和埠正確。
伺服器可能不在執行中。 請確定伺服器在執行中。
- java.net.SocketException 錯誤
- 訊息:
原因:java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)(possibly others...)
信任儲存庫和信任儲存庫密碼可能不正確。 請確定信任儲存庫路徑、信任儲存庫密碼及信任儲存庫的內容正確。
涉及 start 和 stop 指令的問題
- 從遠端啟動或停止伺服器時,造成「找不到 Java」錯誤
- 訊息:
從遠端啟動或停止伺服器(例如,使用 ClusterManager.startCluster 或 ServerCommands.startServer)發生下列錯誤:
解決方案:{stderr=java: javaCmd 14: serverCmd 32: ./server 873: FSUM7351 not found, stdout=,returnCode=127}
成員伺服器需要 server.env 檔,且其中指定 JAVA_HOME 變數。
- CTGRI0000E: 使用所提供的授權認證無法建立指向目標機器的連線。
- 訊息:
原因:CTGRI0000E 使用所提供的授權認證無法建立指向目標機器的連線。
使用使用者名稱或密碼鑑別失敗:- 確定在目標伺服器的 server.xml <hostAuthConfig> 元素中,使用者名稱和密碼正確。
- 利用群體 updateHost 指令來更新主機鑑別配置。
利用 ssh 金鑰鑑別失敗: - CTGRI0001E: 應用程式無法建立指向 host_name 的連線
- 訊息:
原因:{ExceptionMessage=ConnectException caught while performing stopCluster operation on member webp1a.ibm.com,/P1A/WebSphere_LP/usr,memberA1: java.net.ConnectException: CTGRI0001E 應用程式無法建立指向 webp1a.ibm.com 的連線,Exception=java.net.ConnectException: CTGRI0001E 應用程式無法建立指向 webp1a.ibm.com 的連線。}
使用 ClusterManager.startCluster 或 ServerCommands.startServer 等之類的指令,從遠端啟動或停止伺服器時,可能造成錯誤。
訊息 CTGRI0001E 以及訊息 CTGRI0026E 可能指出,同時有太多 SSH 連線指向主機。可能原因:
- 自主,例如:調整控制器
- 在單一主機中的多部伺服器上執行 ClusterManager.startCluster、ServerCommands.startServer 或其他系統管理指令,但這已超出未經鑑別的 SSH 常駐程式並行連線數上限。
解決方案:
請確認 RPC 機制(例如 SSH)已啟動。另請確認所配置的設定(例如:主機和埠)正確。
如果您的環境使用 SSH,請變更 SSH 配置檔中的設定。SSH 配置的 MaxStartups 設定預設為 10 條未經鑑別的並行連線。變更 SSH 配置檔 /etc/ssh/sshd_config 中的 MaxStartups 設定,可以解決問題。MaxStartups 設定指定未經鑑別的 SSH 常駐程式並行連線數上限。額外的連線會除去,直到鑑別成功或 LoginGraceTime 使連線到期為止。您可以指定三個以冒號區隔的值 start:rate:full(例如 10:30:60),來啟用隨機提早除去。如果目前有 start (10) 條未經鑑別的連線,當可能性是 rate/100 (30%),sshd(8) 會拒絕連線嘗試。可能性呈線性增加,一旦未經鑑別的連線數抵達 full (60),就會拒絕所有的連線嘗試。下列範例 SSH 配置檔設定指定 MaxStartups 與其他設定,可紓緩連線問題:
如需 Secure Shell (SSH) 通訊協定,以及變更 /etc/ssh/sshd_config 設定的相關資訊,請參閱設定 Liberty 群體作業的 RXA。ClientAliveInterval 60 ClientAliveCountMax 3 MaxSessions 100 MaxStartups 100:30:200 LoginGraceTime 180
CTGRI0026E 在指定的逾時間隔內無法完成指向 host_name 的連線。
訊息:
原因:CTGRI0026E 在指定的逾時間隔內無法完成指向 webp1a.ibm.com 的連線。
如果同時有太多 SSH 連線指向主機,可能造成這個錯誤。
解決方案:請參閱訊息 CTGRI0001E 的解決方案。
- CWWKX6027E: 群體控制器起始設定不成功。主機 host_name 和埠 port_number 的 Socket 連結不成功。該埠可能已在使用中,或是主機不符合系統配置。
- 訊息:
解決方案:CWWKX6027E: 群體控制器起始設定不成功。主機 * 和埠 10,010 的 Socket 連結不成功。該埠可能已在使用中,或是主機不符合系統配置。
請確定群體控制器配置中指定的主機值正確。舉例來說,如果群體控制器位於 myhost.com 上,請檢查控制器的 server.xml 檔,確定主機值正確:
<variable name="defaultHostName" value="myhost.com" />
範例訊息顯示星號 (*) 來代表主機,這是暗示主機值可能未造成問題。可能的問題原因是埠衝突。
請確定訊息中的埠號不在使用中。請在群體控制器所在主機的指令行上執行 netstat -a,以查看埠號清單和連線狀態。如果該埠號為使用中,清單會包含一個項目,以下列 port 10,010 為例:
TCP 127.0.0.1:10010 myhost:0 LISTENING
如果要修正這項埠衝突,在編輯器中開啟群體控制器的 server.xml 檔,新增一個陳述式來將 replicaPort 設為電腦上不在使用中的埠號。下列任何陳述式都可以設定 replicaPort 值:
- <collectiveController replicaPort="10011"/>
- <collectiveController replicaHost="myhost.com" replicaPort="10011"/>
- <collectiveController replicaPort="${prop.controller_1.replica}"/>
在 bootstrap.properties 檔或 <variable name="name" value="value"/> XML 標籤中,為埠號設定變數,在這個陳述式為例,其名稱是 prop.controller_1.replica,不過您可以選擇任何的變數名稱。
- CWWKX7204E: 使用所提供的認證無法連接主機 host_name。
- 訊息:
解決方案:localhost,C:/wlp,member1 stop operation resulted in an Exception: ConnectException caught while performing stopCluster operation on member localhost,C:/wlp,member1: java.net.ConnectException: CWWKX7204E: 使用所提供的認證無法連接主機 localhost。
請確定已正確設定叢集成員鑑別資訊,且符合所有 Remote Execution and Access (RXA) 需求。 許多 RXA 作業都需要存取標準使用者帳戶通常無法存取的資源。 如需相關資訊,請參閱設定 Liberty 群體作業的 RXA。