我使用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代理吗?
谢谢!