2016-10-24 3 views
2

Я пытаюсь реализовать кластеризацию в Mulesoft. Мое намерение - развернуть приложение на кластер серверов приложений. Я установил сервер Mule каждый на двух физических машинах, которые я привязал к кластеру. Затем я создал приложение Mule, которое прослушивает конечную точку HTTP для запуска почты. У меня возникла проблема при развертывании приложения в созданный кластер Mule через MMC.Проблема с развертыванием кластеров Mule

Click to see the cluster of servers Приложение развертывается на одном из серверов кластера, и проблема возникает при развертывании на другом сервере. Ошибки я получаю:

*ERROR 2016-10-21 21:52:09,283 [qtp1451192493-104]   org.mule.module.launcher.DefaultArchiveDeployer: 

org.mule.module.launcher.DeploymentStartException:  BindException: Address already in use: bind 
    at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:156) ~[?:?] 
    at org.mule.module.launcher.artifact.ArtifactWrapper$4.execute(ArtifactWrapper.java:98) ~[?:?] 
    at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:129) ~[?:?] 
    at org.mule.module.launcher.artifact.ArtifactWrapper.start(ArtifactWrapper.java:93) ~[?:?] 
    at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:26) ~[?:?] 
    at org.mule.module.launcher.DefaultArchiveDeployer.guardedDeploy(DefaultArchiveDeployer.java:310) ~[?:?] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact(DefaultArchiveDeployer.java:330) ~[?:?] 
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:155) ~[?:?] 
    at org.mule.module.launcher.MuleDeploymentService.deploy(MuleDeploymentService.java:192) ~[?:?] 
    at com.mulesoft.mmc.agent.service.impl.ApplicationServiceImpl.deploy(ApplicationServiceImpl.java:302) ~[?:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_77] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_77] 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[?:?] 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201) ~[?:?] 
    at com.sun.proxy.$Proxy45.deploy(Unknown Source) ~[?:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_77] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_77] 
    at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:212) ~[?:?] 
    at com.mulesoft.common.remoting.RemoteInvocationDecorator.invoke(RemoteInvocationDecorator.java:107) ~[?:?] 
    at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:39) ~[?:?] 
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78) ~[?:?] 
    at com.mulesoft.common.remoting.StreamSupportingHttpInvokerServiceExporter.invokeAndCreateResult(StreamSupportingHttpInvokerServiceExporter.java:122) ~[?:?] 
    at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:74) ~[?:?] 
    at com.mulesoft.mmc.agent.remoting.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:50) ~[?:?] 
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) ~[?:?] 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) ~[?:?] 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) ~[?:?] 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) ~[?:?] 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) ~[?:?] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) ~[?:?] 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) ~[?:?] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) ~[?:?] 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:696) ~[?:?] 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1515) ~[?:?] 
    at com.mulesoft.mmc.agent.web.ConsoleClientCertFilter.doFilter(ConsoleClientCertFilter.java:138) ~[?:?] 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1495) ~[?:?] 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:519) ~[?:?] 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138) ~[?:?] 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:564) ~[?:?] 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213) ~[?:?] 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1097) ~[?:?] 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:448) ~[?:?] 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175) ~[?:?] 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1031) ~[?:?] 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136) ~[?:?] 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[?:?] 
    at org.eclipse.jetty.server.Server.handle(Server.java:446) ~[?:?] 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:271) ~[?:?] 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:246) ~[?:?] 
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358) ~[?:?] 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) ~[?:?] 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) ~[?:?] 
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_77] 
Caused by: org.mule.api.lifecycle.LifecycleException: Failed to invoke lifecycle phase "start" on object: o[email protected]30206033 
    at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:248) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.doApplyLifecycle(RegistryLifecycleCallback.java:91) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.onTransition(RegistryLifecycleCallback.java:67) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:140) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:111) ~[?:?] 
    at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:88) ~[?:?] 
    at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:141) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:91) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:87) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:69) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:61) ~[?:?] 
    at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:294) ~[?:?] 
    at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:134) ~[?:?] 
    ... 56 more 
Caused by: org.mule.api.DefaultMuleException: Address already in use: bind (java.net.BindException) 
    at org.mule.module.http.internal.listener.DefaultHttpListenerConfig.start(DefaultHttpListenerConfig.java:275) ~[?:?] 
    at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[?:?] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_77] 
    at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:237) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.doApplyLifecycle(RegistryLifecycleCallback.java:91) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.onTransition(RegistryLifecycleCallback.java:67) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:140) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:111) ~[?:?] 
    at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:88) ~[?:?] 
    at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:141) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:91) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:87) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:69) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:61) ~[?:?] 
    at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:294) ~[?:?] 
    at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:134) ~[?:?] 
    ... 56 more 
Caused by: java.net.BindException: Address already in use: bind 
    at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_77] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[?:1.8.0_77] 
    at sun.nio.ch.Net.bind(Unknown Source) ~[?:1.8.0_77] 
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[?:1.8.0_77] 
    at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) ~[?:1.8.0_77] 
    at org.glassfish.grizzly.nio.transport.TCPNIOBindingHandler.bindToChannelAndAddress(TCPNIOBindingHandler.java:131) ~[?:?] 
    at org.glassfish.grizzly.nio.transport.TCPNIOBindingHandler.bind(TCPNIOBindingHandler.java:88) ~[?:?] 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.bind(TCPNIOTransport.java:248) ~[?:?] 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.bind(TCPNIOTransport.java:228) ~[?:?] 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.bind(TCPNIOTransport.java:219) ~[?:?] 
    at org.mule.module.http.internal.listener.grizzly.GrizzlyServer.start(GrizzlyServer.java:41) ~[?:?] 
    at org.mule.module.http.internal.listener.DefaultHttpListenerConfig.start(DefaultHttpListenerConfig.java:271) ~[?:?] 
    at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[?:?] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_77] 
    at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:237) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.doApplyLifecycle(RegistryLifecycleCallback.java:91) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleCallback.onTransition(RegistryLifecycleCallback.java:67) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:140) ~[?:?] 
    at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:111) ~[?:?] 
    at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:88) ~[?:?] 
    at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:141) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:91) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:87) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:69) ~[?:?] 
    at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:61) ~[?:?] 
    at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:294) ~[?:?] 
    at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:134) ~[?:?] 
    ... 56 more 

Есть ли какие-либо конкретные изменения конфигурации должны быть сделаны для кластеризации развертывания? Кто-нибудь, пожалуйста, помогите мне.

также предложения, связанные с BAM приветствуется

ответ

1

Как журнал говорит ваш HTTP Listener пытается использовать порт, который уже используется

вызвано следующими причинами: java.net.BindException: Адрес уже in use: bind

Используйте инструмент ОС, чтобы узнать, какой процесс использует этот порт.

+0

Благодаря @Ale Sequiera. Я попытался проверить это. Не следует останавливать это, поскольку порты 7778 и 7779 использовались одним из серверов в кластере. Кроме того, связано ли это с конечной точкой HTTP, которая не может поддерживать кластеризацию, поскольку ошибка возникает при наличии HTTP в качестве входящего соединителя и ошибка не возникает с очередью JMS? –

1

Поскольку вы развертываете приложение через Mule Management Console для формирования кластера. Вы должны указать конечную точку приложения входящей конечной точки HTTP как «localhost: portnumber». В вашем сценарии, поскольку оба сервера находятся на одном устройстве.

ДВА MULE SERVER, например, в одной машине

Конечная точка SERVERA будет изображен как machineAIP: 8080 и ServerB будет также в качестве machineIPA: 8080 .Здесь она возникает исключение связи

ДВУХМЕСТНЫЙ ИНСТРУМЕНТ СЕРВЕРА В ДВУХ РАЗНЫХ МАШИНХ

Конечная точка SERVERA будет изображен как machineAIP: 8080 и ServerB будет также, как machineIPB: 8080 .Здесь дифференцируется с помощью машинного IP.

Следовательно, всегда хорошо работать с двумя разными серверами. Если вы создаете два экземпляра сервера mule с помощью одного и того же компьютера, это приведет к проблемам, связанным с разоблачением одинаковых конечных точек. Нам нужно использовать две разные машины для повышения высокого уровня availability.It также гарантирует, что сбой машины не повлияет на работу кластерного сервера.

Разверните приложение, используя две разные машины (каждая машина имеет один экземпляр сервера мула с ней), а также номер порта, который вы указываете во входящих терминалах, не используется.

Если мой ответ дает вам решение.Счастливый кодирования :)

+1

Спасибо за ваше время. Попробуй свое предложение .. Поднимет мою руку только после того, как проблема будет исправлена ​​.. ;) –

0

основе, за исключением -

Вызванный: java.net.BindException: Адрес уже используется: привязка

Это может привести из-за двух причин -

  1. порт, используемый для приложения mule через HTTP-коннектор, уже используется на уровне сервера. Поэтому попробуйте изменить порт и убедитесь, что порт не используется.

  2. Если вы развертываете приложение mule с использованием MMC в среде кластера, вам необходимо настроить свой HTTP-коннектор с портом localhost OR 0.0.0.0, чтобы он принимал localhost ref при развертывании на сервере/узлах в кластер.

Обратите внимание, когда вы используете локальный или 0.0.0.0 то приложения будут размещены в узлах и ваша балансировка нагрузки будет указывать на адрес узла (хост DNS), а затем он будет rediect вызова обоих узлов с портом, который вы упомянули в http-коннекторе.

Пожалуйста, попробуйте и дайте мне знать, разрешит ли он проблему.

0

ссылка на мой другой ответ - использовать это для справки

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8080" doc:name="HTTP Listener Configuration"/> 

<flow name="sample-http-appFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="flow1" doc:name="HTTP"/> 
    <logger message="Payload is #[message.payload]" level="INFO" doc:name="Logger"/> 
</flow> 
<flow name="sample-http-appFlow1"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="flow2" doc:name="HTTP"/> 
    <logger message="Payload is #[message.payload]" level="INFO" doc:name="Logger"/> 
</flow> 
+0

Использование может просто изменить ваш предыдущий ответ – sheldonzy

Смежные вопросы