标签: consul

领事:有多少服务代理商

我正在玩Docker和Consul,我有一些关于代理服务映射的问题,特别是在docker环境中.假设我有一个服务名称"myGreatService"是简单的web nodejs helloworld应用程序,封装了名为"myGreatServiceImage"的docker镜像.从Consul文档中我了解到,当您注册服务(通过HTTP或服务定义文件)时,服务即将"连线"到代理/ consul节点(可以通过/ v1/catalog/service /检索有线节点) .因此,如果consul节点关闭(或节点运行状况检查确定它已关闭),那么"连接​​"到该消耗节点的所有服务将自动标记为关闭.我对吗 ?

如果我通过docker在一台主机上多次运行我的GreatServiceImage映像(由于"myGreatService"服务的多个实例),我应该运行多少个代理?每个主机管理该主机上的所有容器(所有服务实例)?或者可能是每个容器(服务实例)的单独代理?

consul

2
推荐指数
1
解决办法
1245
查看次数

Docker容器无法通过覆盖网络连接

我有多个运行Docker的主机,我使用Consul作为键值存储.我能够创建覆盖网络,容器可以看到彼此的主机名和IP,/ etc/hosts在创建/销毁容器时很好地更新.但是,不同主机上的容器实际上不能相互连接(同一主机上的容器可以).

我一直在调查日志,Docker守护程序日志包含以下内容:

[INFO] serf: EventMemberJoin: vagrant-ubuntu-trusty-64 192.168.57.103

[ERR] memberlist: Conflicting address for vagrant-ubuntu-trusty-64. Mine: 192.168.57.103:7946 Theirs: 192.168.57.102:7946

[ERR] serf: Node name conflicts with another node at 192.168.57.102:7946. Names must be unique! (Resolution enabled: true)
Run Code Online (Sandbox Code Playgroud)

Docker守护进程应该以某种方式识别自己吗?看起来Serf很困惑,因为每个守护进程只使用主机名作为标识符.

overlay vagrant docker consul

2
推荐指数
1
解决办法
295
查看次数

Spring Consul - 禁用单元测试

更新

我下面列出的类 ( ServiceDiscoveryConfiguration) 从未被使用过。即使我删除了@EnableDiscoveryClient以试图完全避免设置,它仍然会尝试连接到 Consul。

唯一对我有用的是完全删除 Consul Maven 依赖:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-consul-all</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果不通过配置文件和注释设置,我可以做些什么来阻止 Consul 运行单元测试?

原来的

我有一个使用 Spring Consul 的应用程序。我设置了一个类来启用这样的发现:

@Profile ("!" + Profiles.UNIT_TEST)
@Configuration
@EnableDiscoveryClient
public class ServiceDiscoveryConfiguration {
}
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,这应该是禁用 Consul 部分。基本测试类(它abstract在我的所有单元测试之间共享)使用以下注释设置。这就是我认为问题所在。

@SpringBootTest (classes = Service.class)
@WebAppConfiguration
@TestExecutionListeners (...)
@DirtiesContext
@ActiveProfiles (Profiles.UNIT_TEST)
@Test (...)
public abstract class AbstractBootTest extends AbstractTestNGSpringContextTests {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

当我执行我的测试时,我得到:

引起:com.ecwid.consul.transport.TransportException:java.net.ConnectException:连接被拒绝

这让我相信配置文件激活不起作用,或者我!@Profile规范上使用运算符的语法没有做我认为应该做的事情。根执行类本身有基本的注释,包括一个@ComponentScan注释,我知道它有适当的包被扫描。 …

spring service-discovery spring-boot consul

2
推荐指数
1
解决办法
3027
查看次数

领事注销'失败'服务

我有领事在Mesos上运行的Consul v0.5.2版本和服务上运行.服务从1台服务器转移到另一台服务器.

是否有办法取消注册处于"失败"状态的领事服务?我可以使用此卷曲获取处于失败状态的服务列表

curl http://localhost:8500/v1/health/state/critical
Run Code Online (Sandbox Code Playgroud)

我们看到的问题是在consul UI中的一段时间内我们有过时的数据并使整个UI无法使用

mesos mesosphere consul microservices consul-template

2
推荐指数
1
解决办法
1756
查看次数

Prometheus:如何根据 Consul 标签删除目标

我的 Prometheus 服务器从 Consul 获取它的目标列表(或“服务”,在 Consul 的行话中)。我只想监控这些目标的一个子集。这应该可以通过 Prometheus 的正则表达式机制实现,但正确的配置让我望而却步。这是怎么做的?

consul prometheus

2
推荐指数
1
解决办法
4397
查看次数

Spring Cloud Consul健康检查配置

我正在将 Spring Boot 应用程序作为 Docker 容器运行。到目前为止,这工作得很好,但是当我尝试使用 Spring Cloud Consul 时,它也让我有些头痛。它可以很好地从 Consul KVS 读取配置,但健康检查似乎正在运行。

默认运行状况检查使用 docker 容器的主机名,例如http://users-microservice/health。显然,从领事访问时这不会解决。

没问题,文档提到您可以在 bootstrap.yml 文件中使用healthCheckPath来配置它。这就是我现在所拥有的:

spring:
    application:
        name: users-microservice
    cloud:
        consul:
        host: myserver.com
        port: 8500
        config:
            prefix: API-CONFIG
            profileSeparator: '__'
        discovery:
            tags: users-microservice
            healthCheckPath: http://myserver.com:${server.port}/status
            healthCheckInterval: 30s
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个变量的使用方式似乎与我预期的非常不同。这就是领事试图达到的目标:

Get http://users:18090http//myserver.com:18090/status: dial tcp: unknown port tcp/18090http

我怎样才能解决这个问题?我应该设置一些未记录的配置参数吗?

spring-boot consul spring-cloud

2
推荐指数
1
解决办法
6424
查看次数

Consul键值对用于Spring-boot中的配置

我试图将我的注册服务器从"Eureka"更改为"Consul",并将Consul更改为我的配置服务器.使用Consul进行服务发现是成功的.但我无法理解如何获取键/值对选项来引导我的应用程序.我有可能做到这一点吗?

我使用具有以下依赖性的弹簧靴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这是我的春季启动应用程序ConsuleDemoApplication.class

@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class ConsuleDemoApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello world";
    }

    public static void main(String[] args) {
        SpringApplication.run(ConsuleDemoApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的bootstrap.yml是

spring:
  cloud:
    consul:
      discovery:
        healthCheckInterval: 15s
        instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}

  application:
    name: consul_demo
Run Code Online (Sandbox Code Playgroud)

configuration spring-boot consul microservices spring-cloud-consul

2
推荐指数
1
解决办法
3339
查看次数

如何删除领事服务

我在我希望删除的领事集群中创建了一堆测试服务,我尝试使用 /v1/agent/service/deregister/{service id} - 并确保它在每个节点上运行良好 - 我可以看到这一点在每个节点上运行

[INFO] 代理:注销服务“ci”

还有另一种方法可以手动清除这些旧服务吗?

谢谢,

consul

2
推荐指数
2
解决办法
2万
查看次数

领事模板 if else 条件

我有以下领事模板。

{{ range service "mysql_slave.mysql" "any" }}
host_name                      {{.Node}}
command                        check_nrpe!check_procs_1
{{end}}
Run Code Online (Sandbox Code Playgroud)

我想添加如果我的主机名匹配“database-1”然后命令“check_procs_1”和其他命令“check_procs_2”

输出

host_name                      node_server
command                        check_nrpe!check_procs_2

host_name                      database-1
command                        check_nrpe!check_procs_1

host_name                      webserver
command                        check_nrpe!check_procs_2
Run Code Online (Sandbox Code Playgroud)

if-statement puppet consul consul-template

2
推荐指数
1
解决办法
6287
查看次数

从 Json 文件 Consul 导入键值对

我是领事的新人。

我正在尝试从 Json 文件导入键/值对。(在Windows环境下工作)

但是当我尝试使用以下命令导入时,遇到错误。

命令:

consul.exe kv import @keyvalue.json
Run Code Online (Sandbox Code Playgroud)

内容:

{"MYVAR": "123","AnotherKey":"SomeValueHere"}
Run Code Online (Sandbox Code Playgroud)

错误:

无法解组数据:json:无法将对象解组为 []*command.kvExportEntry 类型的 Go 值

任何人都可以提出一些想法来解决这个错误。

谢谢。

json consul consul-kv

2
推荐指数
1
解决办法
8386
查看次数