运行Vagrant领事:端口转发从客人到主机不能在Mac OS X上工作

运行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种选择:

  1. 使用静态IP(无论是public networkprivate network),这样你会绑定你领事代理的静态IP(比如172.20.20.10),你将能够通过http://172.20.20.10:8500/ui/从Web浏览器访问

注:在这种情况下,你不需要公顷已经转发的端口在Vagrantfile

  1. consul doc on bind option
  2. 应当绑定到内部群集通信的地址。这是集群中所有其他节点都应该可以访问的IP地址。默认情况下,这是"0.0.0.0",这意味着领事会绑定到所有地址在本地机器上

    这样你就可以从你的主机上的虚拟机达到领事运行

    NB:我的喜好去进行选择#1

开始=>
+0

谢谢,你是对的。我已经在专用网络中指定了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