WSO2 APIM 4.1 HA实例启动时Event-Hub返回404错误求助
WSO2 API Manager 4.1双节点高可用集群启动异常排查
问题描述
部署WSO2 API Manager 4.1双节点高可用集群后,其中一个实例启动时多数情况下会触发错误,导致所有路由至该节点的API请求返回404资源未找到。偶尔重启该实例后,问题会自行消失。
错误日志
2022-10-20T14:47:46,224 [-] [Thread-3] WARN SSLUtilBase 别名[luxtrustglobalrootca]、DN为[CN=LuxTrust Global Root, O=LuxTrust s.a., C=LU]的可信证书已过期(NotAfter: Wed Mar 17 17:51:37 SGT 2021),但仍会接受由该证书签名的证书 2022-10-20T14:47:48,483 [-] [Thread-38] ERROR PolicyUtil 获取限流策略失败 org.wso2.carbon.apimgt.throttle.policy.deployer.exception.ThrottlePolicyDeployerException: Event-Hub状态码: 404 at org.wso2.carbon.apimgt.throttle.policy.deployer.PolicyRetriever.getPolicies(PolicyRetriever.java:203) ~[org.wso2.carbon.apimgt.throttle.policy.deployer_9.20.74.jar:?] at org.wso2.carbon.apimgt.throttle.policy.deployer.PolicyRetriever.getAllSubscriptionPolicies(PolicyRetriever.java:87) ~[org.wso2.carbon.apimgt.throttle.policy.deployer_9.20.74.jar:?] at org.wso2.carbon.apimgt.throttle.policy.deployer.utils.PolicyUtil.deployAllPolicies(PolicyUtil.java:159) ~[org.wso2.carbon.apimgt.throttle.policy.deployer_9.20.74.jar:?] at org.wso2.carbon.apimgt.throttle.policy.deployer.utils.ThrottlePolicyStartupListener.run(ThrottlePolicyStartupListener.java:76) ~[org.wso2.carbon.apimgt.throttle.policy.deployer_9.20.74.jar:?] at java.lang.Thread.run(Thread.java:834) [?:?] 2022-10-20T14:47:48,496 [-] [pool-155-thread-6] ERROR SubscriptionDataLoaderImpl 无法获取租户域carbon.super的订阅,收到状态码404 2022-10-20T14:47:48,496 [-] [Thread-3] ERROR APILoggerManager 无法获取租户域carbon.super的订阅 2022-10-20T14:47:48,500 [-] [pool-155-thread-7] ERROR SubscriptionDataLoaderImpl 无法获取租户域carbon.super的订阅,收到状态码404 2022-10-20T14:47:48,501 [-] [pool-155-thread-2] ERROR SubscriptionDataLoaderImpl 无法获取租户域carbon.super的订阅,收到状态码404 2022-10-20T14:47:48,501 [-] [pool-155-thread-1] ERROR SubscriptionDataLoaderImpl 无法获取租户域carbon.super的订阅,收到状态码404 2022-10-20T14:47:48,508 [-] [pool-155-thread-3] ERROR SubscriptionDataLoaderImpl 无法获取租户域carbon.super的订阅,收到状态码404 2022-10-20T14:47:48,508 [-] [pool-155-thread-6] WARN SubscriptionDataLoaderImpl 从远程端点获取/subscription-policies失败:获取订阅出错,15秒后重试 2022-10-20T14:47:48,508 [-] [pool-155-thread-3] WARN SubscriptionDataLoaderImpl 从远程端点获取/applications失败:获取订阅出错,15秒后重试 2022-10-20T14:47:48,508 [-] [Thread-3] ERROR APILoggerManager 调用内部服务API出错 org.wso2.carbon.apimgt.api.APIManagementException: 从/api-logging-configs获取订阅出错 at org.wso2.carbon.apimgt.gateway.APILoggerManager.invokeService_aroundBody10(APILoggerManager.java:140) ~[org.wso2.carbon.apimgt.gateway_9.20.74.jar:?] at org.wso2.carbon.apimgt.gateway.APILoggerManager.invokeService(APILoggerManager.java:98) ~[org.wso2.carbon.apimgt.gateway_9.20.74.jar:?] at org.wso2.carbon.apimgt.gateway.APILoggerManager.initializeAPILoggerList_aroundBody0(APILoggerManager.java:58) ~[org.wso2.carbon.apimgt.gateway_9.20.74.jar:?] at org.wso2.carbon.apimgt.gateway.APILoggerManager.initializeAPILoggerList(APILoggerManager.java:56) ~[org.wso2.carbon.apimgt.gateway_9.20.74.jar:?]
可能原因及解决方案
1. Event-Hub服务未就绪或节点通信异常
核心错误Event-Hub status code is : 404表明,问题节点启动时尝试连接Event-Hub(集群内其他APIM节点或独立Event Hub组件),但对方未完成初始化,或网络/配置问题导致无法访问。
- 解决措施:
- 调整节点启动顺序,确保Event-Hub依赖的流量管理器、密钥管理器等服务先完全启动,再启动问题节点。
- 检查
deployment.toml中apim.event_hub.url配置,确认指向正确的集群节点地址,且节点间网络连通(端口开放、无防火墙拦截)。 - 在启动脚本中添加延迟,给依赖服务预留足够的初始化时间。
2. 过期证书引发内部通信不稳定
日志中存在过期证书警告,虽提示仍接受签名证书,但可能在特定场景下导致SSL握手异常,影响内部服务调用。
- 解决措施:
- 从
<APIM_HOME>/repository/resources/security/client-truststore.jks中移除过期的luxtrustglobalrootca证书。 - 替换为有效根证书,或更新WSO2官方提供的信任库文件。
- 从
3. 集群数据同步延迟
双节点HA集群启动时,需从共享数据库或其他节点同步订阅、限流策略等数据,若同步不及时会触发404。偶尔重启成功是因为此时数据已同步完成。
- 解决措施:
- 检查共享数据库连接配置,确保两个节点均可正常访问,且数据库性能无延迟。
- 开启APIM集群数据同步,确认
deployment.toml中[apim.sync]配置正确(enable = true,同步节点地址无误)。
4. 启动线程竞争导致初始化失败
日志显示多个线程同时尝试获取订阅数据,线程竞争可能导致部分请求失败,偶尔重启成功是因为线程执行顺序不同。
- 解决措施:
- 调整组件启动优先级,确保依赖服务先完成初始化,可修改
ThrottlePolicyStartupListener的启动顺序配置。 - 增加初始化重试等待时间,避免短时间内重复请求加重服务负载。
- 调整组件启动优先级,确保依赖服务先完成初始化,可修改
内容的提问来源于stack exchange,提问作者Sam Xu
相关产品推荐
相关产品推荐

