繁体   English   中英

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

[英]WSO2 APIM doesnt update a published API in a cluster setup

设置:两个WSO2 APIM指向相同的MYSQL。 这两个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 Instance1记录呼叫的工作原理:

==> /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 Instance2记录呼叫不起作用的地方:

==> /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 / repository / deployment / server / synapse / default / api位置。 如果您正在运行多个实例,则应该有一种机制来在服务器之间同步这些工件。 有几种选择。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM