我想使用 Vagrant 在我的本地机器(Mac OS X)上设置一个带有 UI 的 Consul 集群。到目前为止,我只是按照官方领事文档的入门说明进行操作:https : //www.consul.io/intro/getting-started/join.html
为了能够从主机访问 UI,我只是将这一行添加到提供的 Vagrantfile ( https://github.com/hashicorp/consul/blob/master/demo/vagrant-cluster/Vagrantfile )
n1.vm.network "forwarded_port", guest: 8500, host: 8500
Run Code Online (Sandbox Code Playgroud)
要在来宾机器上使用 UI 启动 Consul,我 ssh 进入机器,然后简单地将 -ui 标志添加到提供的命令中:
consul agent -server -bootstrap-expect=1 \
-data-dir=/tmp/consul -node=agent-one -bind=172.20.20.10 \
-enable-script-checks=true -config-dir=/etc/consul.d -ui
Run Code Online (Sandbox Code Playgroud)
Consul 启动时没有问题,从我可以执行的来宾机器开始:
curl -v 'http://localhost:8500/ui/'
Run Code Online (Sandbox Code Playgroud)
并返回预期的 HTML 页面。
但是,尝试http://localhost:8500/ui/在浏览器中访问或通过主机上的 curl访问不起作用。在主机上使用 curl 会导致:
* Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 8500 failed: Connection refused
* Trying 127.0.0.1...
* …Run Code Online (Sandbox Code Playgroud) 需要帮助我有这个
service {
name = "nginx"
tags = [ "nginx", "web", "urlprefix-/nginx" ]
port = "http"
check {
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
Run Code Online (Sandbox Code Playgroud)
如果返回 200 响应(如 localhost:8080/test/index.html),我如何为特定 URI 添加运行状况
我在服务中访问 ApplicationContext 的每一次尝试都失败了,ApplicationContext 被返回为 null。在 Spring 中,我能够使用 ApplicationContextAware,根据(https://micronaut-projects.github.io/micronaut-spring/latest/guide/index.html)应该在 micronaut 中用 @Autowired 替换。我已经尝试过
@Autowired ApplicationContext context
Run Code Online (Sandbox Code Playgroud)
然而没有运气。它始终为空。任何帮助,将不胜感激!
你好,我有一个问题。
我使用 docker compose ver3 和 consul 镜像作为容器,在我的主机上我有一个简单的服务,应该响应 http 请求,并且它设置在端口 40001 上。所以现在我想让 docker 向该服务发送请求作为运行状况检查通过 http(换句话说,将请求从 docker 容器发送到主机上运行的服务)。
我的 consul docker compose 很简单:
version: '3'
services:
consul:
image: consul:latest
command: consul agent -dev -log-level=warning -ui -client=0.0.0.0
hostname: consul
container_name: consul
ports:
- 8500:8500
- 8600:8600/udp
- 40000-41000:40000-41000
Run Code Online (Sandbox Code Playgroud)
因此,我启动这个容器,主机上的服务在其中注册,主机上的服务的 http 运行状况检查地址为“ http://localhost:40005//Health ”。请求的间隔约为 15 秒,因此我预计此类请求到达服务并且服务将响应 200。
我还可以访问容器中领事的 UI。
主机上的服务不会注册任何传入请求,但有趣的是,当我运行独立领事时,它工作正常(也就是说,我正在进行健康检查)。
所以我的问题是,这是否可能是容器无法与主机上的服务通信的问题。
有没有办法使用 consul 模板来过滤不匹配的内容?
就像是
{{services NOT "@east-aws"}}
...
Run Code Online (Sandbox Code Playgroud)
我没有在存储库自述文件中找到它
我们正在使用 spring-cloud 来读取我们应用程序的配置。我们在 application.yaml 中有类似的结构
spring:
cloud:
consul:
host: consul_host
port: 8500
Run Code Online (Sandbox Code Playgroud)
我们想为 consul 启用 ACL。所以我们需要通过consul token来通过 spring 读取配置。如何在 application.yaml 中指定 consul 令牌
我想将 consul 用于 2 节点集群。缺点是两个节点没有容错能力:
https://www.consul.io/docs/internals/consensus.html
Consul 有没有办法只用两个节点进行一致的领导人选举?Consul Raft 共识算法可以改变吗?
非常感谢。