问题标签 [spring-cloud-consul]

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 回答
786 浏览

spring - 在引导弹簧启动时从领事读取值

我有疑问是否有任何方法可以在应用程序启动时检索某些值并将它们注入 bootstrap.yml。

我有这样的配置文件:

例如,我需要配置嵌入式 tomcat 端口或数据库凭据,我不想将其硬编码在 .yml 属性文件中,而是想在 .yml 中放入一些变量名,这样 Spring 会从 Consul 带来价值. 可能吗?

0 投票
0 回答
523 浏览

spring - Consul 与 Spring Cloud Gateway - 服务间通信

设置: 我有一组基于 Spring Boot 的微服务,前面是 Spring Cloud Gateway,这意味着来自 UI 或外部 API 客户端的每个请求首先到达 Spring Cloud Gateway,然后转发到适当的微服务。

路由在 Consul 中配置,Spring Cloud Gateway 与 Consul 通信以获取相应的路由。

需求: 需要一些微服务通过 REST API 相互通信。我也希望通过 Spring Cloud Gateway 进行这种通信。这将有助于减少前往 Consul 获取其他服务详细信息的多项服务。

这意味着每个服务至少应该知道网关的详细信息。也可以有多个网关实例。这在更大的架构中是如何处理的?

我查找的任何示例都包含使用 Consul 的一项服务,或使用带有一项微服务的 consul 的网关。无法理解如何将该设计外推到更大的系统。

0 投票
2 回答
927 浏览

netflix-zuul - 使用 Spring Cloud + Zuul + Consul 的 API 网关:使用 HTTPS 时动态路由不起作用

我目前正在开发一个 API 网关来集中对 REST API 的调用。我们使用 Spring Cloud (Edgware.SR3 版本),使用 Zuul (1.3.0) 来处理服务发现和 Consul 作为服务注册中心。

在第一个版本中,每个服务的路由都使用 zuul.routes.myApiName.url 在网关配置中注册,并且运行良好。

然后,我们想使用动态路由来允许每个 API 有多个实例。

为此,我删除了 zuul.routes.myApiName.url。问题是我通过网关对 API 的调用正在返回并出现错误:

错误请求 主机和端口的这种组合需要 TLS。

下面是在 Consul 中注册 API 的配置:

这里是网关中 Zuul 路由的配置:

API 已在 Consul 中正确注册,并且健康检查正在成功使用 HTTPS:

证书也配置得很好,因为我可以使用 HTTPS 直接调用我的 API。但似乎 Zuul 重定向使用的是 HTTP 而不是 HTTPS(如果我使用 HTTP 以直接模式(无网关)调用我的 API,我会遇到同样的错误)。

我已经为此苦苦挣扎了一段时间,所以我想知道是否缺少强制 Zuul 在路由调用 API 中使用 HTTPS 的配置?

提前致谢 !

0 投票
2 回答
2355 浏览

spring-boot - GCP 上的 Spring Cloud Consul 健康检查和状态配置

我们正在尝试在GCP 计算引擎上向consul注册一个spring-cloud-consul应用程序,它可以向 consul 注册应用程序,但是我们面临两个应用程序问题。下面是应用程序的server.yamlbootstrap.yaml

application.yaml

bootstrap.yaml

  1. Consul 无法在计算引擎上调用健康检查,可能是因为它注册在实例的内部域名上。

带领事的服务:NewService{id='hello-service-10003', name='hello-service', tags=[secure=false], address='consul-app-test.c.name-of-project.internal ', meta=null, port=10003, enableTagOverride=null, check=Check{script='null', interval='10s', ttl='null', http=' http://consul-app-test.c .name-of-project.internal:10003/actuator/health ', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status ='null'},检查=null}

  1. 申请,而不是从领事处注销。我们已经停止了应用程序,它仍然显示在 consul UI 上。
0 投票
1 回答
198 浏览

spring - Consul 用于微服务架构中的身份验证

谁能帮我理解 consul 如何在微服务架构中对微服务进行身份验证,我们可以用 consul 替换微服务身份验证(使用 oauth2)吗?

0 投票
2 回答
2349 浏览

windows - 启动 Consul 作为 Windows 服务

我正在尝试在 Windows 上运行领事,我的步骤:

  1. 下载 consul.exe
  2. 像这样安装nssm

    2.1。iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

    2.2.choco install -y nssm

  3. 为领事创建配置文件:

    { "bootstrap": false, "server": true, "datacenter": "MyServices", "data_dir": "C:\Marchello\Downloads\cons\data", "log_level": "INFO" }

  4. 执行 nssm 命令:

    nssm install Consul C:\Marchello\Downloads\cons\consul.exe agent -config-dir C:\Marchello\Downloads\cons\config --ui-dir C:\Marchello\Downloads\cons\ui

  5. 收到消息Service Consul installed successfully

  6. 运行命令nssm start Consul 结果我收到消息:Consul: Unexpected status SERVICE_PAUSED in response to START control

我很困惑,我做错了什么?

0 投票
1 回答
299 浏览

spring-boot - spring cloud consul中是否有禁用发现的标志?

是否可以在云领事中禁用服务发现但仍保留注册。

类似于如何禁用自动注册但保持发现@EnableDiscoveryClient(autoRegisters=false)

0 投票
0 回答
870 浏览

spring-cloud - 为什么在运行时忽略属性值“management.endpoint.health.show-details”的变化?

我正在使用 Spring Cloud Consul 来管理我的应用程序的配置(Spring Boot:v2.1.4.RELEASE)在上传到 Consul 的文件“application.yml”中,我有以下 Actuator 配置:

这导致显示 /actuator/health 端点的详细信息。

当我在应用程序运行时将 Consul 中的此属性更改为值 'NEVER' 时,会注意到更改并刷新此属性,我可以在两个地方检查:

1) 日志

2) 端点/actuator/configprops

问题是/actuator/health端点仍在提供健康详细信息,而忽略了在运行时对属性“management.endpoint.health.show-details”所做的更改。

是否应该应用任何其他配置?

0 投票
1 回答
853 浏览

spring-boot - 服务启动后向领事注册spring boot应用程序

我有一个遗留代码,其中在服务启动后向领事注册了一个 Spring Boot 应用程序。应用程序自动装配 ConsulLifecycle spring bean,通过它使用其 inbuild 方法 ConsulLifecycle.start() 和 ConsulLifecycle.stop() 向 consul 注册/取消注册服务。

现在我们已经将 spring 升级到 5.1.5,spring-cloud-starter-consul-discovery 到 2.1.1 和 spring-cloud-dependencies 到 Greenwich.RELEASE,其中 ConsulLifecycle bean 被删除。因此,为了实现相同的行为,我正在尝试自动装配 ConsulAutoServiceRegistration spring bean,并使用它的 start 和 stop 方法向 consul 注册和取消注册服务。

现在的问题是,当我尝试启动 spring boot 应用程序时,我在应用程序启动时遇到了一些错误(在帖子的最后一节中提到了错误)。

注意:我有定义此属性的 application.properties 文件

我在应用程序启动时遇到的错误,即在向领事注册服务时

0 投票
2 回答
1133 浏览

java - 无法从领事注销服务(Spring Boot 应用程序)

无法从 Consul 注销服务。基本上领事官方页面说它会自动注销服务,但在我的情况下它不会像说的那样工作。

https://www.consul.io/docs/agent/basics.html

嗨提到领事生命周期,它说

为了防止死节点(处于失败或离开状态的节点)的积累,Consul 会自动从目录中删除死节点。这个过程称为收割。目前这是在可配置的 72 小时间隔上完成的(不建议更改收割间隔,因为它在中断情况下会产生后果)。Reaping 类似于离开,导致所有关联的服务被注销。

这是我的 bootstrap.yml 文件

在 Consul UI 中使用 purge 命令删除服务后,仍然显示在 Consul UI 上。所以意味着它没有被领事注销