我已经使用基于SVN的部署同步设置了分布式,集群的WSO2 API Manager 1.6.0环境。 SVN Jar将在启动时执行,并为SVN存储库添加任何新增功能。
TID: [0] [AM] [2014-10-30 14:52:57,790] INFO {org.apache.synapse.rest.API} - Initializing API: admin--TestAPI_Phil:v0.1 {org.apache.synapse.rest.API}
TID: [0] [AM] [2014-10-30 14:52:57,798] INFO {org.apache.synapse.deployers.APIDeployer} - API named 'admin--TestAPI_Phil:v0.1' has been deployed from file : /opt/wso2am-1.6.0/repository/deployment/server/synapse-configs/default/api/admin--TestAPI_Phil_v0.1.xml {org.apache.synapse.deployers.APIDeployer}
然而,几分钟后,svnClientBundle jar执行其工作,它会进入休眠状态,并且在更新时不会重新激活,即使Store / Publisher表示网关已更新:
TID: [0] [AM] [2014-10-30 15:21:06,965] INFO {org.apache.synapse.rest.API} - Initializing API: admin--TestAPI-2:v0.1 {org.apache.synapse.rest.API}
TID: [0] [AM] [2014-10-30 15:21:20,115] INFO {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} - Sent [SynchronizeRepositoryRequest{tenantId=-1234, tenantDomain='carbon.super', messageId=a3e77858-985d-4616-9b50-d6c9b47c0bf2}] {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask}
网关不会选择被推出的新API。我如何让WSO2意识到有更新或脚本使用svnClientBundle-1.0.0.jar定期检查SVN存储库?我应该制作一个BeanShell脚本吗?
带有完整日志输出的GitHub Gists位于:https://gist.github.com/predatorian3/024193918330af2140bb
我也跟着他的文件:
https://docs.wso2.com/display/AM140/SVN-Based+Deployment+Synchronizer
https://docs.wso2.com/display/CLUSTER420/SVN-based+Deployment+Synchronizer
https://docs.wso2.com/display/CLUSTER420/Clustering+API+Manager#ClusteringAPIManager-Installingandconfiguringthedatabases
基于SVN的Deployment Sync和Clustering API管理器的文档冲突并且说svnClientBundle-1.0.0.jar需要位于不同的位置。
答案 0 :(得分:1)
正如您从文档[1]中看到的那样,必须始终将svnClientBundle-1.0.0.jar复制到<PRODUCT_HOME>/repository/components/dropins
目录。
Deployment Synchronizer依赖于群集消息,因此您需要确保产品群集正常运行。如您所见,服务器将在服务器启动时检出工件。之后,只有在服务器收到群集消息时才会更新工件。
产品集群应与[2]中提到的域相同。我们建议使用wka会员制。
请先启动您的wka成员,然后启动其他服务器。您必须在wka成员的日志中看到“加入”消息。如果您没有看到,<AM_HOME>/repository/conf/axis2/axis2.xml
中的群集配置一定有问题。请确保在群集配置中使用IP地址。
我在日志中看不到加入消息。请检查您的配置。
请参考文档以集群网关[3]。由于您没有使用ELB,因此您必须避免将ELB详细信息添加到axis2.xml。
例如,如果您有两个网关节点,则以下是axis2.xml中所需的配置
网关1:
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
<parameter name="membershipScheme">wka</parameter>
<parameter name="domain">wso2.am.domain</parameter>
<parameter name="localMemberHost">192.168.10.1</parameter>
<parameter name="localMemberPort">4100</parameter>
<parameter name="properties">
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
<property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
</parameter>
<members>
</members>
</clustering>
网关2:
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
<parameter name="membershipScheme">wka</parameter>
<parameter name="domain">wso2.am.domain</parameter>
<parameter name="localMemberHost">192.168.10.2</parameter>
<parameter name="localMemberPort">4101</parameter>
<parameter name="properties">
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
<property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
</parameter>
<members>
<member>
<hostName>192.168.10.1</hostName>
<port>4100</port>
</member>
</members>
</clustering>
我希望这会有所帮助。
[1] https://docs.wso2.com/display/CLUSTER420/SVN-based+Deployment+Synchronizer
[3] https://docs.wso2.com/display/CLUSTER420/Clustering+the+Gateway