问题标签 [spring-cloud-zookeeper]

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.

0 投票
1 回答
1375 浏览

spring-cloud - Spring cloud Ribbon Zookeeper 中的自定义 Loadblancer 规则

在使用ribbon-zookeeper-discovery 设置自定义负载均衡器规则时遇到问题,当前规则提供程序是ROUND_ROBIN、RANDOM 和STICKY,但是我想要自定义规则。没有办法自定义它,因此尝试覆盖 bean dependenciesBasedLoadBalancerZookeeperRibbonClientConfiguration当我尝试覆盖 bean 时,我得到以下错误。

因此,我尝试复制整个文件ZookeeperRibbonAutoConfiguration并进行自定义depdenciesBaseLoadBalancer,但最终出现以下错误。

为了解决 IClientConfig 问题,我尝试从创建 ICleanConfig 类型的 bean DefaultClientConfigImpl,现在以错误告终。

如何添加自定义负载均衡器规则。

0 投票
1 回答
1386 浏览

spring-integration - 春季集成:无法与动物园管理员进行领导者选举

我正在尝试在我的应用程序的容器中选举领导者来完成某些任务

我写了以下代码,

我有以下依赖项

我当地的动物园管理员已经启动并运行。

我不断收到错误,可能是我的连接设置错误

我做错什么了吗。

0 投票
1 回答
1185 浏览

java - 执行集成测试时如何禁用spring cloud zookeeper

TestRestTemplate当我使用和spring-cloud-zookeeper-discovery依赖项测试我的代码时,集成测试会尝试连接到 Zookeeper 。如果 zookeeper 没有运行,测试会抛出异常。

这是一个简单的项目,您可以在其中重现问题https://github.com/DenisGlot/disable-zookeeper-when-testing

如何使测试跳过连接到 zookeeper 部分?

0 投票
0 回答
518 浏览

ssl - 无法通过 feign 客户端访问在 zookeeper 上注册为发现服务器的 https 服务

我有 2 个服务注册到 zookeeper 作为发现服务器。两者都启用了 SSL

我想使用服务 2 中的 feign 客户端访问服务 1。

我创建了一个密钥库以使两个服务中的端点为 https。我还在这两个服务中设置了 spring.cloud.zookeeper.discovery.instance-ssl-port,以便可以通过 sslPort 访问它们。

服务 1 的 Application.properties `

`

我还创建了 feignClient Bean,如下所示

我还从 github 上的以下位置获取了 TrustingSSLSocketFactory 类https://github.com/OpenFeign/feign/blob/master/core/src/test/java/feign/client/TrustingSSLSocketFactory.java

我使用了如下所示的 feign 客户端注释

我使用了如下所示的假装客户端

当我尝试点击以下链接https://localhost:7082/feignemployees时出现以下错误

0 投票
1 回答
1653 浏览

docker - 微服务内部通信时的 SSL 证书主机名问题

我必须使用 SSL 保护微服务内部通信。我所有的微服务都是 Spring Boot 应用程序,我们使用 Zookeeper 作为发现服务器。内部服务通信通过rest模板和feign客户端进行。我们使用功能区作为客户端负载均衡器。我们在所有微服务中设置了以下属性

我们必须使用自签名证书,我已经生成了相同的证书并将证书导入 JRE 信任存储以使通信成为可能(SSL 握手)。这里的问题是我必须保持证书的 CN 与我的系统的主机名 (LP-PF1HMVQU) 相同。这是因为当服务注册到 Zookeeper 时,它会将机器名或主机名存储为其地址,并且在握手期间返回相同的地址。

在 zookeeper 上注册的服务

现在在生产环境中,我们将为每个服务提供一个 docker 容器,并且每个服务可以有多个 docker 容器。这些 docker 容器注册到 zookeeper 并保存容器的 IP 地址。

我应该如何创建证书,CN 名称应该是什么,以便它匹配任何 IP 地址。我已经尝试使用通配符 * 作为 CN 名称,但它不起作用。

请建议如何实现这一目标。

0 投票
0 回答
226 浏览

spring-cloud - Zookeeper 服务发现 Znode 40s 后删除

我有 2 个应用程序在其中service 1使用service 2复制service 2到 3 个实例中。Service 1连接到service 2使用spring-cloud-zookeeper-discovery.

应用程序按预期工作,直到我关闭其中一个实例service 2,服务实例的 ZNode 被 40 秒删除,我看到协商会话超时为 40 秒,但是我创建了另一个实例service 3,该实例具有相同的上次协商会话超时到 40 秒,但是service 3实例的 ZNode 在 1-2 秒内被删除。

以下是断开连接后的zookeeper服务器日志

版本信息
zookeeper:3.5.5
spring-cloud-zookeeper-discovery:2.0.1
策展人:4.2.0

0 投票
1 回答
212 浏览

java - 将 Zookeeper 设置为每个应用程序实例仅交付一次配置 [Spring]

我在网上找不到关于我的问题的解决方案或任何提示。

我想为我的 Spring Boot 应用程序使用 Apache Zookeeper 设置中央配置管理器,该应用程序可以同时具有多个实例。

所以在 Zookeeper 中,我只会有一些范围的数据:

0-100

101-200

...

900-1000...

假设我一开始有两个应用程序实例(A 和 B)。然后实例 A 将获得范围 0-100,实例 B 将获得下一个可用范围,即 101-200。如果添加新实例或重新启动某个实例,则它将获得下一个可用范围。每个实例只需要从配置中读取一次数据,即在实例启动时。

我知道使用 @Value 和 @ConfigurationProperties 从 Zookeeper 读取数据。

具体有问题:

  • 如何以这种方式配置 Zookeeper,以便一旦读取数据,它就不再有效或相关?
  • 如何在 Spring Boot 中设置仅在应用程序启动时从 Zookeeper 读取配置一次?
0 投票
1 回答
236 浏览

spring - 在 Spring Boot 应用程序中从 Zookeeper 读取类(带下划线的路径)

我们在 Zookeeper 节点中存储了一些用于多种情况的标准配置。它是简单值(字符串、布尔值、整数等)的平面列表。所以现在我们有一个描述这个配置的类,带有相应的字段,并使用具有不同前缀的 ConfigurationProperties 注释填充它的实例。

问题是现在我们需要从路径中带有下划线的节点读取这个配置的几个实例。ConfigurationProperties 不支持前缀中的蛇大小写或骆驼大小写,仅支持 kebab 大小写。

这会导致错误:

没有机会重命名节点。这不是一种选择。

Zookeper 根节点是使用 bootstrap.yml 中的 spring.cloud.zookeeper.config.root 设置的,我猜 Spring Cloud Zookeeper 是用来读取值的。如果我将此根设置为“new_path”,ConfigurationProperties 可以工作,但我还需要应用程序中其他路径的值。

配置列表很长并且被多次使用,所以我想避免为每个属性使用@Value注解。

除了 ConfigurationProperties 之外还有其他方法,或者可能有任何方法可以调整 ConfigurationProperties 或 Spring Cloud Zookeeper 以使其协同工作?

0 投票
0 回答
85 浏览

spring-boot - 如何在启动时使用应用程序当前版本的配置更新 Zookeeper(作为配置管理)

我正在使用 Zookeeper 作为我的应用程序的配置管理,该应用程序是在微服务架构中设计并使用 spring-boot 实现的。我的配置最初将在应用程序源代码控制 (git) 中,这样我就可以跟踪配置的更改以及能够轻松部署任何版本的应用程序。现在我需要一个工具来将(当前版本的)配置更改应用到 Zookeeper 服务器,以便应用程序的所有实例都可以依赖 Zookeeper 服务器并在运行时获取配置中的更改。是否有任何工具或实践(maven 插件、脚本、库...)将更改应用到 zookeeper 服务器?

0 投票
1 回答
371 浏览

spring - 在 bootstrap.yml 中禁用 ZooKeeper,它在测试期间仍然运行

我正在运行一个 SpringBoot 应用程序。我有 bootstrap-test.yml(位于 src/test/resources/config 下),如下所示:

起居室:

但是,当我尝试运行集成测试时:

ZooKeeper 仍然尝试“实时”连接:

我想禁用所有 zookeeper 引导操作以进行集成测试。什么给出了,我很沮丧,不知道出了什么问题:为什么当我禁用 Zookeeper 时它仍然试图运行?提前致谢。