问题标签 [spring-cloud-netflix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - hystrix.stream、management.port 和 Spring Cloud Turbine
我的带有@EnableTurbine 配置的微服务:
bestallning 是一个@SpringCloudApplication, hystrix.stream 已启用。它在 eureka 中注册,并且涡轮应用程序可以找到它。但它的 management.port 设置为 8092,server.port 设置为 8082。 hystrix.stream 绑定到 management.port
Turbine 现在尝试从 bestallning 的 server.port 获取 hystrix.stream,而不是 hystrix.stream 绑定的 management.port。
是否可以让涡轮机使用正确的端口查找 hystrix.stream?
spring-boot - ZuulException: 转发错误,原因:java.net.SocketException: Broken pipe
ZuulException
由于我的集成测试环境中的断管问题,我面临以下异常。只部署了一个服务,但仍然出现以下异常,理想情况下它应该一直可用。这个问题是间歇性的,有时它可以工作,有时它不能。有没有人遇到过这个问题,是否有任何额外的配置要做?
日志跟踪
spring - spring eureka security 批量更新失败,HTTP 状态码为 401
我研究 spring cloud eureka,cloud,它们工作得很好。但是在 eureka 服务中添加安全性后,它遇到了一些错误。
所有代码和错误详细信息都在https://github.com/keryhu/eureka-security
尤里卡服务应用程序.yml
和配置服务 application.java
配置服务应用程序.yml
启动配置服务后导出错误:
spring-cloud - 如何在 Zuul 中使用基于 regexmapper 的路由?PatternServiceRouteMapper 不工作?
我尝试实现的是路由,例如:
http://zuul-host:8080/v1/foo/hello
到我的服务foo-v1
、资源hello
我正在尝试http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html中描述的regexmapper示例
我的问题是我看到一个名为的服务foo-v1
被映射到/v1/foo
,PatternServiceRouteMapper
但是我无法调用该路由。也看不到/mappings
。我必须在某处激活该路线吗?
设置
福服务
application.properties
祖尔
我的配置类Routings.java
。我为服务映射添加了一些 sysout 日志输出,然后我进入foo-v1 -> v1/foo
了日志。因此这个映射应该是活跃的。
我的ZuulApplication.java
spring - 无法将服务注册为 Eureka Client
我正在尝试将微服务注册为 Eureka 客户端以发现其他微服务,但是,我按照教程进行操作,但 Eureka 服务器中没有显示任何内容。以下是代码片段:
我的
/li>demo
应用程序:一个运行在 上的 Spring Boot 应用程序localhost:9001
,我希望它成为一个 Eureka Client,即,将自己注册为一个实例,同时能够发现其他实例(我使用了通用@EnableDiscoveryClient
注释,Spring Netflix Eureka 在类路径上):应用程序.yml:
/li>
Eureka 服务器应该没问题,因为我localhost:8080
在服务器上成功注册了另一个正在运行的 Miscroservice。以防万一这里是 Eureka 服务器的 application.yml:
有人在这里看到任何问题吗?
spring - Spring Cloud Sidecar 未按预期工作
根据文档,@EnableSidecar 注释充当希望在 Eureka 中注册的非 JVM 应用程序的代理。因此,要设置的配置是:
一旦“sidecar”启动并运行,我们应该能够通过服务注册表调用非 JVM 端点之一,只需使用“sidecar”应用程序用于在 Eureka 中注册的名称。因此,例如,如果我们的“sidecar”应用程序在 Eureka 中注册为“php-sidecar”,以代理具有以下端点的 PHP 应用程序:
然后我们应该能够调用以下端点来访问非 JVM 应用程序(假设“sidecar”在“localhost”和端口 8080 中):
但是,这并没有按预期工作。当我们请求上面的 URI 时,实际上发出了对“localhost:81”的请求,因为不知何故,“sidecar”正在获取它的主机 URI,而不是定义为 sidecar 属性的一部分的 home-page-uri。
如果我们使用 localhost 在本地运行非 JVM 应用程序,那么一切都会按预期工作,但这绝对不是现实的用例。
因此,我在配置中缺少什么来告诉 Spring Cloud(在这种特殊情况下为 Zuul)使用非 JVM 主页 URI 而不是我的本地主机 URI?
谢谢你的支持。
spring-cloud - Spring Sidecar 如何与 Docker 配合使用
我们有一个 sidecar 应用程序,使我们能够向 Eureka 注册我们的 node.js 应用程序以启用服务发现。
我们的 Sidecar 应用程序配置如下所示:
根据配置,我们的节点应用程序3000
在属性定义的端口上运行sidecar.port
,我们的边车应用程序应该在端口上9000
运行server.port
。
我们已经向我们的节点应用程序添加了一个端点,以允许边车检查应用程序的健康状况 ( sidecar.health-url
)。主机名sessionServiceNode
是我们为运行节点应用程序的容器提供的别名。
我们的 Eureka 服务运行在一个单独的容器中,该容器也通过别名 discoveryService 链接到 sidecar 应用程序容器。
我们有一个单独的测试 Spring Boot 应用程序,它在一个单独的容器中运行,该容器是会话服务的消费者。此容器仅链接到发现服务容器。
Sidecar 应用程序按预期向 Eureka 注册自身
测试服务对会话服务使用两种形式的查找。一个使用假客户端:
另一种方法使用更程序化的查找:
当我们向测试服务发出请求时,测试服务会查找会话服务,但是 eureka 给我们返回的实例信息的 URI 为:http://172.17.0.5:3000
这是不正确的。172.17.0.5
是 sidecar 应用程序容器的 IP 地址,但端口3000
是节点应用程序运行的端口?
应该期望看到 eureka 用会话服务端口http://172.17.0.5:9000
(http://172.17.0.6:3000
还是应该 Eureka 直接给我们节点应用的位置?
我在下面包含了来自 Eureka 的会话服务实例信息:
编辑:
看了代码后,Eureka 使用InetAddress.getLocalHost().getHostAddress()
和InetAddress.getLocalHost().getHostName()
分别返回的主机信息来确定实例的地址。这就是为什么我们要获取 sidecar 容器的 IP 地址。有什么办法可以覆盖这种行为?
spring-cloud - 在 PWS 上使用 Spring Cloud/Netflix 堆栈进行蓝/绿部署的规范方法是什么?
我正在尝试一种非常类似于此处图片中详细说明的设置:https ://raw.githubusercontent.com/Oreste-Luci/netflix-oss-example/master/netflix-oss-example.png
在我的设置中,我使用了一个客户端应用程序 ( https://www.joedog.org/siege-home/ )、一个代理 (Zuul)、一个发现服务 (Eureka) 和一个简单的微服务。一切都部署在 PWS 上。
我想在不停机的情况下从我的简单微服务的一个版本迁移到下一个版本。最初,我从这里描述的技术开始:https ://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html
在我看来,这种方法与 Eureka 等发现服务不“兼容”。事实上,我的服务的新版本已在 Eureka 中注册,甚至在我重新映射所有路由(CF 路由器)之前就已接收流量。
这导致我采用另一种方法,其中我依赖 Spring Cloud/Netflix 中的故障转移机制:
- 我启动了我的服务的新(向后兼容)版本。
- 当这个版本被 Zuul/Eureka 选中时,它开始获得 50% 的流量。
- 一旦我确认新版本可以正常工作,我就会删除“旧”实例。(我只需点击 PWS 中的“停止”按钮)
据我了解,Zuul 在后台使用 Ribbon(负载平衡),因此在旧实例仍在 Eureka 但实际上正在关闭的那一瞬间,我希望重试新实例,而不会对客户端产生任何影响。
然而,我的假设是错误的。我的客户端出现了一些 502 错误:
我的 application.yml 的一部分
我不确定出了什么问题。
这是技术问题吗?
还是我做出了错误的假设(我确实在某处读到过 POST 无论如何都不会重试,我不太明白)?
我很想听听你是怎么做到的。
谢谢,安迪
consul - Spring Cloud:使用 consul 代替 eureka 与 zuul 进行服务发现
我正在使用 Zuul 实现网关。路由器应该发现一些微服务以满足我的application.yml
. 默认情况下,Zuul 将利用 Eureka,这也是我的应用程序在启动时所做的。
我可以阅读spring-cloud-consul
也可以使用:Supports Zuul, a dynamic router and filter via Spring Cloud Netflix
. 但是,没有明确的示例说明如何将 consul 替换为 eureka。我将我的依赖项添加到 mypom.xml
以提升 consul:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.0.0.RC1</version>
</dependency>
但是,当我的应用程序启动时,它会继续尝试联系 eureka(我的 eureka 服务器已停止):Can't get a response from http://localhost:8761/eureka/apps/MICROSERVICE-REST-API/xxxxxxx
为了告诉zuul 或ribbon 使用consul,我可能遗漏了一些配置点。
有什么建议吗?
谢谢
spring-security - zuul重定向问题背后的Spring MVC Web应用程序
我有一组 Spring Boot (1.3.3),Spring Cloud (Brixton.RC2) 微服务在 Zuul 后面运行,并且我的 url 在重定向中被重写时遇到问题。
我的主要问题是我的网络应用程序落后于 zuul 并且在重定向期间似乎不知道主机,即使我应该设置所有必要的属性。
当我去http://test.example.com/我希望被重定向到http://test.example.com/login但我被重定向到http://machinehostname/login ...如果我直接去到http://test.example.com/login我可以看到我的登录表单并登录,但随后被重定向到http://machinehostname/但如果我手动转到http://test.example.com/我可以使用例如,在表单中的 POST 之后,我的应用程序再次正确执行重定向。
以下是我的网络应用程序的一些属性:
这是我的 zuul 属性:
我在网络应用程序中的安全设置:
同样,所有 url 都正确使用服务器名称,除非它是 redirect。知道如何解决吗?
非常感谢 !