标签: consul

在标签上过滤返回的 consul.io 服务

我想知道是否有办法过滤服务领事使用标签返回我。

终点:

/v1/catalog/services
Run Code Online (Sandbox Code Playgroud)

将服务映射返回到标签列表,并要求我在返回后解析服务。

我想知道是否有某种方法可以将我想要的标签(或多个标签)作为查询参数传递给端点并返回已经过滤的地图。

consul

5
推荐指数
1
解决办法
1664
查看次数

使用 Spring Boot 和 Consul 处理 Leader 实例

我目前正在开发一个使用 Consul 作为服务发现的 Spring Boot 应用程序。
我们的 Web API 在不同的 Docker 容器上有多个实例,并且在 Consul 中注册成功。
我们现在的主要问题是在我们的实例中选举一个领导者,如果前任领导者下台,则自动重新选举。
我读过 Consul 提供了一个键值存储并锁定了它们,我认为我们可以使用事先创建的键,然后读取它的第一个实例将具有“锁定”。如果此实例崩溃,另一个实例将获得锁并被检测为新的领导者。
我已经阅读了几个示例,但是我只找到了命令行示例,而不是 Java/Spring 启动实现。

谁能告诉我这个想法是否可以完成这项工作,谁能提供一个 Spring Boot 示例或给我一个教程链接?
我是 Spring Boot 和 Consul 的初学者。

提前致谢!

java master-slave key-value-store spring-boot consul

5
推荐指数
1
解决办法
986
查看次数

在 Nodejs 上使用 DNS 发现 Consul 服务

TL; 博士

大家好,我正在尝试通过Consul DNS 接口从用 Express 编写的 nodejs 前端调用 nodejs 后端微服务,但出现错误。

我正在使用nodejs dns api为唯一节点应用程序设置 dns,以便对本地 Consul DNS 接口进行后续 dns.resolve() 调用。

目标

我希望能够向我的后端服务发出 http 请求,而无需在我的客户端代码中连接其 IP 和端口。我也不想编写自定义代码来查询 Consul HTTP API,以便在我需要调用它时为我的服务获取 ip:port 对。

问题

问题是,当我使用axios(类似于request)对后端服务进行 HTTP 调用时,我总是收到错误消息,因为它无法解析地址。Axios 似乎没有使用我之前设置的 dns:

dns.setServers(['127.0.0.1:8600']);
Run Code Online (Sandbox Code Playgroud)

更新_1

使用 consul 的 -recursor 命令行选项将虚拟机 (/etc/resolv.conf) 的 dns 设置为 localhost e,使用默认 dns 一切正常!我仍然想了解我在仅在我的 nodejs 应用程序上设置 dns 时做错了什么。

设置

  • 1 个带有 nodejs 进程的 FE 节点,运行带有 Expressjs 的简单网络服务器。在 app.get('/') 路由中,它通过 consul 和 axios(如请求)对名为 be01 的后端服务进行 …

dns service-discovery node.js consul

5
推荐指数
1
解决办法
4420
查看次数

领事 DNSMASQ 问题

我正在 RedHat Linux 上使用 Consul 测试 DNS。我有一个问题,当我尝试“挖掘 {service name}”时它不起作用。

我有一个本地 Consul 代理在 8600 上运行和侦听 DNS。我还配置了 DNSMASQ 以将 .consul 域 dns 查询转发到本地领事代理。

以下工作没有任何问题

挖@xxxx -p 8600 consul.service.consul

挖@xxxx -p 53 consul.service.consul

但是当我做“挖掘 consul.service.consul”时它不起作用。但是这个确切的查询适用于我的 MAC 开发机器。

非常感谢任何指导。

这是我的 dnsmasq conf 位于 /etc/dnsmasq.d/10-consul

服务器=/领事/xxxx#8600

dnsmasq consul

5
推荐指数
1
解决办法
790
查看次数

如何使用 consul 通过 HTTP API 递归获取原始值

参考以下关于 HTTP API 的 consul 文档

https://www.consul.io/api/kv.html

recurse (bool: false) - 指定是否应该递归查找并将键视为前缀而不是文字匹配。这被指定为 URL 的一部分作为查询参数。

raw (bool: false) - 指定响应只是键的原始值,没有任何编码或元数据。这被指定为 URL 的一部分作为查询参数。

我期待为以下请求返回的响应中的解码值 http://localhost:8500/v1/kv/?recurse=true&raw=true

recurse选项正在工作,因为我可以看到响应 JSON 中存在的所有键/值对,但值仍被编码(base64)。

raw查询参数不起作用还是我做错了什么?

consul

5
推荐指数
1
解决办法
4748
查看次数

带有微服务的 Spring REST 应用程序

我得到了这个 Spring Boot 应用程序,它现在无法在开发模式下独立运行。它被配置为使用 Consul 作为服务发现。它在 Docker 容器和 Consul 容器(命名为“consul-master”)中工作得很好,但是当我从 IDE 运行时它不会启动:

2018-06-03 21:57:32.844  INFO 88915 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1018bde2: startup date [Sun Jun 03 21:57:32 BRT 2018]; root of context hierarchy
2018-06-03 21:57:33.400  INFO 88915 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2018-06-03 21:57:33.611  INFO 88915 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.retry.annotation.RetryConfiguration' of type [org.springframework.retry.annotation.RetryConfiguration$$EnhancerBySpringCGLIB$$7df8674f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot consul netflix-feign

5
推荐指数
1
解决办法
851
查看次数

获取 consul Docker 映像以与 Vault 数据保持一致

我使用 Vault Docker 镜像和 Consul Docker 镜像作为它的存储。我的问题是,如果假设 Consul 容器会崩溃,我将尝试运行一个新容器,我需要重新初始化保管库,Consul 保存的数据会丢失。

任何人都知道我需要做什么才能使数据持久化?

运行 Consul 镜像的命令:

docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -it consul
Run Code Online (Sandbox Code Playgroud)

运行 Vault 映像的命令:

docker run -d -p 8200:8200 -v /root/vault:/vault --cap-add=IPC_LOCK vault server
Run Code Online (Sandbox Code Playgroud)

以及保管库配置文件内容:

{
            "listener": [{
                    "tcp": {
                            "address": "0.0.0.0:8200",
                            "tls_disable" : 1
                    }
            }],

            "storage" :{
                    "consul" : {
              "address" :"172.17.0.4:8500"
              "path"    :"vault/"

                    }
            }
            "max_lease_ttl": "10h",
            "default_lease_ttl": "10h",
            "ui": true,
}
Run Code Online (Sandbox Code Playgroud)

docker consul hashicorp-vault

5
推荐指数
1
解决办法
2778
查看次数

无法使用领事模板读取服务元

我有一个在 Consul 注册的测试服务,其服务定义如下:

{
  "name": "web",
  "tags": ["web1"],
  "address": "example.com",
  "meta": {
    "meta": "cluster",
    "acl": "host_test",
    "cluster": "test_cluster"
  },
  "port": 8000
}
Run Code Online (Sandbox Code Playgroud)

我想使用 consul-template 将该信息加载到 HAProxy 配置中。我可以按照文档中的说明获取地址和端口:

{{ range service "web" }}{{if in .Tags "web1"}}
    server {{.Node}} {{ .Address }}:{{.Port}} cookie A check
    {{ end }}{{end}}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法获得元信息。我想我可以在服务范围内使用这样的东西来访问它:

 {{range .Meta}}
  {{.}}{{end}}
Run Code Online (Sandbox Code Playgroud)

知道如何从元中获取 acl 或集群吗?

consul consul-template

5
推荐指数
1
解决办法
1123
查看次数

consul使用HTTP api批处理KV对HTTP post(通过HTTP API导入巨大的json)

我在 json 中有应用程序配置,每个应用程序最多有 80 个键/值对,这些键/值对将存储在 Consul KV Store 中。一般来说,它们是java键值属性,我有一个简单的shell脚本,它对值进行编码并将其转换为与consul import命令兼容的导入。我正在尝试为船上的新应用程序(开始使用 consul 进行 KV 存储的应用程序)自动执行 consul KV 导入。到目前为止,我们正在手动运行consul kv import @app_config.json,但是,我想调用 HTTP api,而不是通过 consul KV import 进行导入。请问有什么建议吗?

json 格式的应用程序配置示例。

[
        {
                "key": "asia",
                "flags": 0,
                "value": "NDQzNg=="
        },
        {
                "key": "asia/india",
                "flags": 0,
                "value": "MTMyNA=="
        },
        {
                "key": "europe",
                "flags": 0,
                "value": "NzQzLjE="
        },
        {
                "key": "europe/france",
                "flags": 0,
                "value": "NjYuOQ=="
        },
        {
                "key": "europe/germany",
                "flags": 0,
                "value": "ODIuNjc="
        }
]
Run Code Online (Sandbox Code Playgroud)

uri key-value-store consul consul-template consul-kv

5
推荐指数
1
解决办法
806
查看次数

游牧和端口映射

Nomad 有三种不同的方式来映射端口:

  1. 组级别下的网络节
  2. 配置下的网络节 -> 资源级别
  3. 配置级别下的 port_map 节

有什么区别,我什么时候应该使用哪个?

networking consul nomad

5
推荐指数
1
解决办法
2975
查看次数