我正在Windows PC上的VM上运行WSO2 APIM 1.10.0上的测试环境。它被配置为使用MySQL服务器(我在我的PC上运行的MiraDB)。一切都运转正常。
最近我想通过在我的PC上设置3个VM来尝试WSO2集群环境:
我也在运行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配置为使用
进行群集我使用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
添加ofer2 APITID: [-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}]
5分钟后16:34到达客户端:
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是发布者的REST,与之无关。
日志中的其他内容似乎都没有用。
最后注意事项:租户的变更根本没有填充。我在管理器上有租户#1,我确实在SVN存储库上看到了它,但是在worker上,目录/ AppMount / wso2 / repository / tenants是空的。仅填充了对超级碳[-1234]的更改。不确定这是同一个问题还是其他问题。
任何想法都将受到高度赞赏。
根据Pubci 的输入
跟进#1manager的axis2.xml(10.0.2.2是VM主机的地址,因此它作为从一个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>
工作节点1的axis2.xml:
<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
请注意日志中的“Domain:null”。这可以吗?
当工作人员出现时,它与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同步器似乎没有更新服务器/部署下的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}]
我应该启用哪个调试来查看消息是否到达工作人员?
答案 0 :(得分:1)
要进行故障排除,您可以查看以下内容。
发布API后,群集消息将发送到工作节点。然后只有工作节点才能从SVN获得更新。
关于您在管理器节点中收到的错误消息,请检查api-manager.xml中的AuthManager配置。看起来您已将值设置为admin / services。该值应该是密钥管理器节点主机名。在您的情况下,它应该是管理器节点的主机名。
答案 1 :(得分:0)
感谢Pubci的意见,我发现了这个问题。
a)在manager和workers的axis2.xml中,localMemberHost必须是10.0.2.2(这是从VM到其他主机的网关)而不是127.0.0.1:
<parameter name="localMemberHost">10.0.2.2</parameter>
b)同样在axis2.xml中我启用了groupManagement,它已被禁用。在管理器节点中:
<groupManagement enable="true">
<applicationDomain name="wso2.apim.domain"
description="APIM group"
agent="org.wso2.carbon.core.clustering.hazelcast.HazelcastGroupManagementAgent"
subDomain="mgt"
port="2233"/>
</groupManagement>
在工作节点中:
<groupManagement enable="true">
<applicationDomain name="wso2.apim.domain"
description="APIM group"
agent="org.wso2.carbon.core.clustering.hazelcast.HazelcastGroupManagementAgent"
subDomain="worker"
port="2233"/>
</groupManagement>
(我使用端口2233而不是2222,这是默认设置,因为端口2222在我的群集中用于其他目的)。
现在经理我看到了:
INFO {org.wso2.carbon.core.clustering.hazelcast.wka.WKABasedMembershipScheme} -
Member joined [6bf6ae47-bea4-4bc4-beec-9140a626781b]: /10.0.2.2:4200
在工作人员中,在API更改之后,我确实看到了消息,也是针对super.carbon以外的租户:
INFO {org.wso2.carbon.core.clustering.hazelcast.HazelcastClusterMessageListener} -
Received ClusteringMessage: SynchronizeRepositoryRequest{tenantId=1, tenantDomain='0000s7.com', messageId=a573eeef-46d7-4a2b-bfc9-362296bb60d4}
任何在群集上遇到SVN问题的人的提示:
调试选项可以帮助您:
log4j.logger.org.wso2.carbon.core.deployment=DEBUG
log4j.logger.org.wso2.carbon.deployment.synchronizer=DEBUG