WSO2 APIM 不会更新群集设置中已发布的 API



Setup:两个指向同一MYSQL的WSO2 APIM。这两个 WSO2 实例位于 LB 后面,发布者会话是粘性的。API 会话不粘滞。我已经发布了API"/public/1.0.0/abc",它之前指向"/api/app/v1/xyz"。我更新了已发布的 API,现在指向"/api/app/v1/abc"。

问题:现在,更新后,当通过 curl 访问已发布的 API 时,有时会返回预期结果,但有时会引发 403 错误。似乎一个实例中的更新没有传播到另一个实例?以下步骤使其工作意味着停机时间,我们正在努力避免停机时间。

完成此操作的唯一方法是执行以下操作:

1. Shutdown the wso2am app on the working instance (Instance1)
2. Update the API again on WSO2 publisher so Instance2 picks up the change
3. Start back the Instance1 wso2am app

WSO2 实例 1 记录调用的工作位置:

==> /usr/lib64/wso2/wso2am/2.6.0/repository/logs/http_access_.log <==
- <private-subnet-ip> - - [04/Jun/2019:20:02:00 +0000] "GET /services/Version HTTP/1.1" - - "-" "ELB-HealthChecker/2.0"
<my-ip> <private-subnet-ip> - - [04/Jun/2019:20:02:22 +0000] "GET /public/1.0.0/abc HTTP/1.1" - - "-" "curl/7.54.0"
<my-ip> <private-subnet-ip> - - [04/Jun/2019:20:02:22 +0000] "GET /api/app/v1/abc HTTP/1.1" - - "-" "Synapse-PT-HttpComponents-NIO"
- <private-subnet-ip>  - [04/Jun/2019:20:02:00 +0000] "- - " 200 - "-" "-"
- <private-subnet-ip>  - [04/Jun/2019:20:02:22 +0000] "- - " 200 - "-" "-"
- <private-subnet-ip>  - [04/Jun/2019:20:02:22 +0000] "- - " 200 - "-" "-"

WSO2 实例 2 记录调用不起作用的位置:

==> /usr/lib64/wso2/wso2am/2.6.0/repository/logs/wso2carbon.log <==
TID: [-1234] [] [2019-06-04 20:01:24,511]  WARN {org.apache.synapse.rest.API} -  Trying to access API : admin--PublicAPI on restricted transport chanel [https] {org.apache.synapse.rest.API}
==> /usr/lib64/wso2/wso2am/2.6.0/repository/logs/wso2-apigw-errors.log <==
2019-06-04 20:01:24,511 [-] [PassThroughMessageProcessor-123]  WARN API Trying to access API : admin--PublicAPI on restricted transport chanel [https]
==> /usr/lib64/wso2/wso2am/2.6.0/repository/logs/wso2carbon.log <==
TID: [-1234] [] [2019-06-04 20:01:24,511]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /public/1.0.0/abc {org.apache.synapse.mediators.builtin.LogMediator}
==> /usr/lib64/wso2/wso2am/2.6.0/repository/logs/wso2-apigw-service.log <==
2019-06-04 20:01:24,511 [-] [PassThroughMessageProcessor-123]  INFO __SynapseService STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /public/1.0.0/abc

如果您尚未在两台服务器之间共享 API 项目,则会发生这种情况。只有一台服务器具有更新的项目。发布 API 时,它会创建一个存储在服务器文件系统中的 Synapse(API( 工件。该位置是SERVER_HOME/存储库/部署/服务器/synapse/default/api 位置。如果运行多个实例,则应具有在服务器之间同步这些项目的机制。有几种选择。

  1. 对节点使用共享文件系统
  2. Rsync 选项 - 可以始终指向节点 1 并发布 API。从节点 1 可以将数据同步到节点 2。在 api-manager.xml 中,APIGateway serverURL 应在两个节点中更改为节点 1。

最新更新