我正在Windows PC上的虛擬機上的WSO2 APIM 1.10.0上運行測試環境。它被配置爲使用MySQL服務器(我在我的PC上運行的MiraDB)。一切正常。WSO2 SVN同步器與集羣管理器更新同步的巨大滯後
最近我想通過設立3 VM的我的電腦上試試WSO2集羣環境:
- 第一個正在運行的出版商,存儲,KM等(我使用偏移1,所以端口是9444,9764,等)
- 另外兩個各運行網關工人(「遊客」端口8243,映射到「主機」端口8243和8943)。
我還運行VisualSVN服務器他們全部之間同步。
在管理器節點,SVN同步配置爲:
<DeploymentSynchronizer>
<Enabled>true</Enabled>
<AutoCommit>true</AutoCommit>
<AutoCheckout>true</AutoCheckout>
<RepositoryType>svn</RepositoryType>
<SvnUrl>https://10.0.2.2/svn/apigw/</SvnUrl>
<SvnUser>...</SvnUser>
<SvnPassword>...</SvnPassword>
<SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
</DeploymentSynchronizer>
,工人節點上:
<DeploymentSynchronizer>
<Enabled>true</Enabled>
<AutoCommit>false</AutoCommit>
<AutoCheckout>true</AutoCheckout>
<RepositoryType>svn</RepositoryType>
<SvnUrl>https://10.0.2.2/svn/apigw/</SvnUrl>
<SvnUser>...</SvnUser>
<SvnPassword>...</SvnPassword>
<SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
</DeploymentSynchronizer>
AXIS2配置爲集羣與
- Manager節點端口4500
- 端口4100和4上的工作器節點200
我檢查使用telnet和所有的端口都從所有節點訪問。
管理器上的API更改已正確提交給SVN。我檢查了兩個Visual SVN和一個命令行SVN客戶端。例如,添加API ofer3後,修訂#11中創建,並通過在命令行SVN工具看出:
> svn.exe revert .
> svn.exe update . -r HEAD --depth=infinity
Updating '.':
U -1234\synapse-configs\default\api\admin--ofer3_v1.0.0.xml
Updated to revision 11.
但經理節點上進行更改填充到工人面前大約需要10分鐘。
例如,在經理的16:29
TID: [-1234] [] [2017-03-07 16:29:01,156] INFO {org.apache.synapse.rest.API} - Initializing API: admin--ofer2:v1.0.0
TID: [-1234] [] [2017-03-07 16:29:16,104] INFO {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} - Sent [SynchronizeRepositoryRequest{tenantId=-1234, tenantDomain='carbon.super', messageId=64959660-b2e6-4293-ad9c-3b0d68229976}]
趕到客戶在16:34添加ofer2 API,5分鐘後:
TID: [-1234] [] [2017-03-07 16:34:14,134] INFO {org.apache.synapse.rest.API} - Initializing API: admin--ofer2:v1.0.0
TID: [-1234] [] [2017-03-07 16:34:14,134] INFO {org.apache.synapse.deployers.APIDeployer} - API named 'admin--ofer2:v1.0.0' has been deployed from file : /AppMount/wso2worker-1.10.0/repository/deployment/server/synapse-configs/default/api/admin--ofer2_v1.0.0.xml
而且很多時候它甚至還帶更多(9-10分鐘)。
我打開的工人同步調試,期待看到它試圖與SVN倉庫同步每隔幾秒鐘,但只看到它試圖這樣做每隔幾分鐘。
與也試過:
<SynchronizationPeriod>1</SynchronizationPeriod>
但它並沒有改變任何東西。
至於日誌消息
在工人的日誌,我看到:
TID: [-1234] [] [2017-03-07 15:07:31,431] ERROR {org.apache.catalina.loader.WebappClassLoa
der} - The web application [/api/am/publisher/v0.9] appears to have started a TimerThread
named [Timer-8] via the java.util.Timer API but has failed to stop it. To prevent a memor
y leak, the timer (and hence the associated thread) has been forcibly canceled.
但/api/am/publisher/0.9是出版商的休息,這是沒有關係的。
日誌中沒有其他東西看起來很有趣。
最後說明:租戶的更改根本沒有填充。我在管理器上有租戶#1,而且我確實在SVN存儲庫上看到它,但在該工作器上,目錄/ AppMount/wso2/repository/tenants是空的。只有對超碳[-1234]的改變纔會被填充。不知道這是相同的問題,還是別的什麼。
任何想法將不勝感激。
跟進#1,基於從Pubci輸入
- 時間是同步的B/W所有三個節點
- 域是在所有三個節點相同(我離開了默認值)
axis2.xml經理(10.0.2.2是該VM的主機的地址,因此它用作「橋」從一個VM至另一個)
<parameter name="domain">wso2.am.domain</parameter>
<parameter name="membershipScheme">wka</parameter>
<parameter name="localMemberPort">4500</parameter>
<members>
<member><hostName>127.0.0.1</hostName><port>4500</port></member>
<member><hostName>10.0.2.2</hostName><port>4100</port></member>
<member><hostName>10.0.2.2</hostName><port>4200</port></member>
</members>
axis2.xml工作節點1:
<parameter name="domain">wso2.am.domain</parameter>
<parameter name="membershipScheme">wka</parameter>
<parameter name="localMemberPort">4500</parameter>
<members>
<member><hostName>10.0.2.2</hostName><port>4500</port></member>
<member><hostName>127.0.0.1</hostName><port>4100</port></member>
<member><hostName>10.0.2.2</hostName><port>4200</port></member>
</members>
當工人就要到了,它會列出以下成員:
TID: [-1234] [] [2017-03-08 09:40:39,450] INFO {org.wso2.carbon.core.clustering.hazelcast.util.MemberUtils} - Added member: Host:10.0.2.2, Remote Host:null, Port: 4500, HTTP:-1, HTTPS:-1, Domain: null, Sub-domain:null, Active:true
TID: [-1234] [] [2017-03-08 09:40:39,450] INFO {org.wso2.carbon.core.clustering.hazelcast.util.MemberUtils} - Added member: Host:127.0.0.1, Remote Host:null, Port: 4100, HTTP:-1, HTTPS:-1, Domain: null, Sub-domain:null, Active:true
TID: [-1234] [] [2017-03-08 09:40:39,451] INFO {org.wso2.carbon.core.clustering.hazelcast.util.MemberUtils} - Added member: Host:10.0.2.2, Remote Host:null, Port: 4200, HTTP:-1, HTTPS:-1, Domain: null, Sub-domain:null, Active:true
注意「域:空」在日誌中。這個可以嗎?
當工人就要到了,它與SVN倉庫的正確同步:
TID: [-1234] [] [2017-03-08 09:40:51,184] DEBUG {org.wso2.carbon.deployment.synchronizer.subversion.SVNNotifyListener} - revert /AppMount/wso2/repository/deployment/server
TID: [-1234] [] [2017-03-08 09:40:58,139] DEBUG {org.wso2.carbon.deployment.synchronizer.subversion.SVNNotifyListener} - update /AppMount/wso2/repository/deployment/server -r HEAD --depth=infinity
TID: [-1234] [] [2017-03-08 09:40:59,766] DEBUG {org.wso2.carbon.deployment.synchronizer.subversion.SVNNotifyListener} - notify.at
TID: [-1234] [] [2017-03-08 09:41:00,103] DEBUG {org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository} - files were updated to revision number: 15 using SVN Kit
從那以後,每15秒的碳調度任務的說,它運行SVN同步:
TID: [-1234] [] [2017-03-08 09:41:45,213] DEBUG {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} -
Running deployment synchronizer update... tenant : carbon.super
但SVN同步器似乎不會更新server/deployment下的synapse-config中的文件。
您提到這是因爲來自經理的消息沒有達到工人。
我看到經理髮送消息:
TID: [-1234] [] [2017-03-08 08:49:48,121]
INFO {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} -
Sent [SynchronizeRepositoryRequest{tenantId=-1234, tenantDomain='carbon.super',
messageId=a99ff1fc-58d8-44dd-8804-491216ae1a7c}]
我應該讓哪些調試,看看消息在工人到達?
我更新根據您輸入的一些跟進的原始郵件。參見「跟進1」。 –
請重新檢查您的羣集配置。在成員列表中,我可以使用127.0.0.1。基本上,無論在成員名單中提到的IP地址是否提供給其他成員。他們使用該IP地址連接到其他節點。所以127.0.0.1不能使用。 LocalMemberPort應該是它自己的羣集端口。對於經理來說,它是4500,其他工作者節點應該是4100和4200.您是否看到任何日誌中的「成員加入」消息。如果節點正確聚集,你應該在兩個節點中的任何一箇中看到。 – Pubci
域名無效。您看到的配置是您配置的內容。這並不意味着節點已正確聚類。成員加入日誌應該在那裏。 – Pubci