Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WSO2 SVN同步器与群集上的管理器更新同步的巨大延迟_Wso2_Wso2 Am_Wso2carbon - Fatal编程技术网

WSO2 SVN同步器与群集上的管理器更新同步的巨大延迟

WSO2 SVN同步器与群集上的管理器更新同步的巨大延迟,wso2,wso2-am,wso2carbon,Wso2,Wso2 Am,Wso2carbon,我正在Windows PC上的VM上运行WSO2 APIM 1.10.0测试环境。它配置为使用MySQL服务器(我也在PC上运行MiraDB)。一切正常 最近,我想通过在我的电脑上设置3个虚拟机来尝试WSO2群集环境: 第一个是运行publisher、store、KM等(我使用的是offset 1,所以端口是94449764等) 另外两个分别运行网关工作端口(“来宾”端口8243,映射到“主机”端口8243和8943) 我还运行VisualSVN服务器来在它们之间进行同步 在manager节

我正在Windows PC上的VM上运行WSO2 APIM 1.10.0测试环境。它配置为使用MySQL服务器(我也在PC上运行MiraDB)。一切正常

最近,我想通过在我的电脑上设置3个虚拟机来尝试WSO2群集环境:

  • 第一个是运行publisher、store、KM等(我使用的是offset 1,所以端口是94449764等)
  • 另外两个分别运行网关工作端口(“来宾”端口8243,映射到“主机”端口8243和8943)
我还运行VisualSVN服务器来在它们之间进行同步

在manager节点上,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>
但在manager节点上所做的更改填充到worker之前,需要大约10分钟的时间

例如,在16:29在manager中添加OFER2API

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到达客户处,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分钟)

我打开了worker上的同步调试器,希望看到它每隔几秒钟就尝试与SVN存储库同步,但只看到它每隔几分钟尝试一次

还尝试了:

<SynchronizationPeriod>1</SynchronizationPeriod>
但是/api/am/publisher/0.9是publisher的REST,这是不相关的

日志中似乎没有其他有趣的内容

最后注意:对租户的更改根本不填充。我在manager上有tenant#1,我在SVN存储库上看到了它,但在worker上的目录/AppMount/wso2/repository/tenants为空。仅填充对超级碳[-1234]的更改。不确定是同一个问题还是其他问题

任何想法都将受到高度赞赏


后续行动#1,基于Pubci的输入


  • 时间与所有三个节点同步
  • 域在所有三个节点中都是相同的(我保留了默认值)
manager的axis2.xml(10.0.2.2是虚拟机的主机地址,因此它充当从一个虚拟机到另一个虚拟机的“桥梁”)

请注意日志中的“域:null”。这样行吗

当worker启动时,它将与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
从那时起,carbon scheduler tasks每15秒运行一次SVN sync:

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配置中的文件

您提到这一点是因为经理的信息没有到达工人处

我确实看到经理发了一条信息:

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}]

我应该启用哪个调试来查看消息是否到达工作者?

有关疑难解答,您可以检查以下内容

  • Axis2.xml中的群集配置—当您在单个节点中运行多个概要文件时,需要将所有3个节点群集为一个群集。因此,所有3个节点中的域名都应该相同
  • 时间应在所有3个节点之间同步
  • 发布API后,集群消息将发送到工作节点。然后,只有工作节点将从SVN获得更新


    关于在manager节点中收到的错误消息,请检查api-manager.xml中的AuthManager配置。看起来您已将该值设置为admin/services。该值应为密钥管理器节点主机名。在您的情况下,它应该是manager节点的主机名。

    多亏了Pubci的输入,我发现了这个问题

    a) 在manager和Worker的axis2.xml中,localMemberHost必须是10.0.2.2(这是从VM到其他主机的网关),而不是127.0.0.1:

    <parameter name="localMemberHost">10.0.2.2</parameter>
    
    在worker中,在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问题的任何人的提示:

  • 确保WSO2出现时hazelcast显示的成员列表正确无误
  • 确保在工作人员出现时,在管理器日志中看到成员加入消息
  • 确保在经理处进行更改后,在工作人员处看到“消息已接收”
  • 用于帮助您解决问题的调试选项:

    log4j.logger.org.wso2.carbon.core.deployment=DEBUG
    log4j.logger.org.wso2.carbon.deployment.synchronizer=DEBUG
    

    我根据您的输入更新了原始消息,并进行了一些后续操作。请参阅“跟进1”。请重新检查群集配置。在成员列表中,我可以使用127.0.0.1。基本上,成员列表中提到的IP地址都会提供给其他成员。他们使用该IP地址连接到另一个节点。因此不能使用127.0.0.1。LocalMemberPort应该是它自己的群集端口。对于manager,它是4500,而其他工作节点应该是4100和4200。您是否在任何日志中看到“已加入成员”消息。如果节点正确集群,您应该在这两个节点中的任何一个节点中看到这一点。域null是可以的。您看到的配置就是您所配置的配置。这并不意味着节点已正确聚集。成员加入日志应该在那里。
    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
    
    TID: [-1234] [] [2017-03-08 09:41:45,213] DEBUG {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} -  
        Running deployment synchronizer update... tenant : carbon.super
    
    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}]
    
    <parameter name="localMemberHost">10.0.2.2</parameter>
    
        <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>
    
     INFO {org.wso2.carbon.core.clustering.hazelcast.wka.WKABasedMembershipScheme} -  
    Member joined [6bf6ae47-bea4-4bc4-beec-9140a626781b]: /10.0.2.2:4200
    
    INFO {org.wso2.carbon.core.clustering.hazelcast.HazelcastClusterMessageListener} -
      Received ClusteringMessage: SynchronizeRepositoryRequest{tenantId=1, tenantDomain='0000s7.com', messageId=a573eeef-46d7-4a2b-bfc9-362296bb60d4}
    
    log4j.logger.org.wso2.carbon.core.deployment=DEBUG
    log4j.logger.org.wso2.carbon.deployment.synchronizer=DEBUG