问题标签 [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 回答
611 浏览

java - 如何在没有 Consul 的情况下配置 Feign 客户端

有人可以帮助找出为什么我不能FeignClient使用application.properties而不运行领事进行本地设置吗?

客户:

应用程序属性:

0 投票
1 回答
826 浏览

java - 使用 Spring 云领事配置可以共享配置吗?

我们在 Java 8 上使用 Spring Cloud Consul Config 1.3-RELEASE 来实现简单的应用程序 helloworldclient,按预期工作bootstrap.xml...

使用 profile 运行应用程序dev,这是从/env...加载的配置

一切都很好,但我们不确定为什么剩余的 consul 配置部分甚至存在,以及它们的用途:

这很有趣,因为我们需要共享配置,以便多个应用程序可以从 consul 加载通用的、特定于环境的配置,如果可能的话;确定这是否是一个可行的解决方案的一些问题:

问题

  • 除了应用程序配置路径之外,SCC 是否还尝试从这些位置读取?
  • 默认文件夹是否config/application可配置,以便在启动时应用程序从中读取config/mysharedconfig
  • 它是否适合/config/application/dev用作共享配置位置,多个应用程序可以加载通用的、特定于环境的配置?
0 投票
0 回答
746 浏览

java - 使用带有 Spring Cloud Consul Discovery 和 FeignClient 的“区域”标签过滤服务

我们在 AWS 中有一个 Consul 集群,服务于所有操作环境(dev、qa、uat、prod)。当服务向 Consul 注册时,注册名称默认使用 spring boot 应用程序名称。因此,部署在 dev、qa、prod 中的相同服务无法在单个可操作的 Consul 集群中进行区分。bootstrap.xml所以我们配置SCCinstance-zone如下:

现在,在 Consul 中列出目录服务时,我们会看到以下内容;服务似乎被正确标记,这很好。

问题

我们在客户端使用 Feign 客户端(duh):

..但是发现服务时会出现问题;如何确保服务被过滤,以保证zone部署到dev尝试发现的服务helloworldservice只找到的dev实例helloworldservice

尝试server-list-query-tags在客户端服务中使用,不确定这是否正确:

还注意到 FeignClient 支持serviceId,我可以用它来过滤发现的标签吗?

0 投票
2 回答
679 浏览

spring-boot - 使用 SpringBoot 配置 Spring Cloud Consul

我正在使用 SpringBoot 配置 Consul,并在此处找到了文档。甚至浏览了其他资源,也没有找到更多额外的配置或场景。

因此,我很好奇springboot app与consul集成时是否只有这些配置可用。我想深入了解,谁能告诉我其他可用的房产吗?

0 投票
1 回答
811 浏览

microservices - 使用 Consul 在节点故障时重新启动服务器

微服务新手在这里。

我一直在研究使用弹簧执行器开发微服务,同时让 Consul 用于服务发现和故障恢复。我已经按照 Consul 文档中的说明配置了一个集群。

现在我要做的是配置一个 Consul Watch 以在我的任何服务关闭时触发并执行一个 shell 脚本来重新启动我的服务。以下是我的配置文件。

任何帮助/提示将不胜感激。

问候, 克里斯汉

0 投票
0 回答
783 浏览

java - Spring Cloud Consul auto register of HTTP check not working

According to section 3.2 of the Spring Cloud Consul manual:

An HTTP Check is created by default that Consul hits the /health endpoint every 10 seconds.

However, the log of my application reveals that this health check is missing. The property http should have a valid url and interval should have 10s, both are null:

Registering service with consul: NewService{id='test-service-local-8081', name='test-service', tags=[], address='localhost', port=8081, enableTagOverride=null, check=Check{script='null', interval='null', ttl='30s', http='null', tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null'}, checks=null}

Also, when I make my health endpoint return "status: down", consul still reports that my service is fine.

How do I add the HTTP check to /health on registration of the Spring Boot service with Consul?

I am using the following properties:

Edit: It turns out the heartbeat.enabled=true property removes the default HTTP check. When removing this property, we can see the HTTP check in the log:

Registering service with consul: NewService{id='test-service-local-8081', name='test-service', tags=[], address='erwins-mbp.home', port=8081, enableTagOverride=null, check=Check{script='null', interval='1s', ttl='null', http='http://mbp.home:8081/manage/health', tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null'}, checks=null}

So, now, the question is, with heartbeat enabled, how to I register a HTTP check from Spring Boot to Consul?

0 投票
0 回答
107 浏览

spring-boot - 领事观察者的状态是什么

我想通过 consul 查看我的 sprintboot 应用程序的运行状况。我提到了这个。我的领事配置文件的监视部分:

我有几个问题:
1.“关键”状态有效,但无法区分 Springboot 执行器的 /health 响应是“关闭”还是“停止服务”。当健康状态类似于“停止服务”而不是“关键”时,如何触发此侦听器。(我观察到当apringboot应用程序的健康响应关闭或停止服务或出现错误时,领事只说“关键”)
2. 正如我所观察到的,监听器只有两种状态:关键和通过?这是对的吗 ?如果不是,其他是什么?这些状态如何与 SpringBoot 执行器的 /health 状态(UP、DOWN、OUT OF SERVICE 等)匹配?

0 投票
1 回答
1684 浏览

docker - Docker-Compose 使用 Consul 动态分配端口

我正在运行许多使用 Consul 进行服务发现的 Spring Boot 应用程序(使用 Actuator)。如果我使用 docker-compose 启动应用程序,为每个容器指定主机和容器端口,那么它们会在 Consul 中正确注册并很快被标记为健康。

“consul”和“docker-host”的主机地址值在启动时作为 docker-compose yml 文件中的环境变量传入,简单来说,与 docker 主机的 IP 地址相关(我在同一台服务器)。

另请注意使用:

变量告诉 Consul 如何连接回容器以检查其健康状况(在这方面它只是使用 Actuator)。这需要是外部可访问的地址和端口,以便 Consul 可以检查服务。

当我在 docker-compose 文件中为容器指定主机和容器端口号时,这一切都很好。

我已经到了想要扩展一些容器的地步,但是当我尝试执行

命令它告诉我这是不可能的,因为已指定主机端口。如果我将 docker-compose yml 文件更改为仅定义容器端口,并让主机端口动态分配,那么这一切都会出错,因为 Consul(在外部运行)获得了错误的 URL 来连接并将容器标记为不良。

我的问题是如何告诉 Consul 动态和“外部”公开的端口号,以便在容器内运行的应用程序中使用?

有没有办法在创建时获取端口号并将其传递到容器中?

如果可以的话,我想尝试使用 Compose 来破解它(而不是使用 Swarm,或者通过在同一组容器中的另一个容器中运行 Consul)。

0 投票
1 回答
363 浏览

spring-cloud-consul - 如何在 spring-cloud-consul 中观看服务?

Consul 有监视服务更新的手表。spring-cloud-consul 是否支持此功能?我在文档中找不到它。

0 投票
1 回答
272 浏览

spring-boot - Consul 抛出 Spring Boot Health Url 错误(401)

我已经用我的 spring boot 应用程序配置了 consul,我有基本的 Auth来访问 url。

如果我点击 localhost:8081/health 它要求进行基本身份验证并且状态为 UP

但在领事用户界面中它会引发错误

我如何在领事中提供此身份验证。