从Vagrant框访问Consul代理的工作方式是什么?

时间:2017-06-09 12:12:10

标签: vagrant virtualbox consul

我使用Vagrant配置在VirtualBox 5中运行Win2012R2虚拟机。

在VM中,我使用以下命令行运行一个Consul 0.8.0代理(我目前对群集不感兴趣):

consul.exe agent -server -dev -client=0.0.0.0 -bind=0.0.0.0

这将使用以下属性启动Consul:

Server: true (bootstrap: false)
Client Addr: 0.0.0.0 (HTTP: 8500, HTTPS: -1, DNS: 8600)
Cluster Addr: 10.0.2.15 (LAN: 8301, WAN: 8302)
Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
Atlas: <disabled>

所以现在我需要从主机(Linux)访问这个Consul代理,特别是用于放置和获取KV数据的REST api。

为了做到这一点,在vagrantfile中我配置了以下端口转发:

config.vm.network "forwarded_port", guest: 8500, host: 8900
config.vm.network "forwarded_port", guest: 80, host: 5000

端口80用于公开我们在VM中一起部署的WebApplication API,顺便说一下,它应该使用Consul作为配置引擎。

从地址http://localhost:5000访问来自linux主机的应用程序可以正常工作。但是,如果我尝试在地址http://localhost:8900/v1/kv/mykey上阅读任何领事密钥,例如使用curl,会话将被无限期挂起。

我想值得一提的是,可以从VM guest虚拟机中访问webapplication API和Consul API,而不会出现任何问题。

我怀疑Consul的问题可能在于需要将更多端口从Guest暴露/转发到主机,例如端口8600?然而,我尝试了一些没有成功的实验,此刻我被这个阻止了。

或许原因是consul.exe命令行启动,我必须添加更多属性?

我错过了什么?知道如何从外部世界访问Consul代理吗?

谢谢!

0 个答案:

没有答案