Ошибка синхронизации WSO2 API Manager при кластеризации

Я настраиваю кластер API Manager 1.10 с каждым компонентом в отдельной виртуальной машине, следуя этому руководству: https://docs.wso2.com/display/CLUSTER44x/Clustering+API+Manager+1.10.0

Но когда я запускаю компоненты, я получаю следующую ошибку:

[2016-12-02 17:19:36,249] ERROR - DeploymentSynchronizerComponent Error while initializing a deployment synchronizer for the super tenant Carbon repository
org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizerException: No Repository found for type registry
    at org.wso2.carbon.deployment.synchronizer.repository.CarbonRepositoryUtils.getDefaultDeploymentSyncConfiguration(CarbonRepositoryUtils.java:202)
    at org.wso2.carbon.deployment.synchronizer.repository.CarbonRepositoryUtils.getActiveSynchronizerConfiguration(CarbonRepositoryUtils.java:107)
    at org.wso2.carbon.deployment.synchronizer.repository.CarbonRepositoryUtils.isSynchronizerEnabled(CarbonRepositoryUtils.java:239)
    at org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerComponent.initDeploymentSynchronizerForSuperTenant(DeploymentSynchronizerComponent.java:90)
    at org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerComponent.activate(DeploymentSynchronizerComponent.java:67)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
    at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
    at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
    at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)
    at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:514)
    at org.wso2.carbon.core.init.CarbonServerManager.removePendingItem(CarbonServerManager.java:290)
    at org.wso2.carbon.core.init.PreAxis2ConfigItemListener.bundleChanged(PreAxis2ConfigItemListener.java:118)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

затем каждые несколько секунд:

ERROR - CarbonDeploymentSchedulerTask Deployment synchronization commit for tenant -1234 failed
java.lang.RuntimeException: org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizerException: No Repository found for type registry
    at org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerServiceImpl.commit(DeploymentSynchronizerServiceImpl.java:128)
    at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.deploymentSyncCommit(CarbonDeploymentSchedulerTask.java:298)
    at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:142)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizerException: No Repository found for type registry
    at org.wso2.carbon.deployment.synchronizer.repository.CarbonRepositoryUtils.getDefaultDeploymentSyncConfiguration(CarbonRepositoryUtils.java:202)
    at org.wso2.carbon.deployment.synchronizer.repository.CarbonRepositoryUtils.getActiveSynchronizerConfiguration(CarbonRepositoryUtils.java:107)
    at org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerServiceImpl.commit(DeploymentSynchronizerServiceImpl.java:105)
    ... 9 more

Также все мои css и javascript не будут загружаться в компоненте api-store. Я получаю 405 (метод получения не разрешен) на всех ресурсах.

Я не уверен, где я ошибаюсь в обоих случаях.


person blue13    schedule 02.12.2016    source источник
comment
У вас включена десинхронизация?   -  person Bee    schedule 02.12.2016
comment
Ошибка, похоже, связана с depsync. Который отвечает за синхронизацию артефактов между node. По умолчанию он отключен. Можете ли вы проверить раздел файла carbon.xml ‹DeploymentSynchronization›   -  person Thusitha Thilina Dayaratne    schedule 04.12.2016
comment
@ThusithaThilinaDayaratne Я закомментировал этот раздел. Установив значение false, проблема решена. Спасибо! Вы знаете, почему мои скрипты css/js не загружаются для моего магазина API?   -  person blue13    schedule 05.12.2016
comment
Вы настроили магазин, и ваши пользовательские css/js не загружаются?   -  person Jenananthan    schedule 08.12.2016
comment
@Jenananthan Я не делал никаких настроек. Я использую модную тему, которая идет по умолчанию.   -  person blue13    schedule 12.12.2016
comment
Есть ли у вас резервные узлы (т. е. несколько шлюзов)? Если это так, вам понадобится синхронизация развертывания. Мы также не знали об этом и не были в восторге от необходимости запуска сервера SVN для синхронизации узлов.   -  person Kjata30    schedule 20.12.2016
comment
@ Kjata30 У меня есть несколько шлюзов. Синхронизация развертывания не является строго необходимой, не так ли?   -  person blue13    schedule 30.03.2017
comment
@ blue13 К сожалению, да, это так. Когда вы публикуете изменение в API, узел издателя отправляет новый или обновленный XML-документ определения API на (один) узел шлюза, который вы настроили для этого экземпляра издателя. Без синхронизации развертывания (или какой-либо аналогичной службы) другие узлы шлюза никогда не получат новое или обновленное определение, и запросы, попадающие на эти шлюзы для этого конкретного API, скорее всего, не будут выполнены.   -  person Kjata30    schedule 11.04.2017


Ответы (1)


Установка DeploymentSynchronization в WSO2_AM_HOME/repository/conf/carbon.xml на false, как советовал @Thusitha, решила проблему.

Невозможность загрузки CSS была решена с помощью этой статьи: https://docs.wso2.com/display/AM1100/Adding+a+Reverse+Proxy+Server

person blue13    schedule 13.12.2016