簡體   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