Liberty 集合体故障诊断

在对 Liberty 进行故障诊断时,可能会遇到一些常见问题。这些问题通常与集合体控制器、成员或主机系统的配置有关。浏览问题列表以了解如何解决这些问题。

对于其他问题的修订,请参阅运行时环境已知问题和限制

涉及使用 REST 连接器的 CLI、Jython 或 MBean 连接的问题

CWWKX0217E: 当前未向给定 object_name 注册 MBean
消息:
错误:CWWKX0217E: 当前未向给定 ObjectName 'WebSphere:feature=collectiveController,type=CollectiveRegistration,name=CollectiveRegistration' 注册 MBean
原因:

MBean 可能尚不可用。请在服务器日志中检查 MBean 是否报告已就绪。

集合体存储库可能未在运行。请检查集合体存储库是否已启动。

如果目标是集合体控制器,请验证副本集是否处于活动状态。如果大部分集合体控制器副本均未启动,那么将会显示此消息。启动剩余的副本。

服务器配置可能未完成。请确保已正确地配置服务器。

CWWKX0215E: 提供的用户名或密码存在问题。
消息:
错误:CWWKX0215E: 所提供用户名或密码存在问题。服务器以代码 401 和消息“未授权”作为响应
原因:

用户名和密码可能不正确。请确保用户名和密码对于目标服务器来说是正确的。

可能未向用户授予管理员角色。请确保向用户授予管理角色,或者选择不同的用户。

目标服务器的安全性配置可能未完成。请确保已定义安全性配置,并且安全服务报告已就绪 (CWWKS0008I)。

CWWKX8057I: 集合体成员无法建立与任何一个集合体控制器的连接。已配置控制器:[host_name:port_number]
消息:
CWWKX8057I: 集合体成员无法建立与任何一个集合体控制器的连接。已配置控制器:[test.ibm.com:8889]
原因:

服务器可能未在运行。请验证集合体控制器和成员服务器是否正在运行。

如果服务器正在运行,请确定控制器或成员的 server.xml 中的 SSL 配置最近是否更改。如果成员中出现此 CWWKX8057I 消息,那么控制器更有可能存在错误 SSL 配置。如果控制器中出现此消息,那么成员更有可能存在错误 SSL 配置。配置未使用 quickStartSecurity 元素时,可能发生此问题。

要修正 SSL 配置问题,请检查 server.xml 文件中的以下项:

  1. 确保已配置管理员角色。映射 Liberty 的管理员角色quickStartSecurity 元素设置与基本注册表或 LDAP 注册表的对应设置进行比较。
  2. 根据需要查看并更新 SSL 配置。
    1. 检查所有缺省 SSL 配置。查找 <sslDefault sslRef="LDAPSSLSettings"></sslDefault> 以了解 server.xml 文件是否包含缺省配置及是否需要将一个 SSL 配置指定为缺省项。

      如果 <sslDefault sslRef="LDAPSSLSettings"></sslDefault> 配置不是必需的,请移除它以使该配置可使用两个或更多 SSL 配置(例如,一个用于集合体,一个用于 LDAP)。

      如果缺省配置是必需的,请保留 <sslDefault sslRef="LDAPSSLSettings"></sslDefault> 行并继续完成步骤 b 和 c,以添加客户机认证并将证书导入至缺省 SSL 配置。请参阅在 Liberty 中配置 LDAP 用户注册表

    2. 启用客户机认证。使用 clientAuthenticationSupported="true 对服务器配置 HTTPS 端口。

      例如,对于使用 LDAP SSL 缺省值来实现安全性的集合体控制器,其 ssl 元素中必须具有 clientAuthenticationSupported="true 才能与集合体成员配合工作。

    3. 导入必需证书。可使用 keytool 导入证书。缺省信任库必须包含来自 collectiveTrust.jks 的证书。
背景信息:

缺省情况下,<sslDefault sslRef> 指向 defaultSSLSettings。将集合体控制器配置中的 <sslDefault sslRef> 更改为指向 defaultSSLSettings 以外的对象(例如,<sslDefault sslRef="LDAPSSLSettings"/>)会导致 CWWKX8057I 错误,除非该配置具有 clientAuthenticationSupported="true" 并且 Liberty 服务器信任具有客户机证书的所有 SSL 同级。

HTTPS 的 SSL 设置必须信任这些集合体证书。将 <sslDefault sslRef> 更改为指向 defaultSSLSettings 以外的对象并且没有 clientAuthenticationSupported="true" 会导致 defaultSSLSettings 与其 HTTPS 配置取消绑定。集合体 SSL 设置包含在缺省配置中。

有关更多信息,请参阅映射 Liberty 的管理员角色在 Liberty 中配置 LDAP 用户注册表配置 httpEndpoint 以使用非缺省 SSL 配置

错误:连接被拒绝:连接
消息:
错误:连接被拒绝:连接
原因:

主机和端口可能不正确。请确保主机和端口对于目标服务器来说是正确的。

服务器可能未运行。请确保服务器正在运行。

java.net.SocketException 错误
消息:
java.net.SocketException:java.security.NoSuchAlgorithmException:构造实现时出错(算法:缺省,提供者:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext)(可能其他...)
原因:

信任库和信任库密码可能不正确。请确保信任库路径、信任库密码和信任库内容是正确的。

涉及 startstop 命令的问题

远程启动或停止服务器导致“找不到 Java”错误
消息:

远程启动或停止服务器(例如,使用 ClusterManager.startClusterServerCommands.startServer)时遇到了以下错误:

{stderr=java: javaCmd 14: serverCmd 32: ./server 873: FSUM7351 not found, stdout=, returnCode=127}
解决方案:

成员服务器需要用于指定 JAVA_HOME 变量的 server.env 文件。

CTGRI0000E: 无法使用所提供授权凭证建立与目标机器的连接。
消息:
CTGRI0000E: 无法使用所提供授权凭证建立与目标机器的连接。
原因:
使用用户名或密码进行认证失败:
  • 确保用户名和密码在目标服务器的 server.xml <hostAuthConfig>元素中是正确的。
  • 使用集合体 updateHost 命令来更新主机认证配置。
使用 SSH 密钥进行认证失败:
  • 检查许可权:
    • ~/.ssh 应该是 0700
    • ~/.ssh/authorized_keys 应该是 0600
  • ~/.ssh 及其所有子代都必须是正确的(如果是使用 SELinux)。请使用 restorecon -R 来修正许可权。
CTGRI0001E: 应用程序无法建立与 host_name 的连接。
消息:
{异常消息:对成员 webp1a.ibm.com,/P1A/WebSphere_LP/usr,memberA1 执行 stopCluster 操作时捕获到 ConnectException:java.net.ConnectException:
CTGRI0001E 应用程序无法建立与 webp1a.ibm.com 的连接,异常:java.net.ConnectException:CTGRI0001E 应用程序无法建立与 webp1a.ibm.com 的连接。}
原因:

使用 ClusterManager.startClusterServerCommands.startServer 之类的命令远程启动或停止服务器可能导致错误。

消息 CTGRI0001E 与消息 CTGRI0026E 可指示对主机建立了太多并行 SSH 连接。可能的原因是:
  • 自动控制,例如,缩放控制器
  • 对单个主机上的多个服务器运行 ClusterManager.startClusterServerCommands.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) 个未认证连接,那么 sshd(8) 拒绝连接尝试的可能性为 rate/100 (30%)。可能性以线性方式增加,如果未认证连接数达到 full (60),那么所有连接尝试被拒绝。以下样本 SSH 配置文件设置指定 MaxStartups 及可缓解连接问题的其他设置:
ClientAliveInterval 60
ClientAliveCountMax 3
MaxSessions 100
MaxStartups 100:30:200
LoginGraceTime 180
有关安全 Shell (SSH) 协议及更改 /etc/ssh/sshd_config 设置的更多信息,请参阅设置 RXA 以执行 Liberty 集合体操作
CTGRI0026E 无法在指定超时时间间隔内完成与 host_name 的连接。
消息:
CTGRI0026E 无法在指定超时时间间隔内完成与 webp1a.ibm.com 的连接。
原因:

与主机的并行 SSH 连接过多可能导致此错误。

解决方案:

请参阅消息 CTGRI0001E 的解决方案。

CWWKX6027E: 集合体控制器初始化未成功。主机 host_name 和端口 port_number 的套接字绑定未成功。该端口可能已在使用中,或者主机与系统配置不匹配。
消息:
CWWKX6027E: 集合体控制器初始化未成功。主机 * 和端口 10,010 的套接字绑定不成功。该端口可能已在使用中,或者主机与系统配置不匹配。
解决方案:

确保集合体控制器配置中指定的主机值正确。例如,如果集合体控制器驻留在 myhost.com 上,请检查控制器的 server.xml 文件以确保主机值正确:

<variable name="defaultHostName" value="myhost.com" />

示例消息对主机显示星号 (*),即表明主机值可能未导致此问题。此问题的可能原因为端口冲突。

确保消息中的端口号已未在使用中。在集合体控制器所在的主机的命令行中,运行 netstat -a 以查看端口号列表及连接状态。如果该端口号已在使用中,那么对于端口 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 操作导致异常:对成员 localhost,C:/wlp,member1 执行 stopCluster 操作时捕获到 ConnectException:java.net.ConnectException:
CWWKX7204E: 无法使用所提供凭证连接至主机 localhost。
解决方案:

请确保已正确设置集群成员认证信息并且满足所有远程执行和访问 (RXA) 要求。许多 RXA 操作需要访问标准用户帐户通常不可访问的资源。请参阅设置 RXA 以执行 Liberty 集合体操作

涉及集合体管理的问题

集合体 remove 命令未从集合体移除自动扩展的集群成员
消息:
未在位置 ${wlp.install.dir}/Cluster1.zip/wlp/usr 中找到指定服务器 Cluster1
未移除任何集合体资源。
未找到指定 userDir ${wlp.install.dir}/Cluster1.zip/wlp/usr
解决方案:

标准实践是,不手动从集合体移除自动扩展的集群成员。扩展控制器自主地管理集合体。请参阅 配置可供应集群以实现 Liberty 弹性

但是,如果需要移除扩展控制器添加到集合体的集群成员,那么可设置 WLP_USER_DIRJAVA_HOME 环境变量,然后运行集合体 remove 命令以从集合体移除集群成员。

  1. WLP_USER_DIR 设置为要移除的自动扩展集群成员的位置。
    export WLP_USER_DIR=/wlp.usr/defaultStackGroup.Cluster1/d16d298c-ea7f-4782-bef6-2e54fb80de20/Cluster1.zip/wlp/usr
  2. 如果无法从自动扩展的集群成员位置运行 Java,请设置 JAVA_HOME 以便可运行 Liberty 命令以移除此集群成员。
    export JAVA_HOME=/wlp.jre/jre.18.zip/
  3. 停止集群成员。
    /wlp/wlp.855.zip/wlp/bin/server stop Cluster1
  4. 运行 collective remove 命令以从集合体移除集群成员。
    /wlp/wlp.855.zip/wlp/bin/collective remove Cluster1 --host=controllerHost --port=9443 --user=admin --password=password

    请参阅 从 Liberty 集合体移除成员


用于指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_collective_trouble
文件名:cwlp_collective_trouble.html