运行Vagrant领事:端口转发从客人到主机不能在Mac OS X上工作
问题描述:
我想使用Vagrant在我的本地计算机(Mac OS X)上设置带有UI的Consul群集。 到目前为止,我只是跟着官方领事文档的入门指导:https://www.consul.io/intro/getting-started/join.html运行Vagrant领事:端口转发从客人到主机不能在Mac OS X上工作
为了能够从主机访问UI,我只是简单地添加这一行所提供的Vagrantfile(https://github.com/hashicorp/consul/blob/master/demo/vagrant-cluster/Vagrantfile)
n1.vm.network "forwarded_port", guest: 8500, host: 8500
要启动领事与客户机上的UI我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
领事启动没有问题并从客户机我可以执行:
curl -v 'http://localhost:8500/ui/'
并返回预期的HTML页面。
试图通过浏览器访问http://localhost:8500/ui/
或通过主机上的curl不起作用。在主机上使用卷曲结果如下:
* Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 8500 failed: Connection refused
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8500 (#0)
> GET /ui/ HTTP/1.1
> Host: localhost:8500
> User-Agent: curl/7.54.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
任何我缺少正确设置端口转发? 运行vagrant up
后的日志看对我好:
n1: Forwarding ports...
n1: 8500 (guest) => 8500 (host) (adapter 1)
答
你有2种选择:
- 使用静态IP(无论是public network或private network),这样你会绑定你领事代理的静态IP(比如
172.20.20.10
),你将能够通过http://172.20.20.10:8500/ui/
从Web浏览器访问
注:在这种情况下,你不需要公顷已经转发的端口在Vagrantfile
- 每consul doc on bind option
应当绑定到内部群集通信的地址。这是集群中所有其他节点都应该可以访问的IP地址。默认情况下,这是
"0.0.0.0"
,这意味着领事会绑定到所有地址在本地机器上
这样你就可以从你的主机上的虚拟机达到领事运行
NB:我的喜好去进行选择#1
谢谢,你是对的。我已经在专用网络中指定了IP,所以不需要端口转发。 我缺少的还是指定要绑定的客户端IP地址。 (https://www.consul.io/docs/agent/options.html#_client)。 因此,最后使用这个命令,UI可以从主机上获得,地址为 'http://172.20.20.10:8500/ui /'。 因此,该命令需要如下所示: 'consul agent -server -bootstrap-expect = 1 -data-dir =/tmp/consul -node = agent-one -bind = 172.20.20.10 -client = 172.20.20.10 -enable-script-checks = true -config-dir =/etc/consul.d -ui' – user2350644