Jhipster шлюз в контейнере не может zuul к микросервису, работающему в localhost - PullRequest
1 голос
/ 26 января 2020

У меня проблема, я использую jhipster для генерации 3-х микросервисов: gateway, uaa и gambling-продуцента. Когда я использую docker -compose для одновременного запуска 3-х сервисов, он работает хорошо, затем я прекращаю работу сервиса-производителя и запускаю ./mvnw на локальном хосте для этого сервиса, он не работает при совместной работе. шлюз не может zuul этот сервис

Я пробовал несколько случаев:

  • Не редактируйте никакие файлы конфигурации application.yaml, Applicaton-dev.yml из 3 сервисов выше.
  • На шлюзе Applicaton.yml:
   routes:
    gamblingproducer:
      url: http://localhost:8081

Или

 routes:
    gamblingproducer:
      path: services/gamblingproducer/**
      serviceId: gamblingproducer

Выдает исключение: Connect to localhost:8081 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

gateway_1  | com.netflix.zuul.exception.ZuulException: Forwarding error
gateway_1  |    at org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter.handleException(SimpleHostRoutingFilter.java:261)
gateway_1  |    at org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter.run(SimpleHostRoutingFilter.java:241)
gateway_1  |    at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:117)
gateway_1  |    at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)
gateway_1  |    at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157)
gateway_1  |    at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118)
gateway_1  |    at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96)
gateway_1  |    at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116)
gateway_1  |    at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81)
gateway_1  |    at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:166)
gateway_1  |    at org.springframework.cloud.netflix.zuul.web.ZuulController.handleRequest(ZuulController.java:45)
gateway_1  |    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52)
gateway_1  |    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
gateway_1  |    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
gateway_1  |    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
gateway_1  |    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
gateway_1  |    at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
gateway_1  |    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
gateway_1  |    at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
gateway_1  |    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
gateway_1  |    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
gateway_1  |    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:180)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at microservices.gateway.web.filter.RefreshTokenFilter.doFilter(RefreshTokenFilter.java:62)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:97)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
gateway_1  |    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
gateway_1  |    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
gateway_1  |    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
gateway_1  |    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:94)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)
gateway_1  |    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
gateway_1  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
gateway_1  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
gateway_1  |    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
gateway_1  |    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
gateway_1  |    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
gateway_1  |    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
gateway_1  |    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
gateway_1  |    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
gateway_1  |    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
gateway_1  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
gateway_1  |    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
gateway_1  |    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
gateway_1  |    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
gateway_1  |    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
gateway_1  |    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
gateway_1  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
gateway_1  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
gateway_1  |    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
gateway_1  |    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
gateway_1  |    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
gateway_1  |    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
gateway_1  |    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
gateway_1  |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
gateway_1  |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
gateway_1  |    at java.lang.Thread.run(Thread.java:748)
gateway_1  | Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8081 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
gateway_1  |    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
gateway_1  |    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
gateway_1  |    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
gateway_1  |    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
gateway_1  |    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
gateway_1  |    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
gateway_1  |    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
gateway_1  |    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118)
gateway_1  |    at org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter.forwardRequest(SimpleHostRoutingFilter.java:422)
gateway_1  |    at org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter.forward(SimpleHostRoutingFilter.java:341)
gateway_1  |    at org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter.run(SimpleHostRoutingFilter.java:236)
gateway_1  |    ... 116 common frames omitted
gateway_1  | Caused by: java.net.ConnectException: Connection refused (Connection refused)
gateway_1  |    at java.net.PlainSocketImpl.socketConnect(Native Method)
gateway_1  |    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
gateway_1  |    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
gateway_1  |    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
gateway_1  |    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
gateway_1  |    at java.net.Socket.connect(Socket.java:589)
gateway_1  |    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
gateway_1  |    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
gateway_1  |    ... 126 common frames omitted
gateway_1  | 

Пожалуйста, помогите мне Спасибо

1 Ответ

0 голосов
/ 27 января 2020

Localhost всегда разрешается в 127.0.0.1, который является самим контейнером. Измените localhost на ваш ip хоста или имя контейнера / службы, где работает eureka, но никогда не используйте localhost. Представьте, что приложения в контейнерах работают на отдельных удаленных хостах. Никогда не используйте localhost, если вы не хотите l oop вернуться в тот же контейнер (что почти никогда не происходит).

Обновление:

Основываясь на разделе комментариев, как я уже сказал, проблема в "localhost" и как это лечить. Из того, что я понимаю, сценарий выглядит следующим образом: mvnw на хосте подключается к eureka в docker, говоря: «привет, я mnvw, и вы можете связаться со мной по localhost: 8081». Но eureka, когда пытается проверить, вызывает localhost, и вместо вашего хоста он получает eureka's localhost, который является контейнером. Поэтому решение вашей проблемы - заставить mnvw сказать имя хоста (или ip), где оно может быть найдено контейнером eureka, а не localhost. Использование localhost очень сложно, когда дело доходит до контейнеров, так что будьте внимательны!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...